一。什么是CAN?
(二)CAN协议的特点
(三)我们使用ISO11898标准,物理层特征如图所示
125K-1Mbps的高速标准
电路图
通过TJA1050收发芯片
逻辑电平指的是CAN_RX和CAN_TX上的电平
CAN_H和CAN_L的电平指的是指经过电平转换芯片TJA1050以后转换出来的电平,是通过差分信号来传输信号的。
隐形电平:指CAN_H与CAN_L相等,都等于2.5V的时候,它们之间的压差是0V,对应逻辑“1”。
显性电平:指CAN_H与CAN_L有2V左右的压差,CAN_H是3.5V,CAN_L是1.5V,对应逻辑“0”。
总线上的电平必居其一,要么是显性要么是隐形。
(四)CAN通信是以以下5种类型的帧进行的
CAN通信是以帧为单位进行传输的。其中数据帧是最复杂的也是最重要的。
(五)数据帧的组成
R表示隐形电平,也就是STM32输出的高电平“1”,对应到总线上压差0V
D表示显性电平,也就是STM32输出的低电平“0”,对应到总线上压差2V
(六)数据帧解析
扩展格式有 11+18共29位的扩展ID。对于扩展格式IDE位读出来一定是“1”
CRC的值的计算是:SOF帧起始+仲裁段+控制段+数据段
校验的时候也是把这些相加,然后跟CRC去对比,来判断我们收到的数据是不是正确的。
接收单元在接收正常以后会发送一个ACK给发送单元,发送单元会根据这个ACK来确定是不是发送成功。
帧结束:由7个位的隐形位组成,也就是7个“1”。
总线仲裁
前面说过显性电平占优,也就是“0”是占优的。这里逐个位进行比较,从ID段开始。
这个图中单元2发出的0多,就抢占了优先权,单元1转为接收单元。
位时序
波特率的概念
位时序中各个段的作用和Tq数如下表
在STM32中只有PBS1和PBS2,其中PBS1包含了传播时间段,变为2-16Tq。
一个位的组成
这些都是硬件自动去处理的,我们只要设置好:传播时间段,相位缓冲段1,相位缓冲段2,再同步补偿宽度。
(七)重点要掌握的4个知识点
1. 标识符(ID): 不表示目的地址,而是表示优先级。有标准标识符和扩展标识符,标准标识符有11个位,扩展标识符有29个位。最高的7位不允许全部设置为“1”
2. 数据帧的构成:由7个段构成。
3. 总线仲裁:连续发送0最多的占的优先级就高,也是根据ID来仲裁的。
4. 位时序:知道位时序以后就可以设置波特率。1M的波特率,Tq=0.1us,10个Tq刚好是1us,波特率刚好是1M。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』