失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > STM32F413 SPI+DMA接收错误(SCK时钟接收后一直存在)【后参考网上论坛及F4官方例程

STM32F413 SPI+DMA接收错误(SCK时钟接收后一直存在)【后参考网上论坛及F4官方例程

时间:2024-03-11 20:40:12

相关推荐

STM32F413 SPI+DMA接收错误(SCK时钟接收后一直存在)【后参考网上论坛及F4官方例程

1:平台 STM32F413 + GD5F4(spi nand flash)(没开启DMA中断,读写操作NAND 都是单片机发起,所以知道什么时候读,什么时候写)

2: 问题(STM32 SPI+DMA机制发送,接收理解不到位)

能狗发送数据,但是接收数据不对且接收后,SCK时钟一直存在

在不使用DMA情况下,正常读写

使用DMA后,DMA接收数据后一直有时钟存在

当时思想是单写和单读数据;

Direction_CfgSpiHard(SPI_Direction_1Line_Tx); //设置SPI工作模式及方向

NAND0_CS_0();

// bsp_spiWrite1(PROGRAM_LOAD);

// bsp_spiWrite1( 0x0f & ((0&0xff00)>>8)); //读内存块+地址

// bsp_spiWrite1(0&0xff);

SPI_DMACmd(SPI2,SPI_DMAReq_Tx,ENABLE); //使能串口1的DMA发送

MYDMA_Enable(SPI2_TX_DMA_STREAM,20); //开始一次DMA传输!

while(DMA_GetFlagStatus(SPI2_TX_DMA_STREAM,DMA_FLAG_TCIF4)==RESET)

{

printf("\r\n write err! %d",DMA_GetCurrDataCounter(SPI2_TX_DMA_STREAM)); //得到当前还剩余多少个数据};

//等待 DMA1_Steam4 传输完成

NAND0_CS_1();

单独写

void read_test(void)

{

NAND0_CS_0();Direction_CfgSpiHard(SPI_Direction_2Lines_FullDuplex); //设置SPI工作模式及方向bsp_spiWrite1(READ_FROM_CACHE); //写入读命令bsp_spiWrite1(Byte_16 | ((0&0xff00)>>8)); //读内存块+地址bsp_spiWrite1(0&0xff);bsp_spiWrite1(0x00); //虚拟字节

//等待 DMA1_Steam4 传输完成

Direction_CfgSpiHard(SPI_Direction_2Lines_RxOnly); //设置SPI工作模式及方向 SPI_DMACmd(SPI2,SPI_DMAReq_Rx,ENABLE); //使能串口1的DMA发送MYDMA_Enable(SPI2_RX_DMA_STREAM,20);//开始一次DMA传输!while(DMA_GetFlagStatus(SPI2_RX_DMA_STREAM,DMA_FLAG_TCIF3)==RESET){printf("\r\n read err! %d",DMA_GetCurrDataCounter(SPI2_RX_DMA_STREAM)); //得到当前还剩余多少个数据};DMA_ClearFlag(SPI2_RX_DMA_STREAM,DMA_FLAG_TCIF3);//清除DMA1_Steam3传输完成标志DMA_Cmd(SPI2_RX_DMA_CHANNEL,DISABLE);SPI_DMACmd(SPI2,SPI_DMAReq_Rx,DISABLE); //使能串口1的DMA发送NAND0_CS_1();

}

单独读;数据不对,后用SPI读设备ID,发现ID号滞后一个字节(估计是DMA接收后,读ID时没有清除标准位的原因);

后在网上查找说DMA操作SPI时读写同时进行的

参考这位博主的这段话 及 参考了官方的例程

现在收发同时进行

数据OK,波形正常

思考:DMA为什么不能通过SPI的单线收发工作模式,来接收收数据(难道是发送时需要清楚接收标准,接收时需要清楚发送标准?)

STM32F413 SPI+DMA接收错误(SCK时钟接收后一直存在)【后参考网上论坛及F4官方例程:收发同时进行】

如果觉得《STM32F413 SPI+DMA接收错误(SCK时钟接收后一直存在)【后参考网上论坛及F4官方例程》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。