STM32配置成从机全双工,采用DMA方式,出现一个问题:当我把DMA方式配置成DMA_CIRCULAR后,数据在传输过程中就会CRC校验失败。 在完成上述相关配置后,在SPI初始化函数最后加上HAL_SPI_TransmitReceive_DMA(&hspi1,SpiSend,SpiRecv,6);开始传输。 数据传输具体情况是这样的,由主机SPI周期读取后我向主机传输一个实时变化的数据,这个数据在另一个定时器中处理并刷新得到。然后我在HAL_SPI_TxRxCpltCallback函数中把该数据传到SPI的发送DMA地址变量SpiSend,如下图所示: 另外附加一个crc校验码,但是主机收到的数据总是不对,且crc校验出错。 我用DMA方式配置成DMA_NORMAL的时候就不会有这个问题,数据是对的,但这样周期性的使用HAL_SPI_TransmitReceive_DMA,比较占用系统的资源。会导致数据刷新的速度变慢。因此想用DMA_CIRCULAR一劳永逸,但是不管怎么处理都有数据报错问题。 第一次来论坛提问,可能有表述不清楚的地方,谢谢大家。 |
关于VN9D5D20F芯片的SPI 的信号脚SDO设计疑问
STM32H7打开DCache后,串口1DMA接受数据位空
与HAL_ADC_Start_DMA相关的一个十分怪异的问题
双重ADC的DMA请求
stm32g474 板卡偶发flash的某块代码区被擦除
L99H92 的驱动问题?
L9663驱动开发
STM32的H5/U5系列处理器内置运放支持负压运算吗?比如输入-1V,放大倍数为2时输出-2V
STM32G474 ADC多通道采集结果为同一通道结果?
PWM+DMA分多次发送缺点明显,会造成脉冲不连续,有解决的办法吗。