APP下载

基于51 单片机的CAN 总线实验教学平台的设计与实现

2021-04-17苗曙光李峥方振国李淮江

关键词:收发器流程图报文

苗曙光,李峥,方振国,李淮江

淮北师范大学物理与电子信息学院,安徽淮北235000

0 引言

由于汽车工业和智能制造业的飞速发展,导致大量企业对CAN 总线人才的需求旺盛.CAN 是控制器局域网(Controller Area Network,CAN)的简称,是由德国博世公司开发的,最初主要应用在汽车上. 由于CAN 总线具有其他总线(如RS485、RS232)所无法比拟的优点,使得其应用非常广泛. 目前,CAN 总线的应用已经不仅仅局限于汽车行业,而扩展到机械工程、纺织机械、农用机械、机器人、数控机床、医疗器械、家用家电以及智能传感器等领域.CAN 总线已经形成国际标准,它具有较高的性价比,被公认为最有前途的现场总线之一[1].作为培养应用型人才为主的电子信息工程等专业,单片机通信类实验教学还主要停留在RS232 串口通信,但是RS232 存在传输距离短和抗干扰性差等缺点,不适合工业现场通信,难以满足企业用人的需求[2].另外很多高校缺少专门的CAN 总线实验平台,导致了CAN 总线实验课程无法正常开设,学生的动手能力不足.本文基于高校CAN 总线实验课程现状,以51 单片机为基础设计开发了一款口袋式的智能CAN 总线实验平台,为高校CAN 总线实验教学提供保障.

1 CAN 总线实验平台设计

1.1 CAN 总线网络框图

典型的CAN 总线系统实现方法,如图1 所示.从图中可以看出,CAN 总线节点主要由单片机控制器模块、CAN 控制器模块、CAN 收发器模块和相关传感器模块组成,各个节点通过两根CAN 信号线CANH 和CANL 并联在一起,构成一套完整的CAN 总线网络.

图1 典型的CAN 总线系统框图Fig.1 Diagram of typical CAN-bus system

1.2 CAN 控制器和收发器选型

常用的独立CAN 控制器主要有SJA1000 和MCP2515,由于SJA1000 应用较广泛,内部带有FIFO 结构,采用并行总线接口,速度较快,性能优于MCP2515. SJA1000 芯片是Philips 半导体公司PCA82C200 CAN 控制器(BasicCAN)的替代品,而且还扩展了PeliCAN 模式,对CAN2.0B 协议也有很好的支持[3,4],因此本文CAN 控制器选型为SJA1000.

CAN 收发器提供了CAN 控制器与物理总线之间桥梁,是影响网络系统的安全性、稳定性、电磁兼容性和可靠性的主要因素,因此CAN 总线收发器在CAN 网络中具有重要作用. 常用的CAN 收发器有PCA82C250 和TJA1050 等,它们都可以提供对总线的差动发送和接收功能,都遵从ISO11898 标准的高速CAN 总线驱动器,可以在汽车和工厂现场控制中使用.但是,TJA1050 除了具有PCA82C250 的主要特性以外,在很多方面还做了进一步优化. TJA1050 的设计采用了最新的EMC 技术,它采用先进的绝缘硅(Silicon-on-Insulator,SoI)技术进行处理[5,6],因此TJA1050 比PCA82C250 的抗电磁干扰性能提高了20 dB,本文的CAN 收发器选型为TJA1050.

图2 CAN 总线节点设计Fig.2 CAN-bus node designp

1.3 CAN 总线节点设计

基于以上选型分析,本文以目前常用的STC89C52RC 型51 单片机为基础,设计CAN 总线节点.节点原理框图如图2 所示,CAN 节点包括单片机控制模块、SJA1000 总线控制器、TJA1050 总线收发器、供电模块、显示单元、外设接口模块和CAN 信号线等.由于该节点是作为实验室CAN 实验平台使用,所以没有增加光耦隔离电路.

2 系统软件设计

CAN 总线节点的软件设计主要包括三大部分:CAN 初始化、CAN 数据发送和CAN 数据接收.

2.1 CAN 总线初始化

CAN 总线的初始化程序设计主要是通过对SJAl000 的寄存器写入相应的控制字,从而确定SJAl000的工作方式.在对SJAl000 的寄存器写入控制字时,要在SJAl000 的复位模式下采用软件复位模式[7]. 其初始化流程图如图3 所示.

2.2 CAN 数据发送流程图

报文的发送通常是由CAN 控制器根据CAN 协议规范自动完成的.首先由单片机将要发送的报文传送到发送缓冲器中,并置位命令寄存器中的发送请求标志[8].其发送流程图如图4 所示.

图3 CAN 总线初始化Fig.3 CAN-bus initialization

2.3 CAN 数据接收流程图

当接收缓冲区状态标志为满的时候,即表明已接收一个或者多个报文.此时单片机将从CAN 控制器取出第一个报文,并置位命令寄存器中的释放接收缓冲区标志[9].其接收流程图如图5 所示.

3 实验测试

3.1 CAN 点对点通信实验

点对点测试框图如下图6 所示,其中一块板设定为A 板,另外一块板设定为B 板,CAN 总线波特率为125 Kbps. A 板通过按键发送0x01-0x0f 数据给B板,B板接收后在本地显示,通过USB-CAN总线分析仪到计算机调试软件界面显示,结果如图7 所示.

图4 CAN 数据发送流程图Fig.4 Flowchartof CAN data transmission

图5 CAN 数据接收流程图Fig.5 Flowchart of CAN data receive

图6 点对点测试框图Fig.6 Diagram of point to point test

图7 USB-CAN 分析仪接收到的CAN 报文Fig.7 CAN message received by USB-CAN analyzer

按照图6 进行CAN 设备连接测试,通过USB-CAN 分析仪能够收到数据长度为1,数据内容为0x01-0x0f 的CAN 报文,与发送端发送的报文信息一致,测试结果如图7 所示,表明本文设计的CAN 总线实验平台的能够应用于点对点通信实验教学.

3.2 CAN 采集温湿度数据实验

温度采集网络结构如下图8 所示,其中三块CAN 实验板负责温湿度采集(温湿度传感器为DHT11),另外一块板负责CAN232 协议转换,所有节点并联在一起,实现CAN 总线温度采集到计算机端显示的功能[10].

图8 温湿度采集实验框图Fig.8 Diagram of temperature and humidity acquisition experiment

上位机软件采用VB6.0 开发了一个CAN 总线温湿度采集界面,通过PC 端采集到温湿度数据如下图9 所示.串口号选择的是COM4,串口波特率是9 600 bps,CAN 总线波特率为125 Kbps.1 号节点采集到的湿度是34 %,温度是25 摄氏度;2 号节点采集到的湿度是33 %,温度是24 摄氏度;3 号节点作为仅做本地采集显示,数码管显示湿度为33%,温度为24摄氏度,软件还可以显示CAN协议格式对应的数值. 由于在实验室环境测试,节点间距离比较近,两个节点的温湿度值比较接近,通过和标准温湿度计比较,误差在比较小,能够满足基本的应用需求.

4 结束语

本文以单片机为基础,设计开发了一款适用于CAN 总线实验教学的平台,通过该平台的实践教学可知,相比较传统的教学方法,具有以下优点:(1)该CAN 总线实验教学平台,不仅能够满足基本的CAN 总线通信功能的实验需求,而且可以扩展相关传感器模块,实现简单的CAN 网络项目实验. 通过实验,能够提高学生对CAN 总线的基本原理和设计方法的掌握水平. (2)该平台以51 单片机为基础,做到了实验平台的微型化“口袋式”,这样学生的实验不仅仅局限于实验室,方便学生课下进一步扩展设计,进而推动项目驱动型教学模式的开展.

图9 温湿度数据采集结果Fig.9 Results of temperature and humidity data collection

综上所述,采用自制CAN 总线实验教学平台,有助于提高CAN 总线课程教学质量,对于培养应用型CAN 总线人才具有重要作用.

猜你喜欢

收发器流程图报文
基于J1939 协议多包报文的时序研究及应用
低轨星座短报文通信中的扩频信号二维快捕优化与实现
CTCS-2级报文数据管理需求分析和实现
光纤收发器故障排除经验谈
浅析反驳类报文要点
一种程序源代码的标准化流程图转化方法∗
Virtex5 FPGA GTP_DUAL硬核两个收发器独立使用的实现
腹腔镜手术护理流程图在腹腔镜手术围术期护理中的应用
光纤收发器常见故障原因