CAN总线 – 笔记
增加化模块电路原理图 — 2020/5/9
一、CAN总线两种标准
关于 ISO11898
ISO11898 是通信速度为 125kbps-1Mbps 的 CAN 高速通信标准。
应用实时性较强的系统,如ABS、刹车控制、悬挂控制、发动机控制等等。
单元终端需要终端电阻:100 ~ 120 ohm之间来避免信号反射(吸能)。
关于 ISO11519
ISO11519 是通信速度为 125kbps 以下的 CAN 低速通信标准。
低俗的CAN通讯不需要终端电阻。
用得比较多的是TJA1050、SIT1050等芯片进行设计。
收发器具有一定的ESD保护能力
差分电压表达式:Vdiff = CANH - CANL
无论高速CAN标准、CAN低速标准都有:
- 呈现"显性",显性逻辑电平为"0";
- 呈现"隐性",隐性逻辑电平为"1";
下面图也是这个意思,但不同协议标准差分电平也不同。
上面图中不难看出,ISO11519-2的中CANH、CANL线的电平跳变跨度较大,这也就是速度比ISO11898传输速度慢的原因之一。
二、数据链路层
下面图中,灰色"D"代表显性“0”,白色"R"代表隐形“1”,紫色代表"D/R"都可。
1、【数据帧】
用于发送单元向接收单元传送数据的帧。
数据帧里面有几个组成:
-
帧起始:SOF -->> 帧开始,显性电平1位,逻辑为0。
-
仲裁段:帧的优先级
竞争规则:发送方与其他发送方进行竞争,总线上根据标识符ID总线上进行“与”操作,若为“0”则(竞争失败)转为接收方,若是“1”则(竞争成功)为发送方。
RTR位为显性,逻辑为“0”,此时为数据帧; -
控制段:DLC表示数据的字节数及r0保留位和IDE扩展位。
-
数据段:0-8个字节左右。
-
CRC 段:检查帧的传输错误的段(CRC序列+CRC界定符)。
-
ACK 段:表示确认正常接收的段(应答位+应答界定符)。
-
帧结束:EOF -->> 帧结束,隐性电平7位,逻辑为1。
注意:扩展帧(CAN 2.0B)与标准帧(CAN 2.0A)格式不同,不能存在同一个网络。
2、【遥控帧】
用于接收单元(设备)向具有相同 ID 的发送单元请求数据的帧。
RTR位:
该位为隐性,逻辑为“1”,此时为遥控帧;
3、【错误帧】
用于当检测出错误时向其它单元通知错误的帧。
4、【过载帧】
用于接收单元通知其尚未做好接收准备的帧。
5、【帧间隔】
用于将数据帧及遥控帧与前面的帧分离开来的帧。
三、物理层
据说数据传输采用NRZ编码发送,减少干扰可能性。。。。。。
1、【填充位】
为防止突发错误而设定的功能。当同样的电平持续 5 位时,就会添加一个位的反型数据
2、【位时序】
发送单元在非同步的情况下发送的每秒钟的位数称为位速率。
1Bit可分成个四段(同步段、传播时间段、相位缓冲段1、相位缓冲段2),这些段又分成若干个(Time Quantum)Tq,而Tq是最小时间单位。
所以1Bit传输可以设置成若干个Tq单位,一般1Bit范围在8个Tq ~ 25个Tq之间。
-
同步段(SS)
这个段的长度:1Tq
吸收物理网络上的延时,由隐性电平到显性电平的边沿或由显性电平到隐性电平边沿最好出现在此段中。 -
传播时间段(PTS)
这个段的长度:1~8Tq
用于吸收网络上的物理延迟的段。 -
相位缓冲段1(PBS1)
这个段的长度:1~8Tq -
相位缓冲段2(PBS2)
这个段的长度:2~8Tq
PBS1、PBS2用于各单元以各自独立的时钟工作,细微的时钟误差会累积起来,PBS 段可用于吸收此误差。 -
再同步补偿宽度 (SJW)
这个段的长度:1~4Tq
因时钟频率偏差、传送延迟等,各单元有同步误差。SJW 为补偿此误差的最大值,加大这个SJW会降低传输数据速度。
3、【双绞线】
CAN总线采用差分传输,所以最好就是使用双绞线传输信号。
双绞线具有抑制共模,抗干扰能力较强,只针对差模传输。
没钱的话,我建议自己买两根颜色不同的线(杜邦线也行),两线相互转缠绕大概每米旋转30圈左右。如果想提提升一下传输信号质量,就买点铝箔或是锡纸包一下两根缠绕的线,自制简易STP双绞线。
四、模块化设计
使用TJA1050进行设计,下面是原理图。
芯片引脚说明:
引脚号 | 功能 |
---|---|
1 TXD | CAN控制器发送数据 |
2 GND | 参考接地 |
3 VCC | 参考电源+5V |
4 RXD | 接收数据 |
5 Verf | 没啥用。。略。。。 |
6 CANL | 差分线 |
7 CANH | 差分线 |
8 S | 高速/静音模式(该引脚接GND变成高速模式) |