APP下载

基于MC9S12XS128单片机的CAN总线通信节点设计

2019-06-05王维斌湖南汽车工程职业学院湖南株洲412001

通信电源技术 2019年5期
关键词:收发器缓冲区总线

王维斌(湖南汽车工程职业学院,湖南 株洲 412001)

0 引 言

CAN是Controller Area Network(控制器局域网)的缩写,属于现场总线,是一种支持分布式控制、实时控制的串行通信总线协议,采用短报文帧及CSMA/CD-AMP(带有信息优先权及冲突检测的载波监听多路访问)的MAC(媒介访问控制)方式[1]。CAN节点是CAN总线网络中的一个单元,能通过CAN总线与其他各个节点之间实现通信,降低控制系统的复杂程序,当前主要用于汽车电子控制系统中的各传感器之间以及各控制模块之间的通信。CAN总线节点一般由单片机、CAN控制器以及CAN收发器三部分组成,如图1所示。

图1 CAN总线节点的组成

1 系统方案设计

设计中采用MC9S12系列单片机作为主控芯片,内部集成了MSCAN模块,能够满足CAN2.0A和CAN2.0B协议标准,是当前汽车控制器中最流行的CAN控制器架构。CAN收发器是CAN控制器和物理总线之间的接口,用于实现CAN控制器与CAN总线之间差分信号和二进制码流的相互转换,是CAN总线网络中必不可少的组成部分。本设计中采用专用CAN收发器芯片TJA1040。它是NXP公司推出的针对汽车电子行业使用的高性能CAN收发器。此外,系统中还包括电源部分、显示部分和按键控制等其他部分电路。

2 硬件电路设计

2.1 MC9S12XS128单片机最小系统电路设计

单片机最小系统电路包括电源电路、复位电路、时钟电路以及BDM下载电路等[2],是保证单片机能够可靠工作的基本电路,如图2所示。时钟电路采用晶振Y1与单片机内部的电路组成振荡电路来产生时钟信号,系统中选择频率为16 MHz的晶振,C3、C4为起振电容,R2为晶振电阻。复位引脚是第30脚,复位电路由电阻R4、电容C6和按键S1组成,S1用于手动控制单片机复位。BDM电路是单片机的调试接口电路,用于连接BDM下载器,实现程序的调试与下载。它是一个6针的接口,1脚与单片机的BKGD引脚相连,4引脚接单片机的RESET复位脚,6脚接电源,3脚和5脚悬空。

2.2 CAN总线收发器电路设计

CAN总线收发器电路如图3所示,采用CAN收发器专用芯片TJA1040实现。3脚和2脚分别接电源与地,1脚和4脚分别与单片机的CAN总线模块输出脚PM0、PM1脚连接,实现CAN总线控制器与收发器之间的数据传输。SPLIT为共模稳压输出脚,用于稳定共模输出。第7和第8脚为CAN信号的差分输出脚,外接2个60 Ω的终端电阻,使阻抗连续,消除反射。

图2 最小系统电路

图3 收发器电路

2.3 电源电路

电源电路是将12 V和24 V电压转换为5 V的工作电压。电路如图4所示,采用低压差三端稳压芯片LM2940-5.0,输入端由开关SW1、保险F2以及去耦电容C2组成,输出端分别并联了两电解电容C19和电容C3。其中,电解电容起到防止电流过大而烧坏芯片的作用,普通电容起到滤波的作用。LED和电阻用来作为电源指示灯。

2.4 系统整体电路

以MC9S12XS128单片机为主控制器的CAN总线节点硬件电路如图5所示,包括了单片机最小系统电路、CAN总线电路、显示电路以及按键电路[3]。设计中采用LCD12864液晶显示器进行发送与接收数据信息的显示,数据端口由PA0~PA7进行驱动,控制端由PJ6、PJ7、PM3、PM2分别进行控制。采用按键S1~S4进行控制命令的输入,分别与PB0、PB1、PB2、PB3端口连接。CAN收发器电路分别与单片机的75(RXCAN0)脚和74(TXCAN0)脚连接。

图4 电源电路

3 程序设计

3.1 主程序设计

主程序主要对端口进行配置,进行锁相环(PLL)和ECT模块的初始化、MSCAN模块相应寄存器的设置、MSCAN时序参数和MSCAN滤波参数的确定、中断的设置等。

3.2 发送程序设计

发送前检测判断是否存在可用的缓冲区,若有可用的缓冲区,将选择相应的发送缓冲区。当有多个缓冲区空闲时,选择的缓冲区的序号是最小的,CPU将标识符、数据段长度和数据装入缓冲区,最后置位发送标志位,将已选择的缓冲区标记为发送,同时TXE标志位被清零[3]。此后,MSCAN会自动把数据装入传送队列,传送成功后将TXE标志位置1。若先前使能了发送中断,则会产生一个发送中断,用户可以利用此中断继续加载数据到发送缓冲区。发送程序流程如图6所示。

3.3 接收程序设计

图5 系统硬件电路图

首先设置INITRQ(初始化模式请求),配置接收过滤器并启动接收中断,然后读取标识符、数据长度代码字段、读取数据字段、释放接收缓冲器[4]。各信息在接收后被写入后台接收缓冲器,只有当CPU达到标识符接收和标识符掩码寄存器中规定的标准时,CPU才会被通知读取信息。接收程序流程如图7所示。

图6 发送子程序

4 结 论

设计中直接采用MC9S12(X)系列单片机内部MSCAN模块实现CAN总线网线节点的设计,硬件电路结构简单,程序设计方便,工作可靠性高,有效解决了利用专用CAN总线控制器芯片实现CAN总线网络节点设硬件与软件较复杂的问题。

图7 接收子程序

猜你喜欢

收发器缓冲区总线
光纤收发器故障排除经验谈
串行连续生产线的可用度与缓冲库存控制研究*
一种基于CAN总线的误码测试方法
基于ARC的闪存数据库缓冲区算法①
Virtex5 FPGA GTP_DUAL硬核两个收发器独立使用的实现
CAN总线并发通信时下位机应用软件设计
基于CAN总线的水下通信系统设计
初涉缓冲区
宝马F02车总线系统
本期导读