Bootstrap

协议_CAN协议

物理层特征

信号传输原理:

CAN控制器根据CAN_L和CAN_H上的电位差来判断总线电平,总线电平分为显性电平(CAN_H与CAN_L压差 = 2v)、隐性电平(CAN_H与CAN_L压差 = 0v),发送方通过总线电平的变化,将消息传递给接收方,其中显性电平对应逻辑0、隐形电平对应逻辑1。

硬件连接:

单片机的CAN接口通过TJA1050芯片与CAN总线进行连接,TJA1050会将单片机的逻辑信号转换成CAN_H和CAN_L。

CAN帧

CAN帧有数据帧、遥控帧、错误帧、过载帧、间隔帧这五种,

数据帧、遥控帧有标准格式和扩展格式这两种,标准格式有11个标识符(ID),扩展格式有29个ID,这个ID决定了信息的优先级。

数据帧的组成:

数据帧由7部分组成,含义如下:

  • 帧起始:

表示数据帧的开始,一个位的显性电平

  • 仲裁段:

表示该帧优先级的段(ID)。

标准格式下该段由11个基本ID、RTR组成,其中:基本ID禁止高7位都为隐性(1111111xxxx不允许),RTR表示远程请求位(0表示数据帧,1表示远程帧)

扩展格式下该段由1个基本ID、SRR、扩展ID、RTR组成,其中:基本ID与标准格式的基本ID完全一样,SRR替代RTR(应设置为1),IDE表示标识符选择位(这里应为1,代表扩展标识符)

  • 控制段:

表示数据的字节数及保留位的段

标准格式下该段由IDE、r0、DLC组成,其中r0为保留位(发送必须为0,接收无要求),DLC为数据长度码(范围是0~8,代表接收/发送的数据长度,单位为字节),IDE表示标识符选择位(这里应为0,代表标准标识符)。

扩展格式下该段由r0、r1、DLC组成,其中r0、r1为保留位与标准格式要求一致,DLC也与标准格式含义一致。

  • 数据段:

数据的内容,一帧可以发送0~8个字节的数据,高位先输出。

  • CRC段:

检查帧的传输错误的段,检查范围是帧起始、仲裁段、控制段、数据段这4个段做CRC运算,存放到CRC区域。

接收方以相同的方式对接收到的这4个段进行CRC运算,并把运算结果与数据帧的CRC段进行比较,如果结果不一致则报错。

  • ACK段:

表示确认正常接收的段,由ACK槽、ACK界定符组成。发送方将数据帧的ACK段设置为11,接收方接收到正确的消息后,在ACK槽发送0。

注意:发送ACK的是接收到正常消息的、不处于总线关闭态和休眠态的所有接受单元,发送单元只设置ACK段,不发送ACK段。正常消息代表无填充错误、格式错误、CRC错误。

  • 帧结束:

表示数据帧结束的段,由7个1组成。

下图为帧的结构框图,其中D代表显性电平,R代表隐性电平。 

总线仲裁 

总线空闲时,一个发送单元开始发送数据,其余发送单元无法抢占,直到该发送单元发送完毕。

多个发送单元同时发送时,从ID位开始比较,显性单元(0)多的单元优先级高。

位时序

位速率:

发送单元在非同步的情况下发送的每秒钟的位数,也就是波特率。

位时序:

一个位可以分成同步段(SS)、传播时间段(PTS)、相位缓冲段1(PBS1)、相位缓冲段2(PBS2),这些段由Time Quantum(Tq)的最小时间单位构成。

这种一个位分为4个段,每个段分为多个Tq的时序叫做位时序。通过设置位时序,多个单元可以同时采样,也可以任意设置采样点。

位时间:

位时间 = 1/波特率。

如果1bit被分为了10Tq,1个Tq=0.1us,那么计算可得波特率=1MHz。

;