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节点设计提供了一种新型实用方案。