×
单片机 > 单片机程序设计 > 详情

56。CAN通信基础知识介绍

发布时间:2020-06-08 发布时间:
|

一。什么是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。



『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机中断源的扩展方法