没图说个啥,上图
上图为用示波器的单次触发模式捕捉的波形,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
也没看到波涛汹涌的数据发送出来,求赐教!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
---------------------------------
另外还有一点要注意就是DMA的数据传输过程CPU是不插手的,也就是在数据传输过程中,继续执行DMA_Cmd(Enable)下一行程序。你用了while,相当于在DMA数据传输过程中就又开了一遍DMA,这样是错的。
---------------------------------
不知道是不是你数组按u32声明的原因 换成u8试试看
---------------------------------
碉堡了,就是那个问题,谢谢你!英雄,交个朋友呗!
一周热门 更多>