CAN总线协议——数据链路层


帧种类
数据帧的组成
灰色部分:产生一个电平,知道是显性(因为是低电压)
隐性时突然来了一个下降沿,这个表示这要传输一个数据了
注意电平信号(加粗的黑色线)
(1)、帧起始(标准、扩展格式相同)
    表示帧开始的段,1个位的显性位;
为什么不称高低电平,要用显性隐性??==》有点像生物上的DNA,显性更具包容性
数据帧要注意:在空闲时是隐性的,要开始工作时会有一个低电平(SOF低电平)来通知,
显性容易改变总线上的电平,也容易检测到总线上是否有人在传输数据
(2)、仲裁段 (ID段)
      表示数据的优先级的段
      标准格式和扩展格式在此的构成有所不同;
ID的设置是为了区分数据帧的优先级,优先级越高的数据帧,会被优先接收处理。判断优先级的高低通过识别:从ID的最高位(MSB)开始判断,若连续出现显性电平(逻辑0)个数最多的,优先级越高。
通过STR位来确定是标准格式还是扩展格式
为什么禁止高7位为隐性
(3)、控制段 
表数据帧里数据段的字节数(也就是长度信息)
(4)、数据段(标准、扩展格式相同)
户需要发送的数据内容,可一次性发送0–8个字节的数据。(每个数据占用一个字节)
(5)、CRC段(标准、扩展格式相同)
检查帧传输错误的帧。(检查范围:起始端,仲裁段,控制段,数据段)
由15位的CRC顺序和1位的CRC界定符(用于分隔的位)构成。
(6)、ACK段
确认并响应是否正常接收,
(7)、帧结束
由7个隐形位(逻辑1)组成,因此ID仲裁断禁止出现1111111****形式的 格式。

遥控帧
请求指定ID发送数据,跟数据帧格式相比少一个数据段
遥控帧跟数据帧的区别,遥控帧的PTR位为0,并且没有数据位
错误帧
错误标志说明产生什么的错误, 重叠部分是什么意思?
过载帧

有些错误只有单方面能检测
间隔帧
间隔表示:间隔时间

优先级



因为遥控帧的RTR位为隐性电平,而数据帧的RTR位为显性电平,所以ID位一致的情况下数据帧的游优先级更高
同样,标准帧的优先级也更高
位时序(波特率的设置)
波特率大和位时间有关,为位时间的倒数关系。
一个位分为4段:同步段,传播时间段,相位缓冲段1,相位缓冲段2。每个段都是Tq的整数倍,通过设定每个段的Tq数可计算出: 波特率=1/(n*Tq) 。(可以不用详细了解每个段,但需知道与波特率的关系)

猜你喜欢

转载自blog.csdn.net/weixin_28900531/article/details/79937431