STM32
直播中

王燕

7年用户 1749经验值
私信 关注
[问答]

GD32 SPI断电再上电,造成时钟失效的原因?怎么解决?

我在 使用GD32调试165获取编码器IO口状态的时候,遇到了一个问题,我的SPI2 在仿真的时候接数据是正常的,可是在退出仿真,然后进行断电操作 再上电的时候就 出现了 读出来的数据一直是0,后面用示波器看到了发现时钟没了。推断是SPI没有初始化成功(不会查怎么看是不是所以只靠猜了)。


然后我尝试了 延时读取数据 。。。失败!


复位SPI再配置。。。失败!


复位后延时5ms再配置。。。失败!


减低SPI速率。。。失败!


后来在一个贴子上面找了一个解决方法:

原因:可能是因为SPI2 的一个脚 PB3和JTAG的脚是同一个脚,所以断电再开机的时候MCU默认这个管脚的功能是JTAG,导致了SPI2失效。

解决办法:

  //添加了SWD _JTAG的 IO 重映射配置,把JTAG禁止,只使用SWD仿真引脚

gpio_pin_remap_config(GPIO_SWJ_SWDPENABLE_REMAP,ENABLE);

但是具体是不是这个原因不太清楚,希望有知道的大佬可以赐教一下!感谢!



回帖(1)

张辉

2024-3-13 17:29:46
SPI时钟失效的可能原因是接线问题或者初始化配置错误导致SPI外设无法正常工作。解决方法可以包括以下几个步骤:

1. 确保SPI连接的接线正确,包括时钟线、数据线和片选线等。
2. 检查SPI初始化配置是否正确,例如设置了正确的时钟分频、数据位长度和传输模式等。
3. 在初始化SPI之前,先复位SPI外设并延时一段时间再进行配置。
4. 尝试调整SPI的时钟速率,降低传输速度以提高稳定性。
5. 检查其他可能会影响SPI工作的因素,例如供电电压是否稳定、其他IO口的冲突等。
6. 可以尝试把SPI2的PB3引脚与JTAG的脚分离,避免冲突。

除了以上方法,还可以尝试其他可能的解决方案,如使用外部晶体提供更稳定的时钟源,或者重新设计硬件布局以避免引脚冲突等。最好的解决方法是参考芯片厂商提供的官方文档和示例代码,确保正确配置和使用SPI外设。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分