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? |