21ic问答首页 - GD32F103C8T6的SPI波形异常问题
GD32F103C8T6的SPI波形异常问题 赏100家园币
本帖最后由 萌德不萌 于 2025-7-23 15:00 编辑
我在使用逻辑分析仪测试SPI波形时,发现只要在调用spi_i2s_data_transmit(SPI1,data)之前增加了“等待SPI发送缓冲为空”的while循环,CS的波形就被提前拉高了
只要我注释掉该while循环,CS波形就恢复正常


为什么会这样呢
只要我注释掉该while循环,CS波形就恢复正常
为什么会这样呢
赞0
老哥,屏蔽掉后就是CS一直维持拉高状态了。
还有一个问题,就是原本屏蔽掉“等待发送缓冲区清空”的while循环后,不是SPI发送和CS时序就正常了么,但是我现在只要把SPI1_SendData函数再放入定时器Timer2的中断里定时发送,就又会出现CS提前拉高的情况
评论
2025-07-24
我觉得根本原因不在于等待发送缓冲区清空”这个while,可能是其他地方的代码存在比较隐秘的问题,方便的话,把V信发我,我帮你看下吧。
赞0
评论
2025-07-23
赞0
评论
2025-07-23
赞0
看波形像是判断发送 FIFO空了就拉高了CS,实际上位移寄存器还在工作。
评论
2025-07-23
赞0
你把CS的控制代码屏蔽后测试看下是什么效果,有问题回复我,再帮你看下:
368596880a6b0dd892.png (269.49 KB )
下载附件
2025-7-23 17:09 上传
官网上的这个SPI demo程序,我大致扫了一下代码,CS配置为软件控制,但实际貌似代码上没有操作CS,不知道为什么可以通信成功,有点神奇:
324766880a91e32a39.png (40.76 KB )
下载附件
2025-7-23 17:19 上传
可能是其评估板上的硬件一直拉低CS了。
评论
2025-07-23
赞0
评论
2025-07-23
赞0
评论
2025-07-23
赞0
评论
2025-07-23
赞0
评论
2025-07-23
您需要登录后才可以回复 登录 | 注册