1、简介 CAN总线由德国BOSCH公司开发,最高速率可达到1Mbps。CAN的容错能力特别强,CAN控制器内建了强大的检错和处理机制。 另外,不同于传统的网络(如USB或者以太网),CAN节点与节点之间不会传输大数据块,一帧CAN消息最多传输8字节用户数据,采用短数据包也可以使得系统获得更好的稳定性。CAN总线具有总线仲裁机制,可以组建多主系统。 2、CAN标准 CAN是一个由国际化标准组织定义的串行通讯总线。最初是用于汽车工业,使用两根信号总线代替汽车内复杂的走线。CAN总线具有高抗干扰性、自诊断和数据侦错功能,这些特性使得CAN总线在各种工业场合广泛使用,包括楼宇自动化、医疗和制造业。
ISO-11898:2003标准,带有11位标识符,提供的最高信号速率从125Kbps到1Mbps。更迟一些的修订标准使用了扩展的29位标识符。标准11位标识符位域参见图3-1,提供2048个不同的报文标识符,扩展29位标识符位域参见图3-2,提供537百万个不同报文标识符。 图3-1:标准CAN---11位标识符 · SOF - 帧起始,显性(逻辑0)表示报文的开始,并用于同步总线上的节点。 · 标识符 - 标准CAN具有11位标识符,用来确定报文的优先级。此域的数值越小,优先级越高。 · RTR - 远程发送请求位,当需要从另一个节点请求信息时,此位为显性(逻辑0)。所有节点都能接收这个请求,但是帧标识符确定被指定的节点。响应数据帧同样被所有节点接收,可以被有兴趣的节点使用。 · IDE - 标识符扩展位为显性时表示这是一个标准CAN格式,为隐形表示这是扩展CAN格式。 · r0 - 保留位(可能将来标准修订会使用) · DLC - 4位数据长度代码表示传输数据的字节数目,一帧CAN最多传输8字节用户数据 · 数据0~8 – 最多可以传输8字节用户数据 · CRC - 16位(包括1位定界符)CRC校验码用来校验用户数据区之前的(包含数据区)传输数据段。 · ACK - 2位,包含应答位和应答界定符。发送节点的报文帧中,ACK两位是隐性位,当接收器正确地接收到有效的报文,接收器会在应答位期间向发送节点发送一个显性位,表示应答。如果接收器发现这帧数据有错误,则不向发送节点发送ACK应答,发送节点会稍后重传这帧数据。 · EOF – 7位帧结束标志位,全部为隐性位。如果这7位出现显性位,则会引起填充错误。 · IFS – 7位帧间隔标志位,CAN控制器将接收到的帧正确的放入消息缓冲区是需要一定时间的,帧间隔可以提供这个时间。 · SRR – 代替远程请求位,为隐性。所以当标准帧与扩展帧发送相互冲突并且扩展帧的基本标识符与标准帧的标识符相同时,标准帧优先级高于扩展帧。 · IDE – 为隐性位表示标志位扩展帧,18位扩展标识符紧跟着IDE位。 · r1 – 保留 如果多个节点同时访问总线,CAN使用非破坏式、逐位仲裁的方式决定哪个节点使用总线:各发送节点从仲裁域(标识符和RTR域)的第1位开始进行仲裁,连续输出显性电平(0)最多的节点可以继续发送。 数据帧或远程帧的剩余位域(CRC界定符、应答域和帧结尾域)形式固定,不填充。错误帧和过载帧也不填充。 CAN网络同步需要足够多的上升沿,这是CAN协议规定位填充的目的之一。位填充的其它作用:确保数据帧不会被当作错误帧(由6个连续的显性或隐性位组成)、确保正确识别帧结束标志(7个连续隐性位)。 报文层的错误检测包括CRC和ACK。16位的CRC域包含15位校验和、1位界定符。ACK域包括1位应答位、1位界定符。 CRC校验错误很好理解,它对数据域以及数据域之前的位生产CRC校验。由于一帧CAN报文数据流很小(最多8个用户数据),所以15位CRC的侦错能力非常优秀。 那么,ACK域是怎么起作用的呢?这是由CAN协议规定的,即发送节点发送一帧数据后,接收节点必须向发送节点应答,如果发送节点没有收到接收节点的应答信号,就会认为自己发送失败,从而重传数据。 报文层的第三种错误检查方法是格式检查。这种检查会监控报文中那些一定为隐性位的域,如果这些域中出现显性位,则检测到格式错误。这些域包括SOF、EOF、ACK的界定符和CRC的界定符。 位流层的错误检测之一是发送到总线上的每一个数据位,都会被监视,如果发现发送的位和总线上的位不相同时,产生位错误。这种监视机制并不会监视仲裁域的位,这是因为多个节点同时竞争总线时,优先级高的节点可能会覆写总线上的仲裁域位。 位流层的另外一个错误检测机制是位填充规则:5个连续相同逻辑位之后,如果第6个位的逻辑还和前五个相同,则产生位填充错误。 高速ISO 11898标准规定了CAN传输最高速率为1Mbps,在这个速率下,传输距离最长40米(挂接30个节点,CAN信号不隔离)。推荐节点分支长度最大为0.3米、推荐使用带屏蔽或不带屏蔽的双绞线,线缆特性阻抗为120欧姆。 由于CAN收发器结构,从隐性变成显性由晶体管驱动,所以都是很陡的,但是从显性回到隐性,却需要终端电阻来放电,否则就会由于导线分布电容,缓慢放电,导致位宽错误。所以所谓的近距离、低波特率CAN总线不加终端电阻的做法,都是错误的。 RS485与CAN总线不同,由于RS485收发器中一般都内置失效保护电路,在近距离、低波特率下允许不加终端匹配电阻。 图9-11列出带单屏蔽层的CAN电缆剖析与连接线示范。 一般而言,电缆供应商会提供信号衰减图表。图9-2所示的曲线显示了24-AWG电缆衰减和频率的关系: 如图11-1所示,1号节点与2号节点相隔5km,使用的传输电缆直流电阻12.8欧姆/km,终端匹配电阻为124欧姆。1号节点发送的波形差分电压幅值为2V,经过5km传输电缆到2号节点时,差分电压幅值大约为1V,信号衰减了一半! 为了保证可靠的数据通讯,一个有用的经验法则是:最末端节点差分电压幅值不小于1.2V。 需要注意的是,图中故意忽略了分布电容和分布电感的影响,因此传输的波形没有畸变。 表11-1:截面积与最大通讯距离关系 图12-1给出了截面积为1.5mm2传输电缆,在不同波特率和终端匹配电阻下的最大通讯距离。其中当波特率为1Mbps时,通讯距离大约为30米。30米的通讯电缆,其传输损耗可以忽略不计,此时影响通讯距离的主要是信号延迟。 通常,传输电缆延时为5ns/m、高速光耦延时可达25ns、磁耦合隔离器件延迟3~5ns。在CAN通讯系统中,一个优良的延迟标准是: 以1Mbps为例,其位时间为1us,则tl_MAX < 0.245 × tBIT = 0.245 × 1us = 245ns。信号在1.5mm2传输电缆上传输49米就能达到这个延迟时间。另外,再加上信号上升/下降沿时间以及隔离器件、ESD器件、PCB走线延时,实际项目中,1Mbps波特率在1.5mm2传输电缆上只能传输30米。 这也是为什么RS485波特率可以达到10Mbps甚至50Mbps,而CAN标准最大速率只有1Mbps的原因。 表13-1给出了判定延迟的参考标准,在实际项目中,推荐信号延迟处于良好一栏标准。 表13-1:最大延迟参考标准 空载情况下,传输电缆的特性阻抗近似为Z=√(L/C),其中L为电缆单位长度感抗,C为电缆单位长度电容。随着负载的增加,传输线上的电容增加(负载电容、负载与总线连接线电容),传输电缆特性阻抗相比空载情况下变小。如果负载比较集中,则负载区传输电缆特性阻抗和空闲区电缆特性阻抗相差较大,从而会引起阻抗不匹配。如图14-1所示。 3.3V的CAN收发器一般能达到16pF电容,具体可以参考收发器数据手册;印制板走线一般0.5pF~0.8pF/cm,这取决于电路板的材质和结构;连接器和保护装置(比如ESD器件)的电容值可能范围会很大,具体要参考设备数据手册;非屏蔽双绞线介质的分布电容大约在40pF/m~70pF/m。 图14-2给出了更明了的图表显示: 采样点略靠后,比如80~90%,有利于远距离传输。提高节点波特率寄存器中的同步跳转宽度SJW值(加大到3个单位时间),可以加大位宽度和采样点的容忍度。 CAN标准对节点容抗有严格定义,容抗影响上升沿下降沿斜率,节点容抗增大,上升沿和下降沿会变缓,导致位时间畸变,误码率增加。上升沿和下降沿变缓会使得信号延迟变大,在高波特率下,影响信号传输质量和通讯距离。 节点容抗不易测量,需要专门仪器。在电路设计时,要对结合数据手册中给出的典型值,对CAN接口电路使用的器件总电容值进行估算。对于高波特率情况下,单节点电容推荐<100pF,多节点电容推荐值见表17-1所示。低波特率应用可以放宽要求。 表17-1:单节点电容最大值 在上式中,收发器差动输入阻抗最小值(Rdiff_min)和收发器可驱动的负载阻抗最小值(RL_min)由收发器芯片决定,终端匹配电阻最小值(RT_min)由传输电缆特性阻抗以及具体应用决定。 以本公司使用的PCA82C251收发器为例,其收发器差动输入阻抗最小值Rdiff_min = 20K欧姆,收发器可驱动的负载阻抗最小值RL_min = 45欧姆,假设终端匹配电阻最小值RT_min = 120欧姆,则最大节点数量为112个。 目前的CAN收发器都可以容忍一定的共模电压,ISO 11898标准规定,CAN收发器必须能容忍-2V~7V的共模电压。对于长达数千米的CAN通讯系统来说,标准规定的共模电压容忍能力远远达不到实际要求。因此,电流隔离对于远距离数据传输系统来说仍是必须的。 热关断电路用于帮助CAN收发器防御因短路产生破坏性电流和高温。一旦激活热关断电路,设备会进入关断模式。当设备冷却到正常操作温度时,设备自动恢复运行。 本公司使用的PCA82C251收发器具有短路保护和热关断保护。短路保护允许总线与24V电源短接。 解决这些问题的一个方法是使用电流隔离:隔离变压器为系统提供电源,光耦或数字隔离器件提供数据隔离。电流隔离可以去除地环流,抑制噪声电压。采用电流隔离的电路如图21-1所示,本公司CAN接口电路也采用了电流隔离处理。 CAN总线对信号延迟敏感,因此信号隔离必须使用高速光耦或者磁耦合器件,以减少信号延迟。公司大量使用的TLP521光耦因为延迟时间过大(微秒级)不可以用于CAN接口电路。 CAN总线对电容敏感,在设计CAN接口电路时,需要使用CAN专用共模电感、专业ESD器件;需要根据应用的最大波特率和通讯距离,来决定是否在CAN总线上增加滤波电容以及滤波电容的大小。 |
|
来自: yeshuheng > 《CAN、OBD、诊断知识》