其中SJA1000的数据帧格式为:

利用TL16C554和SJA1000芯片实现4路UART总线与CAN总线的通讯设计

2、系统设计

系统总体电路图如图1所示,主要有3个部分组成,UART模块、CAN模块和微控制处理器。UART模块采用TI公司的TL16C554,它是一个4路通用异步收发器,每路均能从外围设备或MODEM接收串行数据,实现串一并转换;同时,它也可以从CPU端接收数据,实现并一串转换。

利用TL16C554和SJA1000芯片实现4路UART总线与CAN总线的通讯设计

CAN模块采用PHILIPS公司的SJA1000,它是一种独立的CAN控制器兼容CAN2.0A和CAN2.0B两种技术规范。微控制器采用8位单片机AT89S 51,主要对UART模块和CAN模块进行初始化控制,并产生串行数据输送给UART模块。

2.1 UART模块通讯设计

UART模块通讯设计主要利用单片机控制4路异步收发器TL16C554。单片机首先通过数据线D7~D0、地址线A2~A0初始化TL16C554,配置好串行传输波特率、字符格式以及中断控制信号等寄存器,并通过4路通道的片选信号CSA,CSB,CSC和CSD选通其中的一路。利用单片机自身的串行接口发送串行数据,送入TL16C554,UART模块接收到串行数据后,将其转换成并行数据存入FIFO中,并通知单片机数据转换完成,单片机从UART模块的FIFO中读取数据,并准备好发送给CAN模块。通讯流程图如图2所示。

利用TL16C554和SJA1000芯片实现4路UART总线与CAN总线的通讯设计

如果要实现多路UART总线与CAN总线通讯,利用通道各自的片选信号进行控制,在一路通道转换结束后再进行选通另一路通道,相互之间必须进行分时操作,协调处理。

2.2 CAN模块通讯设计

CAN模块通讯设计主要利用单片机控制SJA1000控制器。单片机首选通过地址数据复用线AD7~AD0对SJA1000进行初始化设置,包括时钟分频寄存器、输出控制寄存器、总线定时寄存器和验收滤波器等,通过这些寄存器可以设置选择工作模式为BasicCAN或是PeliCAN,CLKOUT引脚的频率、以及通信波特率等。设置好寄存器,就等待单片机将从UART模块读取的数据发送给SJA1000的发送缓冲器,CAN模块将这些数据转换成CAN总线形式并通过收发器发送到网络节点中去。通讯流程图如图3所示。