这些数据格式主要通过电路的线控制寄存器来进行控制,其中起始位为低电平“0”;数据位长度可选择5~8位;奇偶校验位可选择为奇校验、偶校验或无校验;停止位可选择1位、2位或1/2位。
CAN模块采用一种独立的CAN控制器SJA1000,主要用于移动目标和一般工业环境中的区域网络控制,是PHILIPS公司半导体PCA82C200CAN控制器的替代产品。SJA1000具有BasicCAN和PeliCAN 2种工作方式。BasicCAN模式是上电后默认的操作模式,而PeliCAN模式是新的操作模式,它能够处理所有CAN2.0B规范的帧类型,而且它还提供一些增强功能,使SJA1000能应用于更宽的领域。
其中SJA1000的数据帧格式为:
[page]
2 系统设计
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所示。
如果要实现多路UART总线与CAN总线通讯,利用通道各自的片选信号进行控制,在一路通道转换结束后再进行选通另一路通道,相互之间必须进行分时操作,协调处理。
[page]
2.2 CAN模块通讯设计
CAN模块通讯设计主要利用单片机控制SJA1000控制器。单片机首选通过地址数据复用线AD7~AD0对SJA1000进行初始化设置,包括时钟分频寄存器、输出控制寄存器、总线定时寄存器和验收滤波器等,通过这些寄存器可以设置选择工作模式为BasicCAN或是PeliCAN,CLKOUT引脚的频率、以及通信波特率等。设置好寄存器,就等待单片机将从UART模块读取的数据发送给SJA1000的发送缓冲器,CAN模块将这些数据转换成CAN总线形式并通过收发器发送到网络节点中去。通讯流程图如图3所示。
[page]
2.3 通讯过程
系统通讯电路图如图1所示,为了能实现UART与CAN之间的相互通讯,采用2个图1所示的电路图,将CAN收发器的CANH,CANL连接在一起,形成2个CAN节点,如图4所示。这样就能实现UART→CAN→CAN→UART的通讯过程。在节点1中,单片机首先发送8个串行数据55,56,…,5B.5C(16进制)送给TL16C554的串行通道,UART模块接收到串行数据后由SJA1000转换成CAN总线数据A1,A2,A3,A0,08,55,56,…,5C,65,61(16进制),其中A1,A2,A3,A0,08为PeliCAN模式下的识别码和帧信息,65,61为CRC校验码。转换成CAN总线后通过CANH、CANL将数据送入节点2的CAN模块,SJA1000接收到数据后由TL16C554转换成串行数据88,A1,A2,A3,A0,55,56,…,5B,5C(16进制)发送出去,其中88,A1,A2,A3,A0为帧信息和识别码。示波器采集的通讯波形图如图5所示。
为了能使转换结果更清楚的显示,将TL16C554的TXA通过RS 232串行数据线连接到PC机,硬件连接如图6所示。这样最终转换的UART数据就可以通过PC机显示出来,结果如图7所示。
3 结语
本文设计了一个多路UART总线与CAN总线进行相互通讯的转换系统,从测试结果来看,该没计系统完全可以实现两者间的透明转换。利用CAN总线传输距离长、通讯灵活等优点,该系统可以有效的延长UART串行总线的通讯距离、提高传输速率,大大方便了具有UART接口的设备进行远距离、多节点传输。
『本文转载自网络,版权归原作者所有,如有侵权请联系删除』