STM32F4的SPI用DMA发送数据不对

2019-07-21 00:57发布

没图说个啥,上图



上图为用示波器的单次触发模式捕捉的波形,DMA1的SPI2—TX通道,DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;改成normal模式,坛友说改成normal模式每发送一次数据要启动一次DMA,撇开这不谈。
单片机每复位一次就进行一次DMA配置,配置完后就会发送数据,数据是发送了,但是貌似只发了8个数据,0xAA,0x00,0x00,0xAA, 0x55,0x55,0x55,0x55,后面的24个数据没有发送了。DMA配置如下:


请问大神是怎么回事?

问题2是,我在程序的主函数的while循环里加入了这两句:

 DMA_Cmd(DMA_STREAM, ENABLE);
  SPI_I2S_DMACmd(SPI2, SPI_I2S_DMAReq_Tx, ENABLE);//重新启动DMA

也没看到波涛汹涌的数据发送出来,求赐教!










友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
10条回答
ricefat
1楼-- · 2019-07-21 05:45
 精彩回答 2  元偷偷看……
ricefat
2楼-- · 2019-07-21 08:38
回复【楼主位】yongyooh:
---------------------------------
另外还有一点要注意就是DMA的数据传输过程CPU是不插手的,也就是在数据传输过程中,继续执行DMA_Cmd(Enable)下一行程序。你用了while,相当于在DMA数据传输过程中就又开了一遍DMA,这样是错的。
yongyooh
3楼-- · 2019-07-21 09:50
 精彩回答 2  元偷偷看……
ricefat
4楼-- · 2019-07-21 15:43
回复【4楼】yongyooh:
---------------------------------
不知道是不是你数组按u32声明的原因 换成u8试试看
yongyooh
5楼-- · 2019-07-21 19:22
回复【5楼】ricefat:
---------------------------------
 碉堡了,就是那个问题,谢谢你!英雄,交个朋友呗!
yongyooh
6楼-- · 2019-07-21 22:35


一周热门 更多>