- 博客(4)
- 收藏
- 关注
原创 STM32 从机SPI全双工DMA错位问题及解决
STM32的作从机SPI,接收错位、异常等问题是经常能碰到的。比如在debug时程序断点会随机打乱DMA本身传输数据的顺序;或是由于中断嵌套未处理好而导致从机SPI不能及时完成全双工通信;或者是由于外部电磁环境干扰了CLK等高速信号导致出错。b.借用HAL库函数:HAL_SPI_ErrorCallback,SPI检测到故障时会进入此回调函数。a.通过设置CRC:对接收的数据进行校验,若校验出CRC错误则进行恢复。1、检测错位和其他异常。2、恢复(重启通信)
2025-01-14 17:06:31
484
1
原创 STM32cube 主从机全双工 SPI&DMA通讯的从机配置
注意Size需要和主机数量一致,运行程序pRxData为主机发来的数据,pTxData为需要返回的数据。pTxData应设置为全局变量,在程序其他地方进行更新并实时上传。原因:从机被动接收主机的数据并同步反馈,本身没有主动性,因此需要循环持续接收。(不需要配置SPI中断)注意需要将DMA模式改成循环。
2024-11-19 16:03:26
788
1
原创 STM32F103定时器TIM2复用输出pwm异常
由于工作需要,要求做一个PWM端口控制输出电压大小。这本是很简单的事,但却碰到一个小问题,纠结了半天时间。。现记录下来供人参考。想要使用这个PB3输出,就要使用部分remap模式1或者all remap,但是配置过程中发现只有debug时可以输出正常波形,重新上电后却不能正常输出,最后发现是这个PB3本身引脚默认的功能比较特别:JTDO,不是普通IO,而是JTAG的复用功能引脚,除此之外还有:JNTRST、JTDI。 因...
2021-09-02 20:56:55
3044
1
原创 STM32 HAL库配置DMA&SPI小结
SPI传输完成后,进入SPI_DMATransmitReceiveCplt函数处理,在这个函数中,将STATE置为READY后,调用该函数的回调函数,HAL_SPI_TxRxCpltCallback(Cplt为complete的缩写意味传输完成),该回掉函数为weak定义,因此可以进行重新定义,在该回掉函数中编写片选控制信号、数据处理等程序。另外,在固定中断中检测(STATE==READY?),然后进行重新发送DMA数据的处理,即HAL_SPI_TransmitReceive_DMA,需要注意的是,只有在S
2021-06-18 10:15:52
7784
3
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人