猪小屁 发表于 2024-4-16 09:11:48

STM32 CAN通讯收发异常

项目里有个CAN收发相关的板子,用的是STM32F103芯片。在与上位机的CAN交互过程中经常会出现通讯错误的情况,表现在上位机发送报文后没有收到回复。用CAN调试器接到该板子后给其发消息,调试器会显示总线数据错误,如下图中会亮红色:

!(data/attachment/forum/202404/16/090839ohkyn99jkzuzphnf.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

但是将板子接上烧录器在线调试,并在CAN接收中断中打上断点,此时再向板子发送CAN信息,程序会显示进入接收中断,继续运行后恢复正常,拔掉调试器后又能正常跑。百思不得其解,有哪位大神支支招。

知足- 发表于 2024-4-16 09:45:08

看不到相关的代码,很难查找原因。

实际上我用cubeMX生成代码,在波特率和采样点匹配的情况下,从没见过通信错误的情况。

猪小屁 发表于 2024-4-16 10:02:05

知足- 发表于 2024-4-16 09:45
看不到相关的代码,很难查找原因。

实际上我用cubeMX生成代码,在波特率和采样点匹配的情况下,从没见 ...

!(data/attachment/forum/202404/16/100001hjws4h51u44mbmw1.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "b72c9eefbafc62a5292b3e86237cd0c.png")



!(data/attachment/forum/202404/16/100050p9tf3ex3ejueg3qd.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "6ff73c3f462511952fc3f55562afb7e.png")

!(data/attachment/forum/202404/16/100106ellu88x84nx5xy7k.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "c6e97e72e5014452df5ded2d53d78ab.png")



!(data/attachment/forum/202404/16/100117izes0qm1wnslbdqt.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "7acff82acfa4af132038ac1a4cc7cef.png")


这是CAN初始化的代码,您看哪里可能报错吗

butterflyspring 发表于 2024-4-16 10:13:11

手动复位一下你的板子,看看是否能正常。

猪小屁 发表于 2024-4-16 13:48:55

butterflyspring 发表于 2024-4-16 10:13
手动复位一下你的板子,看看是否能正常。

板子没有设计复位按钮,但是断电重启没有用

知足- 发表于 2024-4-16 16:48:12

上位机CAN采样点是多少,我看这里设置的是(1+5)/(1+5+6) = 50%,一般波特率500K以下推荐设置采样点87.5%。不知道是不是这个原因。


另外,模式配置我一般都设置这样,可以试试看:

!(data/attachment/forum/202404/16/164715zy2u6uzjue2x1e0j.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

猪小屁 发表于 2024-4-17 09:39:52

知足- 发表于 2024-4-16 16:48
上位机CAN采样点是多少,我看这里设置的是(1+5)/(1+5+6) = 50%,一般波特率500K以下推荐设置采样点87.5 ...

好的谢谢

xmshao 发表于 2024-4-26 07:20:17

你检查下,看看两边CAN参数时序配置是否一致。再就是硬件方面的问题,比方线材,干扰啊这些。之前用过标准CAN,感觉CAN还是比较好用的,似乎都没遇到啥麻烦。

猪小屁 发表于 4 天前

xmshao 发表于 2024-4-26 07:20
你检查下,看看两边CAN参数时序配置是否一致。再就是硬件方面的问题,比方线材,干扰啊这些。之前用过标准C ...

好的谢谢
页: [1]
查看完整版本: STM32 CAN通讯收发异常