Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1034656
  • 博文数量: 178
  • 博客积分: 10222
  • 博客等级: 上将
  • 技术积分: 2215
  • 用 户 组: 普通用户
  • 注册时间: 2008-01-03 11:27
个人简介

有所追求

文章分类

全部博文(178)

文章存档

2012年(1)

2011年(5)

2010年(3)

2009年(78)

2008年(91)

我的朋友

分类: 嵌入式

2009-08-04 13:42:35

     这两天研究了一下CAN总线的位同步机制~~~总结一下
     所谓同步,就是接收端要按照发送端发送每个码元的起止时刻和速率来接收数据。通常采用的同步方式有:异步方式和同步方式。在通信时接受端要校准自己的实践和重复频率,以便和发送端取得一致,这一过程就称为同步过程。通信时传输的同步方式分为两种:同步方式、异步方式。
     同步式依赖两台设备间协调的时间表来分开位组,并将它们以被称作帧的信息块传输。异步式又称起止同步方式,并不要求每一bit位都要严格时钟同步,而设置了起始位和终止位。
     帧传送:在总线上传输的报文以帧结构进行传输。报文传送由4种不同类型的帧来表示和控制:数据帧、远程帧、出错帧和超载帧。以数据帧为例:数据帧携带数据由发送器至接收器,由7个不同的位场组成,分别是帧起始、仲裁场、控制场、数据场、CRC场、应答场以及帧结束。 位定时:CAN总线节点可独立进行位定时的参数设置,这样即使网络中节点之间的晶振时钟周期不一样仍可获得相同的位速率。 网络中晶振的频率不是绝对稳定的,温度、电压以及器件的异常都会导致微小的差别,但要将其稳定在振荡器容差范围之内,所以总线上的节点需要通过位同步进行弥补。
     CAN总线位同步的实现:CAN总线的位同步只有在节点检测到“隐性位”(逻辑1)到“显性位”(逻辑0)的跳变时才会产生,当跳变沿不位于位周期的同步段之内时将会产生相位误差。该相位误差就是跳变沿与同步段结束位置之间的距离。如果跳变沿发生在同步段之后采样点之前为正的相位误差;如果跳变沿位于同步段之前采样点之后为负的相位误差。相位误差源于节点的振荡器漂移,网络节点之间的传播延迟以及噪声干扰等。CAN协议规定了两种类型的同步:硬同步和重同步。 硬同步:只在总线空闲时通过一个下降沿(帧起始)来完成,此时不管有没有相位误差,所有节点的位时间重新开始。强迫引起硬同步的跳变沿位于重新开始的位时间的同步段之内。 重同步:在消息帧的随后位中,每当有从“隐性位”到“显性位”的跳变,并且该跳变落在了同步段之外,就会引起一次重同步。重同步机制可以根据跳变沿增长或者缩短位时间以调整采样点的位置,保证正确采样。
     在实际的系统设计中,用户可以根据振荡器时钟频率,总线波特率以及总线的最大传输距离等因素,对CAN控制器的位定时参数进行优化设置,协调影响位定时设置的两个主要因素:振荡器容差和最大总线长度,合理安排位周期中采样点的位置和采样次数,保证总线上位流的有效同步的同时,优化系统的通讯性能,进一步推进CAN总线的广泛应用。

阅读(3558) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~