基于CAN总线智能汽车数据采集系统的设计

2023-09-25 03:39章万静赵陇赵红梅王晨阳吴海霞
电脑知识与技术 2023年22期
关键词:微控制器寄存器报文

章万静,赵陇,赵红梅,王晨阳,吴海霞

(1.江苏电子信息职业学院,江苏 淮安 223003;2.淮安瀚唐信息技术有限公司,江苏 淮安 223003)

1 背景

控制器局域网(Controller Area Network) 总线,通常简称CAN 总线[1],是一种用于实时应用的多主方式的串行通信协议总线,可以使用双绞线来传输信号,是目前国际上应用最广泛的现场总线之一[2],由于其可靠性、实时性和灵活性强的特点,被广泛地应用于汽车控制系统和环境恶劣的工业环境中。CAN 总线作为分布式控制或实时控制的串行通信网络,已经作为汽车的整车设计中的标准设备,利用CAN 总线通信,可以方便快捷地控制汽车中的自动空调、雨刮开关、背光调节、电气窗口、灯光聚束、座椅调节等设备[3]。

本文基于CAN 总线串行通信协议,设计了一种用于汽车试验的实时数据采集与监测系统,通过CAN 总线将 PC 机接入汽车的CAN网络中,实时采集车辆运行过程中的各种参数,实现对车辆运行状态的实时监测[4]。

2 系统硬件设计

基于CAN 总线的汽车实时数据采集与监测系统主要由三部分组成:上位PC 机、USB-CAN 接口卡和汽车CAN网关控制器[5],如图1所示。其中,USB-CAN接口卡向上利用USB 接口连接PC 机进行通信,向下利用CAN接口接入汽车CAN网络中完成数据的双向收发功能。

图1 系统结构图

USB-CAN 接口卡主要由微控制器C8051F040、USB 接口芯片CP2102、CAN 总线收发器PCA82C250构成,电路原理图如图2所示。

USB-CAN 接口卡的微控制器选用的是Cygnal 公司生产的C8051F040单片机。C8051F040是一款完全集成了单片复合信号系统的微控制器,具有32个数字I/O引脚,具有与8051指令集完全兼容的内核,包括两个全双工UART 串行接口、5 个16 位的计数器/定时器、、128 字节特殊功能寄存器(SFR) 地址空间256 字节内部RAM 及8 个8 位宽的I/O 端口。内部集成1 个完全支持CAN2.0A 和CAN2.0B 的CAN 控制器,CAN控制器具有32个消息对象,每个消息对象有各自的标识符。C8051F040 单片机采用流水线结构,与标准的8051结构相比指令执行速度有很大的提高,工作在最大系统时钟频率25MHz时,其峰值性能达到25MIPS。

CAN 总线收发器选择NXP 公司的PCA82C250 芯片[6]。PCA82C250收发器芯片使用双线差分驱动为总线提供发送和接收功能,该芯片提供了CAN控制器与物理总线之间的接口,这有助于抑制汽车在恶劣电气环境下受到的瞬变干扰。PCA82C250 芯片具有8 个I/O引脚,采用斜率控制,可有效降低射频干扰和保护总线的能力。屏蔽双绞线可作为CAN 总线的通信导线,总线上至少可连接110个节点,波特率最高速率可达1Mbit/s,将PCA82C250 设置为高速工作模式,只需要将Rs引脚直接接低电平即可实现。

USB 接口芯片选用Silicon Labs 公司研发的CP2102。CP2102 芯片具有28 个I/O 引脚,片内集成1024 字节闪存EEPROM,是一个USB 接口集成电路,内部集成一个USB 2.0全速功能控制器,USB收发器、晶体振荡器、EEPROM 及异步串行数据总线(UART) ,波特率最高可达12Mbps,不需要外接其他USB 组件,即可实现USB双向数据通信。

在进行实际电路设计时,在PCA82C250的CANH与CANL 之间接入一个124 欧姆的电阻,在CANH、CANL引脚与地之间各并联一个30pF的电容,可以起到滤除总线上的高频干扰信号,具有一定的防电磁辐射能力。同时,可以在CAN 控制器和CAN 驱动器之间加入2个6N137光耦器件,并使用隔离电源供电,可以进一步提高总线节点的抗干扰能力。

3 系统软件设计

在系统的软件设计中,与CAN总线相关的通信软件是整个系统软件的核心部分,主要包括有CAN总线初始化程序模块、CAN 总线发送程序模块、CAN 总线接收程序模块等。在软件开发过程中,为了代码具有良好的模块性和可移植性[7],方便为不同的系统或应用环境进行编程和重组,特意采用结构化的程序设计方案。与使用外部CAN 控制器相比,8051F040 单片机内部的CAN 控制器集成了用于接收数据及发送数据的所有硬件,可以最大限度地减少占用CPU 时间。CAN 报文的接收包括两种常用方式:查询和中断[8],本系统中,程序决定采用中断方式进行CAN总线数据的接收,采用查询方式进行CAN总线数据的发送。

3.1 系统CAN初始化程序

集成在C8051F040 微控制器内部的CAN 控制协议寄存器主要有:控制寄存器CAN0CN、错误计数寄存器、波特率控制器、状态寄存器CAN0STA、位定时寄存器、测试寄存器CANT0ST 等多个不同的寄存器[9]。初始化程序就是将这些与CAN总线相关的不同寄存器进行初始化,按照实际需求进行不同数据的配置和设置,同时还需要对发送报文对象和接收报文对象分别进行初始化。需要注意的是,有些寄存器需要采用直接访问的方式才能进行访问,有些寄存器需要采用间接访问的方式才能进行访问。CAN 初始化程序的流程图如图3所示。

CAN初始化程序具体参考代码如下所示:

3.2 CAN发送程序

C8051F040 微控制器内部集成CAN 控制器的硬件可以自动完成CAN报文发送,用户只需要根据接收到的远程帧的标识符将对应的数据传输到CAN 发送缓冲寄存器中,然后将此报文对象的代码写入CAN命令请求寄存器即可开始发送。CAN 发送程序具体参考代码如下所示:

3.3 CAN接收程序

CAN 总线接收数据时,数据包最多有8个字节的数据。CAN 报文的接收与发送一样,也是由C8051F040 微控制器内部集成CAN 控制器的硬件自动完成的,只需从接收缓存器中读取接收到的数据,然后进行相应的处理,即可完成数据的接收。CAN接收程序具体参考代码如下所示:

4 系统运行测试

系统利用智能汽车自带的CAN总线接口[10],实现PC 机对汽车数据的接收,从而对汽车运行状态的监控。

4.1 PC机软件界面

系统启动后直接进入主控程序界面,在系统的主控程序界面中,可以立即启动USB-CAN接口卡,连接PC 上位机和智能汽车CAN 控制器组成双向通信网络,然后正确配置各个相关参数后,就可以调用系统中其他的子程序功能。当硬件正确启动和配置后,对应功能的按钮呈现出激活的状态,单击按钮后会弹出相应的子程序界面,相关功能就会开始运行,如图4所示。

图4 PC机软件界面

4.2 运行测试结果

以某智能汽车的前风窗雨刮器部件为研究对象,运行本监控系统软件。根据检测结果,进一步开发“前风窗清洗”功能模块,程序运行界面如图5 所示。任选其中的一种前风窗雨刮器工作模式,在PC 机中双击鼠标左键即可发送CAN 命令控制雨刮器工作。实际测试表明,CAN 命令发出后,汽车雨刮器即可按照指定模式正确地工作。

图5 前风窗清洗模块程序运行界面

5 结束语

为满足PC机采集和监控智能汽车运行状态的需求,基于CAN 总线技术,搭建了“上位机PC 机+USBCAN 接口卡+汽车网关控制器”的硬件环境,通过该系统可以接收、分析汽车CAN 总线数据,并向汽车发送CAN 命令。通过实验进行数据采集,结果表明,系统软件操作简单,数据传输稳定可靠,实现了对汽车运行状态数据的采集和监控,由于采用非破坏性总线仲裁技术,传输时间短、速度快,具有较强的抗干扰能力,实现了预期的设计目标,满足了实时要求,有着良好的应用前景。但是,系统的实用性方面还需要持续地研究和改进,特别是程序的通信处理能力、纠错和容错能力还需要进一步地完善和提高。

猜你喜欢
微控制器寄存器报文
基于J1939 协议多包报文的时序研究及应用
CTCS-2级报文数据管理需求分析和实现
Lite寄存器模型的设计与实现
浅析反驳类报文要点
物联网技术在微控制器实验教学中的应用
分簇结构向量寄存器分配策略研究*
ATS与列车通信报文分析
Atmel针对新一代物联网应用发布全新32位微控制器
最新STM32设计工具增加对混合信号微控制器的支持
意法半导体(ST)推出世界首款基于ARM Cortex-M7的STM32 F7系列微控制器