物理层
主要有位定时和位填充、高速收发器、网络拓扑结构、连接器。
CANopen 的物理层相当于CAN控制器中采用的子层PLS(物理信号)、MAU(介质访问单元)和MDI(介质专用接口),这些子层均位于驱动模块中并通过连接器和电缆实现。
位定时 其实就是针对各种不同的数据传输速率设定的采样点。分为4个部分:同步段、传播段、相位段1和相位段2。而位定时的采样点恰好介于相位段1和2之间。
位填充可以表示为5个相同极性的位后面插入一个不同极性的填充位,而根据第3章里报文格式中得知,位填充只适合对帧起始SOF 到CRC场之间的范围内的数据进行处理。填充位可以由接收CAN控制器自动去除填充,因此CAN报文物理层上的长度取决于待传输的位格式。
收发器芯片具有一个Rx引脚和一个Tx引脚,这些引脚可直接将二进制信号输入到CAN控制器中或微控制器中的CAN模块,CAN_H CAN_L端口直接与两条总线导线连接。另外用户可以利用一个外部电阻,通过一个可选端口来改变脉冲沿斜率。
网络拓扑结构 ISO11898-2 标准规定了一种带2个终端电阻的线性总线结构,在总线两端接上终端电阻可以避免导线上的信号反射。注意终端电阻的使用,总线导线的长度和类别选择。
连接器采用9针D-Sub连接器的引脚分布。
第三章 CAN 协议
主要有报文格式 和 错误的检测、限制和处理。
3.1 报文格式
CAN 规范定义,隐性电平的逻辑为1,显性电平逻辑为0. 有一个助记的是:显灵(显零),记住一个,另一个当然知道是隐1了。
CAN总线上传输的帧有4个类型:数据帧、远程帧、错误帧、超载帧。
标准格式的数据帧组成:
帧起始(SOF):指示一个数据帧和远程帧的开始,包含一个确定的显性位。
标识符场(CAN-ID):标识符场由11位组成,用于表示确定的待传输消息,数值作侍传输消息的优先级。
远程传输请求位(RTR):用于区分数据帧还是远程帧。当为显性时传输数据帧,隐性为远程帧。
控制段:由6位组成,其中有4位DLC (数据长度代码)。DLC表示此帧在数据段中的传输字节数。
数据段:0~8字节,包含此帧传输的实际有效信息。
CRC段:循环冗余校验。用来识别是否接收错误的数据。
应答段:应答间隙位的电平值可以用来提示本网络中没有接收器正确收到了当前发送的消息。
帧结束: 由7位隐性电平的位组成。
帧间空间(ITM)已经不属于前一条帧的组成单元。
错误帧: 主动错误标志由6个连续显性电平的位组成,这违反了CAN填充规则,所以网络中所有的设备都可以识别出这种错误标志。由主动错误标志转为被动错误标志。错误界定符由8个隐性电平位组成,用于结束错误帧。
过载帧:通常由尚未 处理完上一帧消息的CAN控制器发出,可以用于延迟网络中其他设备发送下一条消息。过载标志由6个连续显性电平位组成,且必须在帧空间ITM的前两个位之内开始。 过载界定符由8个隐性电平组成,用于结束过载帧。 过载帧不会影响错误计数器的读数,这接收错误计数器REC在发送过载标志检测到的位错误 REC不加1的原因吧。
CAN位信息的传输使用不归零编码(NRZ)的方式。
NRZ:信号电平的一次反转代表1,电平不变化表示0,并且在表示完一个码元后,电压不需回到0.
好处是 在一个位时间间隔里,只需要进行一次扫描就可以检测到电平。缺点是当出现一些极性相同的连续位时,没有可用的信号边沿来同步接收器。
CAN总线仲裁与填充原理需要注意。
3.2错误的检测、限制和处理
有5种检测机制检测错误:
位错误
填充规则错误
CRC错误
应答错误
格式错误
所有CAN协议控制器都内置两个错误计数器,一个接收错误计数器REC,一个是发送错误计数器TEC。
错误计数器的值大于127小于255时,设备进入被动错误状态;当错误计数器的值小于127时,设备处于主动错误状态;当错误计数器大于255时,设备进入总线脱离(BusOff)状态。
错误计数器的增减规定有8个。需要详细的可以留言给我。
如果某一过载帧中检测出错误,刚只有处于错误主动状态的设备才能允许发送一个错误标志。