基于STM32的嵌入式测控系统设计与实现

发布者:吾道明亮最新更新时间:2023-06-08 来源: elecfans关键字:STM32  嵌入式  测控系统 手机看文章 扫描二维码
随时随地手机看文章

测控系统是水动力实验中的重要测试设备。在实验中有压力、拉力、加速度等物理量通过传感器转换成电压值,需要准确记录。虽然实验模型有很多种,但是共用传感器及测控系统,因此对测控系统的通用性和用户界面友好性提出了要求。本文采用嵌入式架构设计了测控系统。


本文设计的系统硬件基于STM32芯片,具有很强的扩展能力,易于移植,其外设单元资源丰富,能够达到系统要求的精度和范围。


1、硬件架构

采用嵌入式架构(见图1)的优点是通用性强,便于在多平台移植;主控芯片外围电路模块丰富,包括ADC、DA、CAN和SDIO等接口,独立完成对多种类型设备的测量、控制。芯片的主频高,运算能力也很强,适合嵌入复杂的算法。完全适合作为测控系统,具备系统升级和扩展的空间。

基于STM32的嵌入式测控系统设计与实现

图1  嵌入式测控系统硬件架构

系统采用意法半导体推出的STM32F103,是基于Coretex-M3内核的32位ARM芯片系列,而ZET6属于该系列的高容量芯片,片内Flash为512KB,片内SRAM为64kB,主频72MHz,具备26位地址线和16位数据宽度。


系统的显示屏为翰彩4.3寸TFT液晶屏,分辨率为640×480,显示屏驱动模块是SSD1963,采用了16位(5位红色,6位绿色,5位蓝色)64K接口模式,由FSMC数据接口连接控制。覆盖电阻式触摸屏,控制芯片ADS7843输入触摸屏四路电压,用SPI通讯输出触摸点位置信息。图2所示为LCD接口电路。

基于STM32的嵌入式测控系统设计与实现

图2  LCD驱动模块的接口电路

内部ADC模块是12位逐次逼近型,有16通道,采样率最高1MHz。STM32F103的CAN总线单元被称为bxCAN(BasicExtendedCAN),它支持CAN协议2.0A和2.0B;选用的CAN收发器是TJA1050,在CAN协议控制器和物理总线之间起到接口的作用,设计有120Ω的终端匹配电阻以适应不同的总线网络。图3所示为CAN模块的接口电路。另外,本文还设计了RS232接口以适应不同接口要求。

基于STM32的嵌入式测控系统设计与实现

图3  CAN模块的接口电路


2、软件设计

本设计采用的STM32F103ZET6属于大存储器芯片,可以直接在工程里使用ST公司标准库自带的大存储器芯片启动代码,这个文件已经配置好了初始状态、中断向量表。用户自己需要设置的是使用的模块和通道,即CAN模块、ADC模块、USART模块和FSMC模块。


2.2、显示驱动

实现本文中的STM32F103利用FSMC(FlexibleStaticMemoryController)接口驱动显示电路。FSMC接口是一种总线接口,有4个专用的片选信号,可以访问最多4个NOR、NAND闪存或SRAM存储设备。本文系统采用存储块1(Bank1)作为数据、控制区域,其基地址从0x60000000开始,显示芯片数据或命令选择信号接在FSMC_A16上,因此LCD的指令地址、数据地址定义如下:

#defineBank1_LCD_Data((uint32)0x60010000)//数据

#defineBank1_LCD_Cmd((uint32)0x60000000)//指令

根据显示芯片SSD1963的指令集,编写了基础的画点、画线、画矩形的函数,便于以后作为uC/GUI的基础软件。触摸屏驱动的芯片ADSL7843用SPI口分别读出触摸点的x轴、y轴数据即可。


2.3、uC/OS移植与实现

uC/OS-II通过了FAA(FederalAviationAdministration)认证,在实时性要求很高的嵌入式工业控制领域能够放心使用。移植工作包括:

(1)在os_cpu.h中设置参数。A)使用的数据类型,即统一表达数据单元长度。B)设置堆栈参数如增长方向、操作单位等。ARM支持的是自顶向下的堆栈增长方式,即堆栈空间从高地址向低地址增长。单次堆栈操作单位是INT32U。C)任务中断宏定义选项:屏蔽所有中断,恢复所有中断,进行任务切换。前两个是为了保证重要函数或任务运行中的数据不会被改变(即代码临界段),第3个是用于uC/OS-II的任务切换。

(2)在os_cpu_c.c中使用C语言编写任务堆栈初始化函数:OSTaskStkInit()。这个函数在创建任务的时候被OSTaskCreate()或者OSTaskCreateExt()调用,初始化任务堆栈,它是与处理器的特性紧密联系的。

(3)在os_cpu_a.asm中用汇编语言编写任务切换等底层函数:OSStartHighRdy(),OSCtxSw(),OSIntCtxSw()。

OSStartHighRdy()在多任务系统启动函数OSStart()中调用,它设置系统运行标志位OSRunning=TRUE;将就绪表中最高优先级任务的栈指针加载到SP中,并强制中断返回。这样就绪的最高优先级任务就如同从中断返回到运行态一样,使得整个系统得以运转。

基于STM32的嵌入式测控系统设计与实现

图4      uc/OS-II任务状态转换图 


2.4、uC/GUI的移植与实现

uC/GUI是一种嵌入式应用中的图形支持系统[6]。它设计用于为任何使用LCD图形显示的应用提供高效的独立于处理器及LCD控制器的图形用户接口,它适用单任务或是多任务系统环境,并适用于任意LCD控制器和CPU下任何尺寸的真实显示或虚拟显示。它的设计架构是模块化的,由不同的模块中的不同层组成。uC/GUI的软件构架如图5所示。最底层直接对LCD硬件操作,不同的系统需要根据LCD的控制器做相应的移植。第二层是LCD驱动程序最主要的层面,它利用硬件操作层实现最基本的绘图函数。第三层的uC/GUI函数库实现了复杂绘图函数的封装,给用户层提供API接口,解决了绘图中出现的大部分问题。用户加入自己的应用程序,利用API接口实现系统的图形界面。

基于STM32的嵌入式测控系统设计与实现

图5  uc/GUI软件结构图


uC/GUI进行移植工作,主要包括:

(1)在guiconf.h中定义多系统支持、窗口管理等。

(2)在lcdconf.h中的总线接口和寄存器接口进行硬件接口的配置和定义。

(3)LCD驱动编程的实质是液晶屏上的点对应的显存编程,最底层调用函数为画点函数,根据自身平台情况根据总线接口和寄存器接口或者LCD控制器寄存器进行操作。首先写好底层驱动器对图形显示的操作函数:SetPoint(),GetPoint()等;其次,实现基本绘图函数,如画圆、画线、画方框等:GUI_Line(),GUI_Rectangle()等。最后,设置底层驱动器与uC/GUI之间的接口函数,因为有上述基础,只需对应填写接口函数。

完成全部步骤后,要使uC/GUI能运行于uC/OS-II系统上,还需要编写uC/GUI与uC/OS-II、触摸屏的接口文件,即修改GUI_X_Touch.c和GUI_X_uCOS.c文件。


3、软件流程

系统的整个软件流程采用任务分配执行方式,是按照定时节拍由任务切换完成的。从任务的角度可分为底层硬件接口的驱动任务和显示、触摸驱动任务。

表1列出了系统中建立的任务及其优先级、堆栈大小、任务目的等。

表1系统中建立的任务及其参数

基于STM32的嵌入式测控系统设计与实现

图6左侧所示是软件流程初始化函数。

基于STM32的嵌入式测控系统设计与实现

图6 软件初始化函数及主任务流程图

主任务的目的是初始化uC/OS-II时钟节拍,使用统计任务,建立用户任务。建立了4个用户任务,因为需要保证数据采集的准确性,所以ADC采样任务优先级较高,仅次于主任务,而用户界面和触摸驱动任务排在最后。uC/OS-II的任务结构规定必须为无返回的结构,也就是无限循环模式。所以主任务是延时0.5s无限循环。

中断函数的配置包括DMA中断和系统时钟中断。

ADC采样任务在系统建立后以530kHz采样周期始终进行,但是把AD采样的结果显示到屏幕上需要等待1kHz采样时钟中断程序用来发送启动信号量。

设计AppTaskUserIF任务作为用户界面任务,主要负责窗口建立、显示和刷新的工作。在界面任务中,建立一个主窗口作为父窗口,子控件为各个通道的瞬时值、平均值文本控件,启动按钮控件和倒计时文本控件。


4、系统应用

在水动力实验中应用本文设计的测控系统,体积为12cm×10cm×4cm,用具有水密性的盒子安装,如图7所示。实验要求5通道采集,采样频率100Hz,在达到实验状态后,采集10s数据,求平均值,显示并记录数据。经过测试,系统精度达到了1.46mV。


5、结论

嵌入式系统中,uC/OS-II和uC/GUI的体积小,功能全面,在STM32的ARM核上移植有成熟的经验,得到了广泛的应用。多任务的操作系统能够及时扩展和裁剪,非常适合嵌入式灵活多变的要求。本文设计的基于STM32的嵌入式测控系统功能完善,配备的触摸屏增强了操作互动性,很强的扩展性能够适用于不同的场合,具有很高的应用价值。


关键字:STM32  嵌入式  测控系统 引用地址:基于STM32的嵌入式测控系统设计与实现

上一篇:STM32基本系统主要几个部分
下一篇:STM32CubeMX-实时时钟(RTC)

推荐阅读最新更新时间:2024-11-04 13:42

STM32学习杂记-SPI的4种模式
LL_SPI_POLARITY_HIGH & LL_SPI_PHASE_2EDGE LL_SPI_POLARITY_HIGH & LL_SPI_PHASE_1EDGE LL_SPI_POLARITY_LOW & LL_SPI_PHASE_1EDGE LL_SPI_POLARITY_LOW & LL_SPI_PHASE_2EDGE
[单片机]
<font color='red'>STM32</font>学习杂记-SPI的4种模式
基于嵌入式ARM的LCD图像显示系统设计
0 引 言 随着嵌入式技术迅猛发展和Linux在信息行业中广泛应用,利用嵌入式Linux系统实现图像采集处理已有可能。实时获得图像数据是实现这些应用的重要环节。本文使用的系统硬件平台采用Samsung公司的处理器S3C2410,并以此为基础,在基于嵌入式Linux系统平台上设计了建立图像视频的一种方法。 1 系统硬件电路设计 S3C2410芯片处理器内部集成了ARM公司ARM920T处理器核的32位微控制器,资源丰富,带独立的16 kB的指令Cache和16 kB数据Cache、LCD(液晶显示器)控制器、RAM控制器、NAND闪存控制器、3路UART、4路DMA、4路带PWM的定时器、并行I/O口、8路10位ADC、Tou
[应用]
STM32新建keil工程具体步骤(详细)
1. 新建本地工程文件夹 在本地电脑上新建一个“工程模板”文件夹,在它之下再新建 6 个文件夹: 2.添加库文件到相应文件夹 把 ST 标准库必要的文件复制到工程模版对应文件夹的目录下 3.KEIL5新建工程 打开 KEIL5,新建一个工程,文件名自拟,工程放在Project目录下。 保存后弹出芯片选择,要根据自己芯片的型号提前按照PACK包,选择型号后点击OK。 随后弹出在线添加库文件,关闭即可。 4.添加组文件夹 在新建的工程中添加常用的文件夹,用来存放不同的文件。 5.添加文件 在新建的工程中添加这些文件,双击组文件夹就会出现添加文件的路径,然后选择文件即可。 6.配置魔术棒选
[单片机]
<font color='red'>STM32</font>新建keil工程具体步骤(详细)
MAX30102空气质量监测模块STM32源程序与资料
电路原理图如下: 功能实现:采用STM32F103C8T6小板,驱动血氧心率传感器max30102,实现PPG信号采集,并将计算的心率和血氧值显示在0.96寸OLED和串口上。 软件实现:ST标准库3.5 硬件连接: MAX30102: VCC - 3.3V GND - GND SCL - PB7 SDA - PB8 IM - PB9 0.96inch OLED : VCC - 3.3V GND - GND SCL - PA5 SDA - PA6 RST - PA3 DC - PA4 CS - PA2 USB-TTL: 5V - 5V GND - GND RXD -
[单片机]
MAX30102空气质量监测模块<font color='red'>STM32</font>源程序与资料
三菱电机携17款TFT液晶模块亮相国际嵌入式系统展
三菱电机将携17款彩色工业用TFT液晶模块产品,亮相于8月24日至26日在深圳举行的第五届深圳国际嵌入式系统展(Embedded Expo 2016)。三菱电机将围绕医疗设备、工程机械、电梯、ATM/POS机、充电桩和船舶六大应用领域为客户推介优质产品。 在本次展会上,三菱电机将重点推介为工程机械而设计的坚固型系列产品、为影视和手持设备提供的小型轻薄型系列产品、以及能满足户外使用的高性能触摸屏等新产品。 耐振动及耐温度TFT液晶屏适合工程机械 在工程机械应用范围中,由于建筑机械及农业机械均在恶劣环境下工作,其显示器所采用的液晶模块,必须能承受超强劲的机械性振动,以及抵受严酷的室外气温,三菱电机为此特别设计了坚固型的7
[嵌入式]
三菱电机携17款TFT液晶模块亮相国际<font color='red'>嵌入式</font>系统展
STM32串口中断的一些资料
在研究STM32串口接收发送中断的时候找到不少不错的资料,现在备份在这里。以供自己查阅,以及方便其他人。 TC ====TXE 顺便预告下最近会写个有关串口处理数据的帖子,从查询和中断方面以及数据处理的方式,从队列以及FIFO方面写起。 SECTION 1 SECTION 2 先说TC。即Transmission Complete。发送一个字节后才进入中断,这里称为 发送后中断 。和原来8051的TI方式一样,都是发送后才进中断,需要在发送函数中先发送一个字节触发中断。发送函数如下 /* 功能:中断方式发送字符串.采用判断TC的方式.即 判断 发送后中断 位. 输入:字符串的首地址 输出:无 */ void U
[单片机]
基于ARM+DSP的嵌入式四轴运动控制器设计
导读:动控制系统已被广泛应用于工业控制领域。近年来,工业控制对运动控制系统的要求越来越高。传统的基于PC及低端微控制器日渐暴露出高成本、高消耗、低可靠等问题,已经不能满足现代制造的要求 。随着嵌入式技术的日益成熟,嵌人式运动控制器已经初露锋芒。 运动控制系统已被广泛应用于工业控制领域。近年来,工业控制对运动控制系统的要求越来越高。传统的基于PC及低端微控制器日渐暴露出高成本、高消耗、低可靠等问题,已经不能满足现代制造的要求 。随着嵌入式技术的日益成熟,嵌人式运动控制器已经初露锋芒。基于ARM技术的微处理器具有体积小、低成本、低功耗的特点,决定其在运动控制领域具有良好的发展前景。 PCL6045BL是一种新型专用DSP运动控
[单片机]
基于ARM+DSP的<font color='red'>嵌入式</font>四轴运动控制器设计
首届中国“ST-EMBEST杯”嵌入式电子设计大赛圆满落下帷幕!
              嵌入世界,创新无限 北京,2007年7月27日 – 全球知名的微控制器供应商意法半导体公司与深圳市英蓓特信息技术有限公司主办的首届“ST-EMBEST杯”嵌入式电子设计大赛圆满结束,并于今天公布获奖名单。自2006年10月开赛以来,受到全国ARM开发工程师和爱好者的积极响应,有将近600个小组报名参加了入门组和专业组的比赛,经过初赛、复赛和决赛答辩的激烈角逐,最终由专家评委们评选出本次大赛的一、二、三等奖,优胜奖共27组。 本次大赛是意法半导体和英蓓特公司赞助并主办,参赛作品主要是基于意法半导体公司的STR7和STR9的32位产品系列进行应用设计开发,英蓓特公司为所有参赛小组免费提供开发工具。大赛评委
[焦点新闻]
小广播
设计资源 培训 开发板 精华推荐

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

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

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

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