基于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 总线人才具有重要作用.