1 CAN总线综述
不同速度的CAN总线可以通过 网关 链接(延长距离)和转换(传输速度)。
CPU和CAN控制器是一体的,外接收发器芯片如Tja1050/82c250;如果没有CAN控制器,外扩一个MCP2515(SPI)或Sja1000。
组网:
1、环路:两端接上120Ω的匹配电阻;(500k - 1M)
2、开环:终端接上120Ω的匹配电阻。
特点:
- 无主从之分,每一个节点都可以主动发送消息;优先级ID越小,越高;所有消息以固定格式发送。
- 没有地址的概念,可以任意添加节点而不用改变其他单元的硬件和应用层。
- 数据传输是以广播的形式发送的;
- 可以通过“遥控帧”,请求其他单元发送数据。
1.1 几个重点
-
隐性位与显性位
CAN总线是差分信号,CAN总线为“隐性”(逻辑1)时,CAN_H和CAN_L的电平为2.5V,但是电位差为0V。
CAN总线为“显性”(逻辑0)时,CAN_H和CAN_L的电平为3.5V和1.5V,但是电位差为2.5V。 -
数据帧类型
标砖数据帧
1)、标识符: 11位ID号;RTR、IDE、RB0:决定帧的性质,遥控(数据)帧,标准(扩展)帧。
2)、数据长度码:最长8字节;CRC字段:CRC校验;确认区结束符 -
标准远程帧
1.2 位时间特性
CAN总线上所有期间都需要使用相同的比特率。
同步段(SYNC_SEG):同步段为手段,用于同步CAN总线上的各个节点。输入信号的跳变沿就发生在同步段。同步段尺寸时间为1TQ。
时间段1(BS1):定义采样点的位置。 时间段2(BS2):定义发送点的位置。
当然在STM32下有专用寄存器控制这个位时间图。
CAN波特率=系统时钟/分频数/(1*tq+tBS1+tBS2)
tBS1 = tq * (TS1[3:0] + 1)
tBS2 = tq * (TS2[2:0] + 1)
tq = (BRP[9:0] + 1 )*tPCLK
tq表示一个时间单元
TPCLK = APB 时钟的时间周期
总体配置保持:
tBS1 >= tBS2, tBS2>=1个CAN时钟周期,tBS2>=2tSJW