1.1 CAN比特率计算
采样点计算公式为:Sample Point = (1+TSEG1) / (1+TSEG1+TSEG2)
在组网的时候,多个节点尽量保持同一个采样点,且最好在但不超过7/8位时间点上;当波特率大于800kbps时,推荐采样率为75%;当波特率为500k-800kbps时,推荐采样率80%左右;当波特率不大于500kbps时,推荐采样率为87.5%。采样点如果偏离这个标准过多,可能会导致一致性问题。因此经验配置如下:
tBS1>=tBS2
tBS2>=1个CAN时钟周期
tBS2>=2tSJW
1.2 CAN总线的同步
CAN总线的同步共有两种方式:硬同步和重同步。
1)硬同步:在总线刚刚从空闲状态中走出来的时候,在帧头的位置都会进行一次同步。此时所有的节点位时间重新开始,就像所有的运动员都再一次回到了起跑线上。这种同步方式被称作硬同步。
2) 重同步:硬同步时只是在有帧起始信号时起作用,无法确保后续一连串的位时序都是同步的,这个时候重同步就到了发挥作用的时候。具体来说,CAN总线的一个位时间中包含两个缓冲段BS1和BS2, 在两个缓冲段中间的位置,即是读取总线电平的采样点位置,当检测到总线上存在相位差的时候,通过延长BS1段或缩短BS2段来获得同步,这样的方式称为重新同步。这两个相位缓冲段的延长时间或缩短时间上限由再同步跳转宽度(SJW)给定。采样点是接收节点判断信号逻辑的位置,CAN通讯属于异步通讯,需要通过不断的重新同步才能保证收发节点的采样准确,所以SJW(同步跳转宽度)决定了接收节点是否能有比较好的兼容性。
对于CAN总线的每个数据位的持续时间(位时间),可以分成4部分,同步段、传播段、相位缓冲段1和2。当电平发生变化时,CAN控制器可以根据同步段进行同步,从而减少因波特率误差带来的通信错误,所以CAN总线的误差只会累计在两个跳变沿之间。当数据全为0或全为1时,CAN总线规定,每连续5个相同位后会插入一个相反位,产生跳变沿,用于同步,从而解决波特率误差导致的通讯错误。因此累计误差的最长时间是5个bit。
参考: https://www.elecfans.com/d/885248.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~