打印
[STM32F0]

STM32F051 的 SPI /DMA 发送奇怪问题

[复制链接]
2064|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
acgean|  楼主 | 2014-3-2 14:23 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
STM32F051R8 官方 Discovery 板
主 SPI 通过 DMA 发送的奇怪问题。
SPI 寄存器写发送已正常。 现使用 DMA.
8位传输, 查 DMA 寄存器 CCR = 0x2193(DMA使能后),设置发送长度 32字节。
一启动 SPI的 TXDMAEN,立即看到 DMA 的 CNDTR 寄存器为0了,但是没有数据发送出来。
相反,发送缓冲的前两个字节被改写成了0!
反复试验无果, 郁闷下,有意将 DMA 的方向改为从外设读(DIR 位为0), DMA 寄存器 CCR = 0x2183(DMA使能后),咦, 竟然数据出来了。但是设置32字节只出来了4个Byte。
调试跟踪发现,启动 DMA 和  TXDMAEN, DMA 的 CNDTR 寄存器为0x1D(发送了3字节,FIFO 已满,DMA 暂停,正常)但下面一使能 SPI, 马上 DMA 的 CNDTR 寄存器为0,查波形只发出了4个字节。

难道是 F0 的 BUG?
沙发
mmuuss586| | 2014-3-2 14:34 | 只看该作者
没试验过,帮顶。

使用特权

评论回复
板凳
airwill| | 2014-3-2 15:54 | 只看该作者
本帖最后由 airwill 于 2014-3-2 15:55 编辑

调试得很深入了, 真是个奇怪的问题, 就是论事地讲. 假如真的是 bug.

"读内存, 则发送缓冲的前两个字节被改写成了0, 写内存, 则仅能发送部分", 大胆猜测, 会不会 F0 的外设里 DMA 的 CPAR 和 CMAR 的控制逻辑搞反了? 那么干脆把地址增加的设置, CCR 里的 PINC 和 MINC 也反过来设置试试.

仅代表猜测, 希望看到楼主进一步的测试结果

使用特权

评论回复
地板
baishuiyang| | 2014-3-2 22:03 | 只看该作者
对着pdf看看吧,也许例程有bug

使用特权

评论回复
5
acgean|  楼主 | 2014-3-3 19:26 | 只看该作者
哈哈, 非常符合 三楼的猜测!
希望版主向 ST 公司核实一下, 是不是 STM32F0 的bug, 或是固件库的 BUG!

使用特权

评论回复
6
青风002| | 2014-3-3 19:58 | 只看该作者
90%是固件库的BUG

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

33

主题

446

帖子

1

粉丝