CAN(Controller Area Network)即控制器局域网络,是一种全数字化、多主和双向的现场总线。CAN总线数据通信具有很高的可靠性、实时性和灵活性,越来越广泛地应用于各种工业现场。本分布式显示控制系统采用CAN控制器SJA1000实现各节点间远距离串行通信,得到了很好的效果。
主机负责监控各个从机,向从机发布指令,并接收处理从机传来的检测数据。从机执行主机的指令,显示运行信息,向主机传送检测数据。CAN接口电路负责各节点间的串行通信。两只125Ω电阻作为CAN线路的匹配电阻。本文着重介绍CAN总线的设计使用以及点阵显示电路的设计原理,其他功能电路的介绍从略。
CAN总线硬件设计
SJA1000是PHILIPS公司生产的独立CAN通信控制器,SJA1000集成了CAN协议的物理层和数据链路层功能,可完成对通信数据的成帧处理,该控制器具有多主结构、总线访问优先权、硬件滤波等特点。PCA82C250是CAN 协议控制器和物理总线的接口,它可以提供总线的差动发送能力和接收能力,高速应用可达
CAN总线初始化设计
要使SJA1000正常工作,必须先对其作初始化,这是一个重点。对SJA1000的操作是由读写其片内的控制寄存器实现的。待SJA1000硬件复位完成后,单片机就可以初始化SJA1000,初始化程序如下:
这里SJA1000的首地址是0000H。只有SJA1000进入复位工作模式,才可以初始化相应的寄存器。时钟分频寄存器(CDR)设定值为40H,表示选BasicCAN工作模式,忽略CAN输入比较器和不用TX1输出做专用接收中断输出。接收代码寄存器(ACR)和接收屏蔽寄存器(AMR)组成接收过滤器,接收代码位(AC.7-AC.0),接收屏蔽位(AM.7-AM.0)和信息识别码的八位(ID.10-ID.3)满足下述方程,该信息才会被接收:
[(ID.10-ID.3)≡(AC.7-AC.0)] ∨(AM.7-AM.0)≡11111111
总线时序寄存器0(BTR0)可决定波特率预置值和同步跳转宽度的值,BTR0=01H表示波特率设为250Kbps(用16M晶振)。总线时序寄存器1(BTR1)决定位周期宽度,采样点位置和在每个采样点的采样次数。系统中各节点的BTR0、BTR1应设为相同,否则不能互相通信。输出控制寄存器OCR决定了不同输出驱动配置的建立。设置完这些寄存器后,要将SJA1000设为正常工作模式,并按需要使能其相应的中断位。SJA1000中各控制寄存器的详细说明和用法可参考文献1。
CAN总线通信程序设计
各节点间的通信可采用中断方式或查询方式,本控制系统采用中断方式通信。各个节点之间的指令、数据交换通过下面这个子程序模块完成的。
显示电路
各节点的一个重要组成部分是显示电路。作为人机交互界面,显示电路告诉人们系统当前运行信息。
单片机的任务是根据上位主机的命令产生显示数据及控制信号。16行×64列的LED显示点阵由点阵块组成。显示电路采用1/16扫描方式,显示点阵的一行对应一路行选通信号,各行的同一列共用一个列选通信号,这样既满足显示要求,又可以简化电路。行驱动电路主要由74HC163、74HC138、Si4953组成,用以产生行选通信号。74HC163和74HC138构成行译码器,在单片机的控制下,从第一行开始按顺序选通显示点阵各行;Si4953是P沟道MOSFET管,作用是提高行信号的驱动能力。在选通某一行后,该行上各个LED是点亮还是熄灭,由各自的列选通信号决定,其它行的LED则全熄灭。显示电路以这样方法逐行扫描显示点阵,只要整个扫描周期足够快,人们就感觉不到显示闪烁。
驱动电路由74HC595级联组成,前一片74HC595的Q,H引脚连接下一片的SER引脚,各片的SRCLK、SRCLR、RCLK引脚分别并联。单片机的RXD口输出显示数据给第一片74HC595的SER引脚;TXD口发出移位脉冲将串行数据逐位移入74HC595中。在一行数据传输完后,单片机向各个74HC595的SRCLK引脚发一个锁存信号,这行数据就被锁入74HC595的锁存器中,产生对应输入数据的列选通信号。在该行显示期间,同时进行下一行显示数据的传输,这样可以缩短扫描周期。
本文介绍的分布式显示控制系统已应用于电梯控制系统中,其性能稳定、可靠。CAN总线的选用提高了本系统的通信效率和可靠性。CAN总线通信具有可靠性高、通信距离远、速率高、多主结构、错误处理能力强等特点,非常适合分布式系统的串行通信。系统中的显示电路是一个成熟可靠的显示方案,可根据这个
设计原理,设计出各种规格要求的点阵显示屏。