找回密码
 注册
关于网站域名变更的通知

CAN总线怎么调试?

2023-10-16 17:39| 查看: 81| 评论: 0

摘要: 前言STM32 CAN代码网上很多,但大都是讲如何配置的,对于一些原理以及注意事项没有很清楚的说明。在实际调试过程中,两个设备间的通信只要设备CAN的配置一样基本就可以调通,但在增加设备的过程中,很容易出现多设备 ...
前言
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布线注意事项

CAN采样点说明1,说明2

sample = ( 1 + CAN_BS1) / (1 + CAN_BS1 + CAN_BS2)

总体要求:CAN_BS1>=CAN_BS2>=2*CAN_SJW 采样点在70%~80%附近最佳

CAN波特率计算

CAN波特率 = CAN时钟/( (1 + CAN_BS1 + CAN_BS2) * CAN_Prescaler)

= CAN时钟/(CAN_SJW + CAN_BS1 + CAN_BS2)*CAN_Prescaler)

最后,综合以上布线、采样点、波特率等说明,成功串联13个模块,速度在400k。



本站资讯文章系编辑转载,转载目的在于传递更多信息,并不代表本站赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与本站联系,我们将在第一时间删除内容!
[声明]本站文章版权归原作者所有 内容为作者个人观点 本站只提供参考并不构成任何投资及应用建议。
本站拥有对此声明的最终解释权。
收藏 邀请
关闭

推荐内容上一条 /1 下一条

关于我们|手机版|EDA365电子论坛网 ( 粤ICP备18020198号-1 )

GMT+8, 2025-9-23 17:45 , Processed in 0.125000 second(s), 27 queries , Gzip On.

深圳市墨知创新科技有限公司

地址:深圳市南山区科技生态园2栋A座805 电话:19926409050

返回顶部