前言
STM32 CAN代码网上很多,但大都是讲如何配置的,对于一些原理以及注意事项没有很清楚的说明。在实际调试过程中,两个设备间的通信只要设备CAN的配置一样基本就可以调通,但在增加设备的过程中,很容易出现多设备无法通信的问题,这里主要就这一问题进行说明。
硬件
STM32F042G4 + MAX3051
测试过程
测试板回来后,两个设备间的通信轻松搞定,但在增加设备的过程中,增加的设备总是不能正常通信。详细比对了一下配置,也没有任何问题。后来,仔细研读MAX3051的芯片手册,得到以下几个重要信息:
MAX3051有四种工作模式
高速模式:数据传输速率可达1Mbps,但抗干扰能力弱,需要双绞线
斜率控制:可编程控制最高500kbps的传输速率,可减少电磁干扰EMI(因此可使用非屏蔽双绞线或平行线)
斜率控制速率计算:
RRS (kΩ) ≈ 12000 / (maximum speed in kbps)
待机(standby)模式:发射机关闭,接收机被拉高,低电流模式
关机模式:发射和接收都关闭
原来测试板焊接有52k电阻,CAN为斜率控制模式,而实际配置的波特率高达1M,显然是行不通的,后去掉该电阻直接接地,通信OK。再后来为了增加抗干扰能力,还是焊接了电阻,使其工作在斜率控制模式。
其他说明
“显性”(“Daminant”)数值表示逻辑“0”,而“隐性”(“Recessive”)表示逻辑“1”
电流
Dominant(显性):TYP-35mA MAX-70mA
Recessive(隐性):TYP-2mA MAX-5mA
CAN

本文分享了在STM32上进行CAN总线调试的经验,特别是遇到多设备无法通信的问题。通过研究MAX3051芯片手册,发现电阻设置对通信模式的影响,调整电阻解决了通信问题。此外,强调了CAN总线的逻辑状态、电流特性、布线注意事项、采样点和波特率计算等关键点,最终实现了13个模块的稳定通信。
最低0.47元/天 解锁文章
1万+

被折叠的 条评论
为什么被折叠?



