学习笔记
CAN位时序
一位电平信号分解为8~25 个 Tq 组成(参考下图)
内部又细分为四个段:
- 同步段(SS)
- 传播时间段(PTS)
- 相位缓冲段1(PBS1)
- 相位缓冲段2(PBS2)
在stm32中传播时间段与相位缓冲段1合并为一个时间段,则原来的4个时序段,变为3个时序段,分别为:
- 同步段(SS)
- 时间段1(BS1)
- 时间段2(BS2)
时钟同步
1、硬同步(平移自身位时序)
仅发生在一帧报文的帧起始位处,对于该报文后续数据位的同步,则采用重同步。
2、重同步(延长时间段1或者缩短时间段2)
1)位时序超前
在一帧报文后续数据位的传输过程中,若跳变沿位于接收节点CAN控制器当前位时序的时间段1内,则其判定这是一个慢速的CAN控制器发送的当前数据位的滞后跳变沿,自身的位时序出现了相对的超前现象。
此时,会延长自身当前位时序时间段1的长度,重新获得同步。
2)位时序滞后
在一帧报文后续数据位的传输过程中,若跳变沿位于接收节点CAN控制器当前位时序的时间段2内,则其判定这是一个快速的CAN控制器发送的当前数据位的超前跳变沿,自身的位时序出现了相对的滞后现象。
此时,会缩短自身当前位时序时间段2的长度,重新获得同步。
SJW (reSynchronization Jump Width):重新同步补偿宽度,即在重新同步的时候,PBS1 和 PBS2 段的允许加长或缩短的时间长度,SJW 加大后允许误差加大,但通信速度下降。SJW 为补偿此误差的最大值(即每一次误差补偿都不能超过这个值,1~4Tq)。
采样点
采样点数量可配置为1和3:
1:一个位时序的时间段1与时间段2个交界点处
3:分别为一个时序的时间段1与时间段2个交界点处、交界点往前1个Tq处、交界点往前2个Tq处
采样点通常用百分比表示,其计算公式为:[(Tbit - Tbs2 )/ Tbit ] × 100% 。
Tbit = Tss + Tbs1 + Tbs2
波特率
1 /(N × Tq)= f /(N × BRP)
f:时钟频率
BRP:预分频系数
CAN的一般挂载在APB1总线上,时钟频率为板载时钟频率/2。
参考文章:
帧的种类
- 数据帧
- 遥控帧
- 错误帧
- 过载帧
- 帧间隔
位填充
CAN协议中规定,当相同极性的电平持续五位时,则添加一个极性相反的位。
错误
主动错误状态发送连续6个显性位,被动错误状态发送连续6个隐性位;
补充
CAN总线有回读机制,发送节点在向总线上发送报文的过程中,同时也对总线上的二进制位进行“回读”,节点就可以判断出本节点发出的二进制位与总线上当前的二进制位是否一致。