依照瑞萨公司的《can入门书》的组织思路来学习can通信的相关知识,并结合网上相关资料以及学习过程中的领悟整理成笔记。好记性不如烂笔头,加油!
1 can的一些基本概念
1.1 什么是can总线
can 是 controller area network 的缩写,是 iso 国际标准化的串行通信协议。通俗来讲,can总线就是一种传输数据的线,用于在不同的ecu之间传输数据。
can总线有两个iso国际标准:iso11898 和 iso11519。其中:
iso11898定义了通信速率为 125 kbps~1 mbps 的高速 can通信标准,属于闭环总线,传输速率可达1mbps,总线长度 ≤ 40米。
iso11519定义了通信速率为 10~125 kbps 的低速 can通信标准,属于开环总线,传输速率为40kbps时,总线长度可达1000米。
tips::又称为总线的通信速率,指的是位速率。或称为比特率(和波特率不是一回事),表示的是:单位时间内,通信线路上传输的二进制位的数量,其基本单位是 bps 或者 b/s (bit per second)。
1.2 can的拓扑结构
下图中,左边是高速can总线的拓扑结构,右边是低速can总线的拓扑结构。
如图中所示,can总线包括can_h 和 can_l 两根线。节点通过can控制器和can收发器连接到can总线上。
tips:通常来讲,ecu内部集成了can控制器和can收发器,但是也有没集成的,需要自己外加。
1.3 can信号表示
在can总线上,利用can_h和can_l两根线上的电位差来表示can信号。can总线上的电位差分为显性电平和隐性电平。其中显性电平为逻辑0,隐性电平为逻辑1。
iso11898标准(125kbps ~ 1mbps)和iso11519标准(10kbps ~ 125kbps)中can信号的表示分别如下所示:
1.4 can信号传输
发送过程:
can控制器将cpu传来的信号转换为逻辑电平(即逻辑0-显性电平或者逻辑1-隐性电平)。can发射器接收逻辑电平之后,再将其转换为差分电平输出到can总线上。
接收过程:
can接收器将can_h 和 can_l 线上传来的差分电平转换为逻辑电平输出到can控制器,can控制器再把该逻辑电平转化为相应的信号发送到cpu上。
概括的讲:
发送方通过使总线电平发生变化,将其信息传递到can总线上。
接收方通过监听总线电平,将总线上的消息读入自己的接收器。
2 can通信的特点
2.1 多主工作方式
所谓多主工作方式,指的是:总线上的所有节点没有主从之分,大家都处于平等的地位。反应在数据传输上,即是:在总线空闲状态,任意节点都可以向总线上发送消息。
tips::当总线上的上出现连续的11位隐性电平,那么总线就处于空闲状态。也就是说对于任意一个节点而言,只要它监听到总线上连续出现了11位隐性电平,那么该节点就会认为总线当前处于空闲状态,它就会立即向总线上发送自己的报文。
至于为什么连续出现11位隐性电平,就可以判定+总线处于空闲状态,这个问题可以结合can协议的帧结构来进行理解。
在多主工作方式下:
最先向总线发送消息的节点获得总线的发送权;
当多个节点同时向总线发送消息时,所发送消息的优先权高的那个节点获得总线的发送权。
例如:node_a和node_b同时向总线发送各自的消息msg_1和msg_2,如果msg_1的优先级比msg_2高,那么node_a就获得了总线的发送权。
2.2 非破坏性位仲裁机制
在can协议中,所有的消息都以固定的帧格式发送。当多个节点同时向总线发送消息时,对各个消息的标识符(即id号)进行逐位仲裁,如果某个节点发送的消息仲裁获胜,那么这个节点将获取总线的发送权,仲裁失败的节点则立即停止发送并转变为监听(接收)状态。
例如:node_a和node_b同时向总线发送各自的消息msg_1和msg_2,那么对msg_1的id号id_1和msg_2的id号id_2进行逐位仲裁,如果仲裁结果是:id_1的优先级比id_2高,那么msg_1在仲裁中获胜,于是发出msg_1这条报文的节点node_a就获得了总线的发送权。同时,msg_2在仲裁中失败,于是node_b就转换到监听总线电平的状态。
这种仲裁机制既不会造成已发送数据的延迟,也不会破坏已经发送的数据,所以称为非破坏性仲裁机制。这种仲裁方式的实现机制参见本系列笔记的第二篇can协议数据帧与遥控帧中的介绍。
2.3 系统的柔性
can总线上的节点没有“地址”的概念,因此在总线上增加节点时,不会对总线上已有节点的软硬件及应用层造成影响。
2.4 通信速度
在同一条can线上,所有节点的通信速度(位速率)必须相同,如果两条不同通信速度总线上的节点想要实现信息交互,必须通过网关。
例如:汽车上一般有两条can总线:500kbps的驱动系统can总线和125kbps的舒适系统can总线,如果驱动系统can总线上的发动机节点要把自己的转速信息发送给舒适系统can总线上的转速表节点,那么这两条总线必须通过网关相连。
2.5 数据传输方式
can总线可以实现一对一,一对多以及广播的数据传输方式,这依赖于验收滤波技术。验收滤波技术的实现机制参见本系列笔记的第二篇can协议帧结构中的介绍。
2.6 远程数据请求
某个节点node_a可以通过发送“遥控帧”到总线上的方式,请求某个节点node_b来发送由该遥控帧所指定的报文。具体实现方式参见本系列笔记的第二篇can协议帧结构中的介绍。
2.7 错误检测、错误通知、错误恢复功能
所有的节点都可以检测出错误(错误检测功能);
检测出错误的节点会立即通知总线上其它所有的节点(错误通知功能);
正在发送消息的节点,如果检测到错误,会立即停止当前的发送,并在同时不断地重复发送此消息,直到该消息发送成功为止(错误恢复功能)。
2.8 故障封闭
节点能够判断错误的类型,判断是暂时性的数据错误(如噪声干扰)还是持续性的数据错误(如节点内部故障),如果判断是严重的持续性错误,那么节点就会切断自己与总线的联系,从而避免影响总线上其他节点的正常工作。
can通信的上述特点都是基于can协议所定义的多种帧结构来实现的,因此,在下一篇笔记对can的帧结构有了了解之后,再做进一步的详细解释。
3 can通信网络结构
3.1 osi基本参照模型
实际上,can总线网络底层只采用了osi基本参照模型中的数据链路层、传输层。而在can网络高层仅采用了osi基本参照模型的应用层
3.2 can协议网络层次
在can协议中,iso标准只对数据链路层和物理层做了规定。对于数据链路层和物理层的一部分,iso11898和iso11519-2的规定是相同,但是在物理层的pmd子层和mdi子层是不同的。
在can总线,每一层网络中定义的事项如下:
一起走近单片机的世界
南通华林科纳—硅片与氟蚀刻液界面金属杂质的去除
英特尔将5G天线嵌入进了扬声器中,实现每秒高达3G的传输速度
特朗普对华发起贸易战包括信息技术而中国没有反制的原因是什么
我国到2020年建智能网联汽车计算平台
CAN总线基础知识学习笔记
抵御数据风险、保障业务安全,就看华为云数据灾备
电子芯闻早报:联发科强攻服务器芯片
好用的蓝牙耳机有哪些推荐?半入耳蓝牙耳机排行榜!
芯驰科技发布9系列高性能汽车芯片,赋能智慧出行
三星推出扫地机器人VR7000 可实现语音控制
苹果收购以色列技术公司RealFace 小米布局中高端机型抗衡华为
图像处理基础知识笔记11
STM32通用定时器的基本特性、操作模式及相关应用介绍
已获批的13个人工智能创新发展试验区的对比和详细情况
带你了解4个TI中国明星产品背后的故事
EV3000变频器的调速监控系统设计
TDK采用混合聚合物技术的轴向电容器的特点
IBM发布混合云时代新系统解决方案
无线人体局域网标准“BAN(IEEE 802.15.6)”正式批准