目录标题
以下为你介绍CAN、LIN、SENT 等汽车嵌入式通信协议里的常用计算公式:
CAN(Controller Area Network)总线
1. 波特率计算
CAN 总线的波特率由位时间和采样点等参数决定,通常 CAN 控制器通过配置位时间寄存器来设置波特率。位时间可以分为同步段(SYNC_SEG)、传播段(PROP_SEG)、相位缓冲段 1(PHASE_SEG1)和相位缓冲段 2(PHASE_SEG2)。
- 公式:
其中:
- BRP
(Baud Rate Prescaler)是波特率预分频器的值。
- T_SYNC_SEG、T_PROP_SEG、T_PHASE_SEG1、T_PHASE_SEG2 分别是各段的时间份额。
- 解释:系统时钟为 CAN 控制器提供时钟源,经过预分频器和各段时间份额的分频后得到实际的波特率。
2. 位时间计算
位时间是指传输一位数据所需要的时间。
- 公式:
其中 Tclk 是系统时钟周期。
- 解释:它反映了 CAN 总线传输一位数据的时间长度,受预分频器和各段时间份额影响。
LIN(Local Interconnect Network)总线
1. 波特率计算
LIN 总线的波特率通常由主节点配置,通过定时器产生相应的时钟信号来实现。
- 公式:
其中:
- PSC
(Prescaler)是定时器预分频器的值。
- ARR
(Auto - Reload Register)是定时器自动重装载寄存器的值。
- 解释:定时器时钟经过预分频器和自动重装载寄存器的分频后得到 LIN 总线的波特率。
2. 帧传输时间计算
LIN 帧由同步间隔段、同步字节、PID(Protected Identifier)、数据字节和校验和字节组成。
- 公式:
其中:
- T_sync是同步间隔段的位数(通常为 13 位)。
- T_PID是 PID 字段的位数(通常为 8 位)。
- T_data是数据字节的总位数(数据字节数×8)。
- T_checksum是校验和字节的位数(通常为 8 位)。
- 解释:根据波特率和各部分的位数可以计算出整个 LIN 帧的传输时间。
SENT(Single Edge Nibble Transmission)协议
1. 周期时间计算
SENT 信号由同步脉冲和多个数据半字节(nibble)组成,一个完整的 SENT 消息周期包括同步脉冲和数据传输时间。
- 公式:
其中:
- T_sync是同步脉冲的时间。
- T_nibble_i是第 i 个数据半字节的传输时间。
- 解释:该公式用于计算一个 SENT 消息周期的总时间,同步脉冲时间和每个数据半字节的传输时间共同决定了整个周期。
2. 数据分辨率计算
SENT 协议的数据分辨率取决于时间测量的精度。
- 公式:
其中 n 是用于表示数据的位数。
- 解释:反映了 SENT 协议能够分辨的最小物理量变化,位数越多,分辨率越高。