CAN——车联网初步探索
本文最后更新于 65 天前,其中的信息可能已经有所发展或是发生改变。

Last Updated on 2026-05-12 by MarsRain

CAN总线

与传统车辆内部结构区别

点对点的方式布线方法、成本、重量等缺陷过于明显,无论是对于后面的电器元件的扩展都十分不友好,所以CAN总线结构问世解决了这些缺点。

主要优点

总线的方式有良好的扩展性,只需要在总线挂相关的节点接入总线即可,线数也大量减少,减少成本
数据传输具有瓶颈,单线限制带宽

CAN内部结构

微控制器——与应用层的数据交互
CAN控制器——报文封装,用二进制码流传给收发器
CAN收发器——根据can协议,将数据比特流转发为电信号

CAN的整体结构——CAN_H CAN_L

数据链路层

寻址方式——确定发送与数据之间的关系,方法:
点对点的寻址——一对一
广播寻址——一对多

总线访问机制

节点没有主从之分,都可以访问主线。主线在任意时刻只能被一个节点访问
非破坏性仲裁机制——访问冲突时,根据报文的id进行优先级裁定。即使是没有被访问的报文,后续依然可以重复发送,直到被总线接收

仲裁厂——线与机制、回读机制

根据节点发送的数据帧和总线报文帧数的比较,节点会根据不同的返回结果进入不同的机制。AB节点同时传输报文,会触发线与机制。此时AB传输的数据报文的同一帧会做与计算,最终计算出的帧数为0的数据流会被总线读取。假设A的数据被读取了,而未被读取的B的数据流会返回B节点,进入接收模式,等待下一次的发送机会。总线处理完A的数据之后,B就可以重新发送。这就是回读机制
注:每个报文id都具有唯一性,所以尽管前面的帧数会相同,总会有一个不相同的地方出发线与机制,决出优先级

访问优先级——当报文的高位0的个数越多,优先级越高

CAN报文结构

标准帧 id位11位big和0~8个有效字节组成
远程帧 不包括有效字节
扩展帧IDE id有29bit,商用偏多
扩展远程帧 更少见

结构:
SOF真起始+仲裁厂+控制场+数据场+CRC校验场+AFK应答场+EOF真结束

位填充的规则

只要总线出现连续五个极性相同的位,就会在下一位填充一个极性相反的位。所以不可能在一个保温结构中出现六个连续极性相同的位。填充位也会纳入“连续五个极性相同”的计算

CAN数据传输的保护机制
CRC校验:对前面数据场的数据监控

错误帧

发送原则:当错误被检测到,立即发送下一位的错误帧

格式:
错误标志位+错误界定符

Error-Active Node:6个0+8个1
000000+11111111
其他节点报错的时候也会添加在“6个0”当中,最终结果可能会导致变成12个0

Erro-Passive Node:6个1+8个1

错误都是成对出现,所有参与通信的节点,可能都会出现错误。那么为了保持数据的一致性,所有的节点可能就会抛弃正在传输的数据,再次重新发送。

错误界定

主动错误/被动错误/Bus Off

根据两个参数寄存器——TEC、REC进行确定

对于每一个节点每次成功发送/接收一个帧,会-1;相反,则+8

对于发送节点在发送帧过程中,检测到一个错误,则TEC数值+8;接收节点率先接收到错误帧,REC+8,如果说在其他节点已经发现的错误帧的基础上仍然有错误帧,则REC+1

CAN FD总线

整体改善

随着时代的发展,车辆网中的数据传输量越来越庞大,而CAN总线很难满足过大的数据传输,所以CAN FD又在CAN的基础上升级。相较于CAN总线的1Mbit/s的数据流而言,FD在两个方面做出改善:

支持更高的传输速率

但并不是一直维持着高速率传输,而是可变速率传输。

FD报文结构:仲裁段和数据段
CAN FD最高能够支持8Mbit/s的通信速率

CAN FD数据场的扩充

传统CAN的数据场长度最多8个字节
CAN FD最大可达64个字节

CAN FD 协议

两个报文格式:
CAN FD标准帧:11bit,扩展到64字节
CAN FD扩展帧:29bit,扩展到64字节
删除远程帧

CAN FD报文结构

和CAN报文结构类似,只是添加了新的标志位:
RRS FDF BRS ESI

RRS替换RTR
FDF:添加在IDE(扩展帧)之后,用于识别是否为传统报文。FDF=0,传统报文;FDF=1,CAN FD报文
IED:IED=0是传统CAN扩展帧报文,IED=1,CAN FD扩展帧报文
BRS(速率切换位):BRS=0,CAN FD保持恒定速度,BRS=1,切换较高的速率值
ESI(错误状态指示位):发送节点会通过ESI通知其他节点此时的错误状态。ESI=1,被动在错误状态;ESI=0,主动错误状态

在CAN FD中的CRC检验场中,CAN FD会根据数据场的长度变化而使用不同的CRC校验。同时,还和CAN的CRC不同,使用的是固定位置的填充机制。

FlexRay总线

物理层

flexray可支持不限于任何物理限定的物理拓补,节点两端通过两根信号线——bp bm进行连接,线长还不得超过24m,以免影响通信。
当节点存在四个或以上时,拓补结构可选择被动新型和总线型。

现实场景中,多个拓补图会组合使用来确保flexray总线正常运作

文末附加内容
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇