CH32V203F6P6-SPI数据丢失问题
参考这篇文章GD32-SPI数据丢失问题 - 哔哩哔哩 (bilibili.com)
防止文章被删,我复制一遍
最近公司更新单片机,由STM32更换为GD32单片机.更换后一切功能正产,但SPI存在数据丢失问题.
原程序:

spi发送函数

主函数
原程序逻辑顺序:发送完SPI数据后,再进行片选锁存.
逻辑分析仪实测顺序:在发送完SPI数据之前,就进行了片选锁存,导致数据丢失.

GD32-在数据未发送完成时便进行锁存动作
经过测试发现,STM32同样存在该问题,但发生频率没有GD32多.

stm32-在数据未发送完成时便进行锁存动作
猜测:
STM32/GD32 的SPI数据发送是独立于其他部分的,类似于DMA.数据发送和程序执行属于并行执行.
解决办法一:
函数结尾加入对正在发送标识的判断

在函数结尾加入标识判断
可以看到片选信号的动作明显位于时钟信号截止后,修改完成

修改后数据正常
解决办法二:
在发送完SPI数据后加入延时函数.等待SPI数据发送完成.(时间宝贵未验证)
在红色箭头处加入延时函数

作者:快给我去spa https://www.bilibili.com/read/cv17641980 出处:bilibili

浙公网安备 33010602011771号