基于dsPIC30F6014的CAN节点设计
引言
CAN,全称为“Controller Area Network”,即控制器局域网,是国际上应用最广泛的现场总线之一。作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式,CAN-bus已被广泛应用到各个自动化控制系统中,具有不可比拟的优越性。
新型16位dsPIC30F6014数字信号控制器结合单片机的控制优点及数字信号处理器(DSP)的高速运算特性,为嵌入式系统提供了单一芯片解决方案。
本篇论文以CAN协议为基础,结合dsPIC30F6014的突出性能,在设计通讯接口过程中,提出了基于dsPIC30F6014数字信号控制器的CAN节点设计方法。
1 dsPIC30F6014数字信号控制器与CAN总线
1.1 dsPIC30F6014数字信号控制器特点
dsPIC30F6014数字信号控制器(DSC)是单片嵌入式控制器,它集成了单片机(MCU)的控制功能以及数字信号处理器(DSP)的计算能力和数据吞吐能力,运算速度可达20和30 MIPS,配备自编程闪存,并能在工业级温度和扩展级温度范围内工作。以16位单片机为核心的 dsPIC30F6014数字信号控制器不仅具有功能强大的外围设备和快速中断处理能力,又融合了可管理高速计算活动的数字信号处理器功能。dsPIC30F CPU 模块采用16 位(数据)改良的哈佛架构,并带有增强型指令集包含对DSP 的有力支持。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是主要用于各种过程(设备)监测及控制的一种网络。最初是德国BOSCH公司为汽车的监测、控制系统而设计的。由于CAN具有卓越的特性和极高的可靠性,特别适合于工业过程中监控设备的互连,因此,越来越受到工业界的重视。具体来说,CAN具有如下特性:
(1) CAN可以多主方式工作,网络上任意一个节点均可以在任意时刻主动地向网络上的其他节点发送信息,而不分主从,通信方式灵活;
(2) CAN可以点对点、点对多点(成组)及全局广播方式传送接收数据;
(3) CAN网络上的节点信息可分成不同的优先级,可以满足不同的实时要求;
(4) CAN采用非破坏性总线仲载技术。当两个节点同时向网络上发送数据时,优先级低的点主动停止数据发送,而优先级高的节点可不受影响地继续传输数据,大大地节省了总线仲载冲突时间,在网络负载很重的情况下也不会出现网络瘫痪;
(5) CAN的直接通信距离最大可达10km(速率小于5kbps),最高通信速率可达1Mkbps(此时距离最长为40m)。
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节点设计提供了一种新型实用方案。
评论