can协议基础(3) -can数据链路层2
can协议基础(3) -can数据链路层2
6 位定时器与同步
6.1位定时
CAN时钟是CAN控制器的工作时钟
CAN时钟的一个周期称为时间份额tQ ,它是CAN控制器工作的最小时间单位
在CAN总线控制器中,BTR0(Bit Timing Register 0)是一个用于配置CAN总线位定时参数的寄存器。BTR0通常包含两个主要字段:
- BRP(Baud Rate Prescaler) :波特率预分频器,用于设置CAN总线的时钟分频。
- SJW(Synchronization Jump Width) :同步跳转宽度,用于调整同步时钟的容忍度。
6.2 波特率
1位时长:若干个tQ组成
- 确定位时间,以便确定波特率(位速率),从而确定总线的网络速度;或在给定总线的网络速度的情况下确定位时间;
- 确定1位的各个组成部分——同步段、传播时间段、相位缓冲器段1和相位缓冲器段2的时间长度,其中同步段用于硬同步,位于相位缓冲器段1终点的采样点用于保证正确地读取总线电平;
- 确定重同步跳转宽度以用于重同步。
波特率=1/位时间
6.3 位时间的组成
(1)一个位时间包含4个功能段,8-25个时间份额组成
(2)为方便编程,许多CAN模块将传播段和相位缓冲段1合并为一个时间段,即只有3个时间段
(3)采样点时刻读取的电平决定该位是“显性”还是“隐性”
同步段—Synchronization Segment
一个位的输出从同步段开始
同步段用于同步总线上的各个节点,正常情况下跳变沿落在此段内
固定长度,1个时间份额
传播段—Propagation Segment
传播段用于补偿信号通过网络和节点传播的物理延迟
传播段长度应能保证2倍的信号在总线的延迟
长度可编程设置
相位缓冲段1和2
允许通过重同步对相位缓冲段1加长和相位缓冲段2缩短的最大长度=SJW(同步跳转宽度)
SJW长度强制设置
6.4 同步
CAN的同步包括硬同步和重同步两种同步方式
同步规则:
- 一个位时间内只允许一种同步方式
- 任何一个“隐性”到“显性”的跳变都可用于同步
- 硬同步发生在SOF的所有接收节点调整各自当前位的同步段,使其位于发送的SOF位内
重同步发生在一个帧的其他位场内,当跳变沿落在了同步段之外 - 在SOF到仲裁场有多个节点同时发送的情况下,发送节点对跳变沿不进行重同步!
同步是由节点自身完成的,节点将检测到来自总线的沿与其自身的位定时相比较,并通过硬同步或重同步适配(调整)位定时。在一般情况下,引起硬同步和重同步发生,来自总线的跳变沿如下图所示。
- 硬同步:
所谓硬同步,就是由节点检测到的,来自总线的沿强迫节点立即确定出其内部位时间的起始位置(同步段的起始时刻)。
硬同步的结果是,沿到来时刻的前一时刻(以时间份额tQ量度),即成为节点内部位时间同步段的起始时刻,并使内部位时间从同步段重新开始。
- 重同步
所谓重同步,就是节点根据沿相位误差的大小调整其内部位时间,以使节点内部位时间与来自总线的报文位流的位时间接近或相等。
作为重同步的结果,PHASE-SEG1可被延长或PHASE-SEG2可被缩短,从而使节点能够正确地接收报文。
重同步一般用于帧的位流发送期间,以补偿各个节点振荡器频率的不一致
7 CAN 控制器
CAN控制器在系统中的位置
- CAN控制器的作用
完成CAN规范所规定的数据链路层功能
遵循CAN2.0A和CAN2.0B规范
通信速率最高1Mbps
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 lbq开发日志!











