引言
CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由研发和生产汽车电子产品着称的德国BOSCH公司开发了的,并终成为国际标准(ISO118?8)。是国际上应用广泛的现场总线之一。 在北美和西欧,CAN总线协议已经成为汽车计算机控制系统和嵌入式工业控制局域网的标准总线,并且拥有以CAN为底层协议专为大型货车和重工机械车辆设计的J1939协议。近年来,其所具有的高可靠性和良好的错误检测能力受到重视,被广泛应用于汽车计算机控制系统和环境温度恶劣、电磁辐射强和振动大的工业环境
新型16位dsPIC30F6014数字信号控制器结合单片机的控制优点及数字信号处理器(DSP)的高速运算特性,为嵌入式系统提供了单一芯片解决方案。
本篇论文以CAN协议为基础,结合dsPIC30F6014的突出性能,在设计通讯接口过程中,提出了基于dsPIC30F6014数字信号控制器的CAN节点设计方法。
1 dsPIC30F6014数字信号控制器与CAN总线
1.1 dsPIC30F6014数字信号控制器特点
dsPIC30F6014数字信号控制器(DSC)是单片嵌入式控制器,它集成了单片机(MCU)的控制功能以及数字信号处理器(DSP)的计算能力和数据吞吐能力,运算速度可达20和30 MIPS,配备自编程闪存,并能在工业级温度和扩展级温度范围内工作。CPU 拥有24 位指令字,指令字带有长度可变的操作码字段。 程序计数器(PC)为24位宽,可以寻址高达4M × 24 位的用户程序存储器空间。 单周期指令预取机制用来帮助维持吞吐量并提供可预测的执行。配备144K字节增强型闪存及8K字节静态RAM,8K字节EEPROM,能支持大型的复杂应用。dsPIC系列产品与现有嵌入式系统不同,系统集成了振荡器,低电压检测,看门狗定时器,产品无需使用额外的元件,可降低主板面积和系统成本,为嵌入式系统提供了单一芯片解决方案。此外还具备一系列片上功能,包括I/O端口、定时器、输入捕捉、输出比较、UART、12位A/D转换器、SPI接口、I2C接口及CAN通信等模块。结构图如图1所示:
这些特性使之成为需要更高度、更快转速或无传感器控制的电机控制应用领域如非传感无刷直流电机、磁阻转换和感应电机的理想解决方案,另外还可以应用于因特网接入设备和汽车产品;生物特徵检测保护--如指纹识别;不间断电源、电源管理和话音开关(话音识别系统)等领域。
1.2 CAN总线的优点
● 具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点;
● 采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作;
● 具有优先权和仲裁功能,多个控制模块通过CAN 控制器挂到CAN-bus 上,形成多主机局部网络;
● 可根据报文的ID决定接收或屏蔽该报文;
● 可靠的错误处理和检错机制;
● 发送的信息遭到破坏后,可自动重发;
● 节点在错误严重的情况下具有自动退出总线的功能;
● 报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。
1.3 CAN总线技术特点
CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率可达1MBPS。具体来说,CAN具有如下特性:
(1) CAN可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活;
(2) CAN可以点对点、点对多点(成组)及全局广播方式传送接收数据;
(3) CAN网络上的节点信息可分成不同的优先级,可以满足不同的实时要求;
(4) CAN采用非破坏性总线仲载技术。当两个节点同时向网络上发送数据时,优先级低的点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据,大大地节省了总线仲载冲突时间,在网络负载很重的情况下也不会出现网络瘫痪;
(5) CAN的直接通信距离可达10km(速率小于5kbps),通信速率可达1Mkbps(此时距离长为40m)。
1.4 CAN总线可靠性
为防止汽车在使用寿命期内由于数据交换错误而对司机造成危险,汽车的安全系统要求数据传输具有较高的安全性。如果数据传输的可靠性足够高,或者残留下来的数据错误足够低的话,这一目标不难实现。从总线系统数据的角度看,可靠性可以理解为,对传输过程产生的数据错误的识别能力。
残余数据错误的概率可以通过对数据传输可靠性的统计测量获得。它描述了传送数据被破坏和这种破坏不能被探测出来的概率。残余数据错误概率必须非常小,使其在系统整个寿命周期内,按平均统计时几乎检测不到。计算残余错误概率要求能够对数据错误进行分类 ,并且数据传输路径可由一模型描述。如果要确定CAN的残余错误概率,我们可将残留错误的概率作为具有80~90位的报文传送时位错误概率的函数,并假定这个系统中有5~10个站,并且错误率为1/1000,那么位错误概率为10—13数量级。例如,CAN网络的数据传输率为1Mbps,如果数据传输能力仅使用50%,那么对于一个工作寿命4000小时、平均报文长度为 80位的系统,所传送的数据总量为9×1010。在系统运行寿命期内,不可检测的传输错误的统计平均小于10—2量级。换句话说,一个系统按每年365天,每天工作8小时,每秒错误率为0. 7计算,那么按统计平均,每1000年才会发生一个不可检测的错误。
2 CAN节点设计
2.1 CAN节点硬件设计
图2所示为CAN总线网络示例。图中给出了三种CAN网络实现方式:微控制器+CAN控制器+CAN收发器;集成CAN控制器的微控制器+CAN收发器;CAN的串行I/O器件+CAN收发器。其中节点1由MICROCHIP公司的dsPIC30F6014集成CAN控制器+MCP2551CAN收发器构成;节点2由MICROCHIP公司的PIC单片机+SPI接口的MCP2550串行CAN控制器+MCP2551CAN收发器构成;PC机的CAN节点由Philips公司的SJA1000CAN控制器+PCA82C250CAN收发器构成。本文的研究和试验结果就是在这一网络框架下完成的。
显然dsPIC30F6014只需加上CAN总线收发电路就可挂接到CAN通信网络上,大大简化了通信系统的设计,同时可减少通信节点受到干扰的概率。CAN模块通过CAN控制器接口芯片MCP2551连接到物理总线上。MCP2551是一个可容错的高速CAN器件,可作为CAN协议控制器和物理总线接口。MCP2551 可为CAN 协议控制器提供差分收发能力,它完全符合ISO-11898标准,包括能满足24V 电压要求。它的工作速率高达1 Mb/s。
2.2 CAN节点软件设计
CAN总线的3层结构模型为: 物理层、数据链路层和应用层。系统的开发主要在应用层软件的设计上,CAN总线节点的软件设计主要包括三大部分:CAN节点初始化、报文发送和报文接收。初始化程序设计对于CAN总线节点的正常工作相当重要。它主要包括工作方式的设置、接收屏蔽寄存器和接收代码寄存器的设置、总线定时器的设置和中断允许寄存器的设置。MICROCHIP公司提为开发者提供了丰富的开发工具和应用程序库,使得开发代码效率大大提高。由于CAN 协议没有规定信息标识符的分配,因此可以根据不同应用使用不同的方法,所以在设计一个基于CAN 的通讯系统时确定CAN 标识符的分配非常重要。标识符的分配和定位也是较高层解决手段的其中一个主要的项目。当前较流行的CAN应用层协议有 CANOpen协议DeviceNet协议。DeviceNet协议适合于工厂自动化控制,CANOpen协议适合于所有机械的嵌入式网络。对于小型网络(图2所示)Modbus 协议是一个不错的解决发案。Modbus 协议是应用于电子控制器上的一种通用语言,通过此协议,控制器相互之间、控制器经由网络(例如以太网)和其它设备之间可以通信。它已经成为一个通用工业标准。有了它不同厂商生产的控制设备可以连成工业网络进行集中监控。 Modbus 协议支持主/从通讯方式同时也支持使用对等技术通讯。因此Modbus协议不仅能够支持RS232、RS485 网络也能够充分发挥CAN-bus 网络的性能与通讯效率。
3 系统应用中应注意的问题
在实际运行中, 经常会遇到CAN总线不通和数据传输过程中丢帧现象,纠其原因主要有以下几方面:
(1)为了进一步提高抗干扰措施, 在CAN控制器和收发器之间应使用由高速隔离器件如6N137 构成的隔离电路,同时采用DC-DC模块将电源隔离,增强抗电磁干扰能力,保护系统电路不受网络影响。
(2) 总线两端的2个120欧姆的电阻, 对于匹配总线阻抗, 起着相当重要的作用。若忽略掉它们,会使数据通信的抗干扰性及可靠性大大降低, 甚至无法通讯。
(3) 在软件设计时, CAN 总线定时器的设置非常关键, CAN 总线上的所有控制器必须有相同的波特率和位长度。如果各个控制器的时钟频率不同,必须通过调节各个段的时间份额数调节波特率。下面是时间段编程的一些要求:
传播段+ 相位缓冲段1> = 相位缓冲段2
相位缓冲段2 > 同步跳转宽度
通常,位的采样应当发生在位时间的60-70% 左右,取决于系统参数。
结语
本文的创新观点在于:详细介绍了dsPIC30F6014数字信号控制器CAN节点实现方案。研究和试验结果表明利用dsPIC30F6014数字信号控制器构成的CAN节点具有许多优良的性能,并能充分发挥节点的功能,为嵌入式系统CAN节点设计提供了一种新型实用方案。
免责声明: 凡注明来源本网的所有作品,均为本网合法拥有版权或有权使用的作品,欢迎转载,注明出处。非本网作品均来自互联网,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。