本文框架
- 1.前言
- 2. 位时间
- 2.1 位时间定义
- 2.2 位时间计算
- 3. Tq
- 3.1 Tq的计算
- 3.1.1 举个例子
- 3.2 位时间与Tq的换算
- 4. 采样点同步
- 4.1 硬同步
- 4.2 重同步
- 4.2.1 延长PBS1的重同步
- 4.2.2 缩短PBS2的重同步
1.前言
本篇记录些关于CAN的一些学习笔记,说实话CAN协议发展的已经非常成熟了,网上关于CAN通信的分享非常多,很多文章讲得而比较好,自己总结的这篇不是枯燥的理论,会结合具体的例子进行计算,相对于新手会更容易理解些,言归正传,下面进入正题。
2. 位时间
2.1 位时间定义
由发送单元在非同步的情况下每秒钟发送的位数称为位速率,即一个二进制位在总线上传输所需要的时间。
位时间的组成包括四个部分:同步段、传播段、相位缓冲段1及相位缓冲段2四部分组成,其排列顺序示例如下:
同步段(SS: Synchronization Segment):每个位的传输从同步段开始,用于同步各节点,同步进行接收和发送的工作。
长度对应1个Tq
传播段(PTS: Propagation Time Segment):用于吸收网络上的物理延迟的段。
所谓的网络的物理延迟指发送单元的输出延迟、总线上信号的传播延迟、接收单元的输入延迟,这个段的时间为以上各延迟时间的和的两倍。
其长度对应1~8个Tq,
相位缓冲段1:同步过程中可以对TSEG1进行延长,此外为方便编程,许多CAN模块将传播段及TSEG1合并为一段。
最小为3个Tq
相位缓冲段2:同步过程中可以对TSEG2进行缩短。
最小为2个Tq
2.2 位时间计算
在计算位时间前,需要知道波特率,虽然波特率与比特率在定义上有所区别,但对于CAN总线上的传输而言可以认为其数值是一样的,即(1/波特率)为传输一个Bit所需的时间,
举个栗子:
对于传输速率为500KBaud标准CAN而言,其位时间即为1/500kbaud = 2us/Bit
3. Tq
即Time Quantum,时间量子,或者一个时间份额。
3.1 Tq的计算
涉及到CAN的时钟频率及波特率分频系数(BRP)
Tq=BRP/fCAN
3.1.1 举个例子
对于fCAN=100MHz,BRP=10的case,
Tq=10/100 us=0.1us
3.2 位时间与Tq的换算
一个位时间由多个Tq组成,根据标准规定一个位时间最小由8个Tq组成。
举个栗子:
传输速率为500KBaud标准CAN,且fCAN=100MHz,BRP=10的case,换算如下:
位时间 = 1/500k = 2us/Bit
Tq = 10/100 us=0.1us
位时间/Tq=20,即每个Bit由20个Tq组成。
4. 采样点同步
所谓采样点是读取总线电平,并将读到的电平作为位值的点,其位置在相位缓冲段1结束处。
在实际通信过程中,由于发送单元和接收单元存在的时钟频率误差及传输路径上的(电缆、驱动器等)相位延迟会引起同步偏差,为保证报文接收节点能在正确的采样点采集到准确的电平就需要重新进行同步,同步的方式有两种:硬同步及再同步。
4.1 硬同步
硬同步:接收单元在总线空闲状态检测出帧起始时进行的同步调整,在检测出边沿的地方不考虑 SJW 的值而认为是 SS 段,直接同步到SS位,其示意如下:
4.2 重同步
检测到下降沿后通过对自身相位缓冲段进行延长或者缩短而实现的同步,延长或缩短的最大范围受SJW(再同步补偿宽度)的限制,该变量定义了重同步的最大Tq,
SJW必须满足的两个条件:
SJW不得大于PBS1和PBS2的最小值;
2)SJW最大不能超过4
4.2.1 延长PBS1的重同步
适用情况:隐性电平到显性电平的边沿出现在PTS和BPS1间即发的比收的慢,延时等一等。
举个例子,当SJW=2,在PTS段检测到下降沿,较发送节点早了两个Tq,此时通过延长PBS1段2个Tq,此时采样点经过补偿后刚好与发送节点相同。
4.2.2 缩短PBS2的重同步
适用情况:隐性电平到显性电平的边沿出现在BPS2,即发的比收的快,这个周期赶不上了,下个周期追回来。。