CANbus -----bit timing & synchronize mechanism
来源:互联网 发布:80c51单片机引脚图 编辑:程序博客网 时间:2024/06/03 15:24
Abstract
Recently,Some work about CANbus test has been done ,during this time,I learned some details about the synchronize mechanism, so make a note.
bit timing
The nominal bit time (NBT) consists of 4 segment durations, all of these is an integer multiple of a unit of time
the clock which generated
SYNC_SEG 同步段
占1
PROG_SEG 传播段
该段的存在是因为CAN协议允许非破坏性仲裁机制下节点对总线访问的竞争,在非破坏性仲裁的情况下,仲裁区存在不只一个节点执行发送,每个发送节点采样总线电平判定其是否获取对总线的访问仲裁,如果仲裁失败则也接收仲裁区的值。当每个节点采样每1bit的值时,被采样的值必须保证是所有请求总线访问的仲裁节点传输的逻辑电平的叠加,该段存在就是为了延时最先采样到1bit电平的节点直到这1bit值被所有的节点所接收。
PHASE_SEG 相位段
PHASE_SEG1结束的时候进行数据采样。PHASE_SEG2=MAX(IPT,PAHSE_SEG1),
对于TOUCAN module IPT = 3 (BPR = 1的情况下),MCAN module IPT = 3(配置为1bit采样3次)
synchronize
为了消除CAN总线传输的相位误差,CAN控制器上有两种同步机制分,硬同步(hard synchronization)和重同步(re-synchronization)
硬同步
硬同步只发生在传输一帧的开始,当接收到一帧数据的sof位时,所有的CAN节点认为sof位中隐式电平到显式电平的跳变沿就是1bit的SYNC_SEG,并以此为基准采样接下来电平。
重同步
重同步发生在一帧数据中除了sof位接下来发生隐式电平到显式电平的跳变沿的时候。没有延时的情况下所有的电平转换被期望只能在接收节点的SYNC_SEG段内被接收节点所捕捉。但当隐式电平到显式电平的跳变沿不在SYNC_SEG时则进行重同步。如果隐式电平到显式电平的跳变沿在SYNC_SEG段之后但在采样点之前,说明这是一个滞后边沿,接收节点将会增加当前位时序中的PHASE_SEG1段的长度;如果隐式电平到显式电平的跳变沿在采样点之后且在下一个bit的SYNC_SEG段之前,说明这是一个超前电平,则会减少当前位时序中PHASE_SEG2段的长度;且这两种调整操作的最大调整量不超过寄存器中设置的RJW值的大小。最小的RJW为1
容错计算
定义晶振容错:
数据帧中相位差最大的情况为10bit的相位累积,往往出现在5位显式电平后又有5位隐式电平(或反之),这段时间内累积的相位差必须要小于RJW的调整时间,才能正确的同步,因此有容错条件(1):
实际系统是运行在可能导致CAN总线错误的噪声环境中,当某一节点遇到到错误时,将会向CANbus上发送错误帧(error flag),当出现局部错误时,只有错误节点发送错误帧,其他节点则会在接收到错误帧发送自己的错误标志作为回应。如果出现全局错误,所有节点会同时发送错误帧,因此几点需要正确的接收到错误帧后的回应才能判断错误是局部错误还是全局错误,这需要节点必须正确的采样到error flag后的的第一个bit的电平。
来自于错误节点的error flag 由6个显式电平电平,在error flag 之前也可能存在6个显式电平,例如填充错误,所以节点必须正确采样到第13个bit的电平。这里存在容错条件(2):
- CANbus -----bit timing & synchronize mechanism
- Smart Timing Mechanism
- timing
- Canbus通信协议
- synchronize
- eCAN总线模块的位时间(Bit-Timing)配置
- CanBus基础二
- Linux Canbus调试笔记
- Timing Aspects
- Animation Timing
- Animation Timing
- Timing wheel
- Timing相关
- synchronize函数
- java synchronize
- Synchronize函数
- 加锁 synchronize
- synchronize java
- leetcode:Longest Common Prefix 【Java】
- python_string常用函数用法小结
- C++ 初识Windows消息
- 侧拉菜单Android动画
- 别傻了,人家离职你也离
- CANbus -----bit timing & synchronize mechanism
- OpenGL+VS2010+Win7配置简记
- View的位置参数及触摸事件
- 使用ShareSDK进行第三方(登录,分享)
- FlatBuffers学习笔记二
- CALayer和UIView的区别
- 设计模式(一)
- vs2010中编译配置jsoncpp
- javascript