微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 基于CAN总线的嵌入式设备状态监测平台设计

基于CAN总线的嵌入式设备状态监测平台设计

时间:09-12 来源:互联网 点击:

引言

实验室中关键设备的信息需要及时采集、反馈到主控室中,又因为设备类型多,促使设计者开发主节点、从节点的结构,总线通信的监测平台。同时,平台的用户界面需具有二次开发能力。因此,本文设计了一种设备状态监测平台。

本文设计的系统硬件基于STM32F103芯片,是基于ARM的Cortex—M3架构,其外设单元资源丰富,能够达到系统需求的性能指标。配备了一块4.3寸TFT显示、触摸屏,可直观地显示与操作,体现了与用户的互动。

1 硬件架构

以STM32F103为主控芯片,主要包含了5个外围电路模块:实时时钟、模数处理、数据存储、数据传输和界面显示。模数处理是A/D模块加预处理电路,数据存储采用一片2 MB SPI Flash,数据传输采用CAN接口和RS232接口,显示屏是4.3寸。如图1所示,为设备的硬件架构图。

系统采用的STM32F103是ST公司推出的基于Cortex—M3内核的32位ARM芯片系列。本系统选用的STM32F103ZET6属于该系列的高容量芯片,片内Flash容量为512 KB,片内SRAM容量为64 KB,主频为72MHz。具备完整的FSMC总线、26位地址线和16位数据宽度。系统的显示屏为翰彩4.3寸TFT液晶屏,分辨率为640×480,贴一块电阻式触摸屏。显示屏驱动模块是SSD1963,采用了16位(5位红色、6位绿色、5位蓝色)64K接口模式,由FSMC数据接口连接控制。触摸屏芯片为ADS7843,它输入触摸屏四路电压,用SPI通信输出触摸点位置信息。图2是LCD接口电路。

CAN总线协议的高可靠性使其在工业上得到广泛应用。STM32F103的CAN总线单元支持协议2.0A和2.0B;选用的CAN收发器是TJA1050,在CAN协议控制器和物理总线之间起到接口作用,设计120 Ω的终端匹配电阻以适应不同的CAN总线网络。CAN模块的接口电路如图3所示。

2 软件设计

2.1 整体架构

嵌入式系统设计的第一步在于清晰地划分任务,设定优先级,根据任务的执行情况调度系统资源。如图4所示,μC/OS是系统的总调度,之上有6个主要的任务,它们分别对应硬件架构中的模块,运行整个程序。

每个任务分配不同的优先级和启动方式,有周期性启动、信号量驱动两种方式。显示功能由μCGUI驱动,FAT32文件由FatFs管理。任务划分及资源如表1所列。

划分任务之后,先实现板级支持包,再对通信协议进行设计,然后绘制整个μCGUI的界面。

2.2 板级支持包

板级支持包是指在单板上实现全部基础功能,例如时钟管理、掉电备份、串口、CAN总线通信、A/D采样以及显示任务的fsmc接口、驱动优盘的SPI接口等。利用ST公司提供的标准化库函数,调用库函数进行初始化,配置模块参数,在使用时根据需要调用函数或在中断进行,完成后封装成一个Lib库文件使用。

在系统中断里设置:①CAN中断,用于快速反映CAN口信息;②USART接收中断,用于接收串口信息;③RTC中断,用于实时时钟中断;④USB有两个中断,用于USB端口的收发设置。板级支持包的函数如图5所示。

全系统的参数如下:A/D总线模块采样率为1 kHz,最高为5 kHz,通道数8个,可以拓展到16通道。串口速率为115 200,数据位为8位,无校验。CAN用CAN-1口,设置为500 kbps、250 kbps、100kbps、50 kbps的4档速率,扩展ID形式。

初始化单板需进行时钟校正,存储正确的时间。单板掉电之后用电池工作,存入备份寄存器,上电再取时间参数(即秒的数量),换算成对应的日期和时间。显示模块采用FSMC并行接口控制,实现在屏幕上画出单个点、单条直线等基本绘图功能,就能提供接口给μC总线GUI使用。

2.3 CAN总线通信协议

本设计采用CAN总线协议,用状态机进行状态转换,在具体的指令驱动下实现从握手到传输数据的过程。图6是CAN总线通信的状态机。

CAN总线通信指令是英文单词缩写用ASCII码表示的结果。在本设计中,有一个主节点和3个从节点。主节点和从节点对应的指令应答方式如图7所示。初始化时,主节点在发出“TEST”指令后,从节点回复“ALOK”,表示从节点收到指令,工作正常。1号和2号从节点负责测量温度、湿度和压力。主节点发送“NEED”指令,从节点1号和2号回复温度、湿度数值给主节点,格式是对应的“指令+数据”。主节点根据ID与指令,判断数据正确性,及时显示在屏幕上。

采样时,主节点在指令的驱动下,切换不同状态。主节点发送预备指令,确认从节点准备好之后,再发出采样开始的“SMPL”命令,从节点收到指令后,启动采样,完成后回复“GOGO”指令。从节点在采样结束后再回复,是为了减少采样启动的延时。主节点进入接收数据的状态,发送传输数据指令“DATA”,从节点先

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top