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

发布者:悠闲自在最新更新时间:2021-06-23 来源: 21ic关键字:CAN总线  嵌入式设备 手机看文章 扫描二维码
随时随地手机看文章

引言

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


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


1 硬件架构

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

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

系统采用的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总线的嵌入式设备状态监测平台设计

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

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

2 软件设计

2.1 整体架构

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

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

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

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

划分任务之后,先实现板级支持包,再对通信协议进行设计,然后绘制整个μ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总线的嵌入式设备状态监测平台设计

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

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

采样时,主节点在指令的驱动下,切换不同状态。主节点发送预备指令,确认从节点准备好之后,再发出采样开始的“SMPL”命令,从节点收到指令后,启动采样,完成后回复“GOGO”指令。从节点在采样结束后再回复,是为了减少采样启动的延时。主节点进入接收数据的状态,发送传输数据指令“DATA”,从节点先用“LENS”指令告诉主节点,本次采样长度是多少,便于主节点在接收数据的时候统计,是否接收到了数量正确的数据。从节点开始发送数据,最后发送“ENDD”指令,告诉主节点数据传送结束。主节点的数据标识清空,回到初始状态。这样完成了一轮数据采样、发送过程。


2.4 μC/OS嵌入式操作系统

首先,已经将板级支持包编写完毕,而嵌入式系统首先是单板运行,其次是将底层软件用任务的方式重新编写。在单板运行嵌入式系统就是移植的过程,主要有:

①定义常量的值,声明数据类型、堆栈参数;

②编写堆栈初始化参数;

③编写任务切换的函数,还有在中断函数中提供时钟中断,即给操作系统时钟使用。


移植完成之后,进行任务的编写。分配给7个任务不同的优先级、堆栈资源和运行方式。其中,App_TaskStart是全部任务的起始点,优先级最高,由这个任务来建立其他任务,并且启动统计任务。App_TaskCreate建立了其他所有的任务。AppTaskUSerIF任务实现用户界面,Task_CAN任务实现CAN报文接收,Task_FatFileWR任务实现FatFs文件读写,AppTaskKbd任务实现触摸驱动,Clock_Update任务实现秒更新。


任务的周期性启动在建立任务时确定,例如AppTaskUserIF任务始终在运行,采用WM_Exec函数做界面更新。AppTaskKbd是10 ms周期读取触摸坐标,实现绘制鼠标箭头和触控功能。


信号量是在所有任务建立之前建立。CAN_MBOX是采用OSMboxCreate建立的邮箱信号量,能够传送CAN接收中断的消息以启动CAN任务,FLAGRECORD是OSFlagCreate建立的多值信号量,能置位4位,启动文件读写任务。ClocK_SEM是OSSemCreate建立的二值信号量,专门用于秒更新中断的信号量。


CAN_MBOX=OSMboxCreate((void*)0);

//建立CAN接收任务的消息邮箱

FLAGRECORD=OSFlagCreate(0,err);

//建立记录文件的开关量

Clock_SEM=OSSemCreate(1);

//建立秒更新中断的信号量

在运行μC/OS之后,还可以在os_cfg.h函数中关闭OS不需要的功能模块,以达到裁减系统、节约内存空间的目的。

2.5 μC/GUI显示界面

需要先移植,再设计界面。移植过程可以参考其他文献。设计界面分成两步:第一步是写软件框架,第二步是设计具体界面。每一个对话框都是用创建函数建立,创建函数会调用事先定义的资源,包括控件的形式、位置、大小、初始化值等,对话框还指定了相应的回调函数,通过回调函数操作对话框的行为,完成初始化、绘制、按钮响应等。代码如下:

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

值得注意的是,建立对话框有两种函数,即阻塞型和非阻塞型。采用非阻塞型的对话框才能在多对话框的操作中实现同步更新。不然,当前对话框使能就会阻塞显示其他对话框。

GUI_CreateDialogBox(); //非阻塞型

GUI_ExecDialogBox(); //阻塞型

界面设计的细化绘制工作集中在:①初始化时,控件资源决定了界面的布置和美观;②在回调函数中,按钮响应函数决定了对话框完成任务的流程。图8所示是主节点运行界面的主对话框。

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

2.6 适配从节点

按照主节点的界面和状态机,修改程序以适配从节点监控设备运行状态的任务需求。目前设计了3种从节点:一是采集温度和湿度;二是采集压力;三是标准数据采集及传输。从节点的程序结构和主节点是一致的,需要修改的地方有:

①CAN总线通信协议采用的是从节点的应答指令和状态机;

②显示界面的资源与布置需修改。对不需要的任务做屏蔽,节省资源和空间。

图9所示为第三个从节点的界面。

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

3 系统应用

通过总线方式将一个主节点和三个从节点连接。主节点选择500 kbps的波特率,收到从节点发来的状态确认良好的消息,主节点的当前状态显示块从黄色变成绿色。从节点1和节点2选择数据发送间隔,按下传输按钮,将温度、湿度及压力数值传送给主节点显示。


采样测试中,在需要采集的时刻单击主节点按钮,从节点开始采样,进度条运行。点击“Transfer”按钮后,从节点和主节点的传输进度条走动一致,完成传输后又恢复

了初值。说明正常完成数据采集、传输的过程,发送的数据被完整接收。


接收完数据,主节点通过USB线连接电脑,就显示为一个U盘,其中txt文件是接收的采样数据,文件名为记录的实时日期和时间。


结语

本文设计的基于总线的嵌入式设备状态监控平台具有主、从节点的分层次结构。总线结构可靠性高,使用数量多。从节点多种模式能够适应丰富的设备健康状态监控,且每个节点的界面具有交互性。嵌入式系统提供了很好的平台,便于拓展任务,本监控平台具有很强的实用价值。

关键字:CAN总线  嵌入式设备 引用地址:基于CAN总线的嵌入式设备状态监测平台设计

上一篇:STM32 ADC的规则通道和注入通道有什么区别
下一篇:基于STM32和S3C6410的无线节水滴灌自动控制系统

推荐阅读最新更新时间:2024-11-17 12:29

基于CAN总线的城市客车信息集成控制系统
1 引言 随着电子技术的不断发展,汽车电子技术也迅速的发展了起来,汽车上各种电子控制单元的数目也不断地增加,连接导线显著增多,因而提高控制单元间通信的可靠性和降低导线成本已成为迫切需要解决的问题。 在20世纪80年代,以研发和生产汽车电子产品著称的德国bosch 公司针对此问题开发了can总线协议,这种多主网络协议,它的基础是无破坏性仲裁机制,使得总线能以最高优先权访问报文而没有任何延时。can作为标准车载网络技术,其在汽车网络化应用的进程中起着桥梁和纽带的作用,将城市客车信息集成采集提高到一个新的层次。 2 城市客车信息集成控制系统概述 城市客车信息集成控制系统是建立在汽车网络控制技术的基础上,从控制对象分,可以将城市客车
[嵌入式]
PB-B-CAN总线在风力发电系统中的应用
  引言:   在 风力发电 中, 变流器 之间,变流器和风机塔之间的数据交换都涉及到通信。而传动单元的控制需要与整个风场的通讯网络相连,就需要大范围,高速,可靠的通讯,所以DP在其中就承担了至关重要的角色。但是在实际情况中,存在一个问题,控制变流器的控制器只能提供CAN通信的接口,和Profibus通信网络相连遇到了两种总线协议标准共存的问题。鼎实公司提供的CAN-DP总线桥产品为解决这个问题提供了关键的作用。   项目综述   风力发电项目由几个部分组成,包括:   网侧变流器及其控制DSP板   转子侧变流器及其控制DSP板   通信部分,包括液晶,本地计算机及其控制DSP板   塔上通信部分
[嵌入式]
一种基于CAN总线的DSP程序加载技术
摘要:为灵活方便地调试磁悬浮列车上众多基于DSP芯片的控制系统,介绍了一种基于CAN总线的DSP程序加载技术。该技术使对DSP芯片程序的加载可以脱离仿真器而直接受控于列车的主控机。该技术可靠性高、使用灵活方便,具有很强的实用性。 关键词:CAN总线 单片机 DSP HPI ISA 磁悬浮列车上有很多基于DSP芯片的模块和系统。目前, DSP芯片程序的加载与运行都主要依赖于仿真器,而DSP仿真器价格高、体积大,这使得磁悬浮列车系统的调试很不灵活方便;且这些基于DSP芯片的系统一旦脱离仿真器就只能运行事前载入的单一的程序,也使系统的灵活性受到了很大的限制。 本文研究了DSP芯片程序加载的基本原理,并根据这些原理,基于CAN总线,实现了
[嵌入式]
CAN总线控制器与DSP的接口
摘要:讨论了CAN总线控制器与DSP之间的接口,介绍了流行的CAN控制器芯片SJA1000和TMS320系列DSP芯片的接口时序,并给出了它们的接口方法和电路。 关键词:CAN控制器 DSP 时序 接口电路 现场总线是一种开放式、数字化、多点通信的控制系统局域网络,是当今自动化领域中最具有应用前景的技术之一。CAN总线是现场总线中的应用热点,CAN总线支持分布式控制和适时控制的串行通信网络。由于CAN总线具有通信速率高、开放性好、报文短、纠错能力强以及控制简单、扩展能力强、系统成本低等特点,越来越受到人们的关注。基于CAN总线的CAN控制器具有完成CAN总线通信协议所要求的全部必要功能,因此CAN控制器与其它微处理器的接口成为
[嵌入式]
一种新型测试混合动力发动机技术
  汽车的传动系本质上就是一个包含给汽车提供动力的发动机(传统的内燃机),并将动力传递给变速箱、传动轴最终到达汽车车轮的系统。传动系的电气化正在改变汽车技术的未来发展前景,同时也受到来自可持续能源驱动、提高燃油效率以及符合相关二氧化碳排放法规等的影响。另外,目前的关键技术推进工作主要集中于提高操控性能与耐用性,还有就是一些新的实用技术,比如因再生制动而催生的逆变器技术,这种技术用于给电动机供电,或者给电池充电。   在传动系任何部分的开发过程中,都需要测量与机械性能相关的各种电气信号和物理参数,并作为完整测试过程的一部分。电气信号来自链接高压电池和逆变器的电力电路,而物理参数涉及电气到机械的转换过程。为了透彻理解整个系统性能,
[嵌入式]
基于嵌入式CAN总线的远程工业监控系统设计
1 引言     Internet飞速发展,已成为信息交流的重要渠道,而基于Web B/S(Browser/Server)的远程监控技术应用也越来越广泛。将这种技术应用于工业现场控制,用户在Internet接人的地方,实现对工业现场设备进行远程监控,是当前倍受关注和研究热点的真正意义上的工业控制远程监控系统。 2 监控系统整体结构     本文设计了基于CAN总线的嵌入式远程监控系统,可以把工业现场的实时控制数据通过HTTP协议发送到远程浏览器,用于把工业设备接入Internet以实现在远程监控。系统的整体结构如图1所示。 图1 监控系统整体结构图     嵌入式CAN-HTTP转换与现场数据采集节点组成主从
[嵌入式]
STM32学习笔记:CAN总线的过滤器
STM32 CAN控制器,提供了28个可配置的筛选器组(F1仅互联型才有28个,其他的只有14个), STM32 CAN控制器每个筛选器组由2个32位寄存器组成(CAN_FxR1和CAN_FxR2,x=0~27)。根据位宽不同,每个筛选器组可提供: ● 1个32位筛选器,包括:STDID 、EXTID 、IDE和RTR位 ● 2个16位筛选器,包括:STDID 、IDE、RTR和EXTID 位 对于过滤器组, 可以将其配置成屏蔽位模式, 这样 CAN_FxR0中保存的就是标识符匹配值, CAN_FxR1中保存的是屏蔽码,即 CAN_FxR1中如果某一位为1,则 CAN_FxR0中相应 的位必须与收到的帧的标志符中的相应位吻合才能通
[单片机]
STM32学习笔记:<font color='red'>CAN总线</font>的过滤器
基于CAN总线的家庭控制器的设计与实现
引言   CAN(Controller Area Network)总线是德国Bosch公司为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维,通信速率可达1Mbps,通信距离可达10km,CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码,使网络内的节点个数在理论上不受限制。由于CAN总线具有较强的纠错能力,支持差分收发,因而适合高干扰环境,并具有较远的传输距离。因此,CAN协议对于许多领域的分布式测控是很有吸引力的。目前CAN已成为ISO11898标准,其特性如下:   (1)CAN是一种有效支持分布式控制和
[安防电子]
基于<font color='red'>CAN总线</font>的家庭控制器的设计与实现
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved