OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 3842|回复: 1

【求助】关于spi dma 读写的问题

[复制链接]

3

主题

10

帖子

0

精华

初级会员

Rank: 2

积分
77
金钱
77
注册时间
2018-3-29
在线时间
21 小时
发表于 2018-4-23 21:01:25 | 显示全部楼层 |阅读模式
5金钱

目前在使用spi dma读的过程中开头会丢失部分数据,用的F767的开发板,spi主模式以及双线模式,因为从机spi设备需要主机f767提供时钟,所以开启接收DMA的同时开启发送DMA,并且接收DMA的优先级高于发送DMA,DMA使用非循环模式,具体代码如下:

u8 Rx_Buffer[spi_buf_size]={ 0 };
      u8 Tx_Buffer[spi_buf_size]={ 0 };


int main(void)
   {                 
        HAL_Init();     

..............................  

.............................              

SPI_Init();                      //初始化SPI
      MYDMA_Config(DMA2_Stream5,7,(u32)&SPI5->DR,(u32)Rx_Buffer,spi_buf_size);  //设置接收dma
      MYDMA_Config(DMA2_Stream6,7,(u32)&SPI5->DR,(u32)Tx_Buffer,spi_buf_size); //设置读取dma
      SPI5_CS(1);      
//片选拉低
     delay_ms(185);     //同步信号
      SPI5_CS(0);   //片选拉低
       while((SPI5->SR&2)==0);
      SPI5->DR;
      SPI5->CR2|=3;
      MYDMA_Enable(DMA2_Stream5,spi_buf_size);
      MYDMA_Enable(DMA2_Stream6,spi_buf_size);  
      while((DMA2->HISR&(1<<11))==DMA_HISR_TCIF5 );
      DMA2->HIFCR|=1<<11;//清除DMA传输完成中断标志


}

CP8U$}_C`MLHH[N6%DXLXQH.png


从第一个红框可以看到,Rx_Buffer收到的数据开头都是0(原本应该是一个固定的head,如第二个红框所示),后面的数据则都是正常的,重新设置NDTR再读一次还是会出现开头数据丢失的问题。

求各位大佬略施援手。



正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

9

帖子

0

精华

新手上路

积分
41
金钱
41
注册时间
2017-7-27
在线时间
5 小时
发表于 2018-4-23 21:03:17 | 显示全部楼层
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-9 14:51

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表