浅谈CAN总线的位定时参数
1.概述
CAN总线通信中,波特率、位周期内采样次数和采样位置都可以通过编程设置,这些设置为用户根据其应用优化网络通信性能提供了方便。优化位定时参数,能够保证信息同步、通信性能、传输延迟和晶振误差在极端条件下进行恰当的错误检测。
然而系统的有些性能是相互冲突的,例如,在位周期末端部分选择采样点可以使传播延迟有更大的容差,这时总线长度可以更长;如果在位周期的中点附近选择采样点,则系统的每个节点可以有更大的振荡器容差。可以明显地看出振荡器容差和总线长度是互相冲突的,它们只有通过优化位定时参数才能兼备。
本文将通过一个CAN总线控制网络介绍CAN总线位定时参数的基本概念和计算设置方法。该网络采用AT89S52单片机、SJA1000 CAN控制器和PCA82C250总线收发器设计,并应用于楼宇自动化控制系统中,获得了良好的应用效果。
2.CAN总线的位定时关系及相关概念
下面介绍的几个概念中有些与具体的器件有关,本网络中使用的CAN总线控制器件是SJA1000,因此,有关概念也都是针对SJA1000而言的。
振荡器时钟周期tclk tclk是CAN总线控制器外挂晶振频率的倒数,它是CAN总线系统中的最小时间单位。
系统时钟周期tSCL tSCL是系统将tSCL分频后得到的一个时间值,它在时间上就是一个时间份额TQ,分频数由SJA1000的波特率预设值(BRP)决定。tSCL可由下式来计算:tSCL=2×tclk×BRP (1)
位周期tBit位周期是一位数据在总线上的持续时间。使用Philips公司的独立CAN控制器,一个位周期由3个部分组成:同步段( tSYNC_SEG)、相位缓冲段1(tTSEG1)和相位缓冲段2( tTseg2)。如下式所示:tBit=tSYNC_SEG+tTSEG1+tTSEG2 (2)
CAN位定时控制寄存器BTR0和BTR1 SJA1000的地址6(BTR0)和地址7(BTR1)是位定时控制寄存器。
BTR0的高两位决定了同步跳转宽度的大小,低六位决定波特率预设值; BTR1的最高位决定了总线采样模式,低七位决定了TSEG1和TSEG2的大小。
- Windows CE 进程、线程和内存管理(11-09)
- RedHatLinux新手入门教程(5)(11-12)
- uClinux介绍(11-09)
- openwebmailV1.60安装教学(11-12)
- Linux嵌入式系统开发平台选型探讨(11-09)
- Windows CE 进程、线程和内存管理(二)(11-09)