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

发布时间:2023-06-08  

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


本文设计的系统硬件基于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的直流电机PID调速系统设计与实现;直流调速系统广泛应用于低转速、高精度等各领域,如精密办公设备(喷墨打印机、激光打印机),自动售货机,家用电器、机器人和玩具设备等。其发......
    一种基于单片机和SG3525的程控开关电源设计与实现;引言 直流稳压电源是一种常见的电子仪器,其广泛应用于实验教学和科学研究等领域。目前使用的直流稳压电源大部分存在诸多缺点,如输出不可调、电压......
    基于STM32F103VE单片机实现纯数字式正弦逆变电源的应用方案;本文提出一种高性能全数字式正弦波逆变电源的设计方案。该方案分为前后两级,前级采用推挽升压电路将输入的直流电升压到350V左右......
    接显示在显示屏上。 万用表测量电压、电流和电阻功能是通过转换电路部分实现的,而电流、电阻的测量都是基于电压的测量,也就是说数字万用表是在数字直流电压表的基础上扩展而成的。 数字直流电压表a/d......
    组合提供可扩展的核心平台,适用于工业、商业和消费电子应用的充电、驱动和嵌入式数字控制系统。Qorvo 提供电源应用控制器(PAC™)和DC-DC电源管理产品,能够极大地改善系统可靠性,同时......
    基于QT/E的ARM/DSP直流电机监控界面的设计与实现;0 引言嵌入式技术在机器人控制领域应用广泛,它集中了机械工程、自动化控制以及人工智能等多门学科的最新科研成果,已经......
    的伺服驱动器 8…28V直流电源电压 高达18A RMS的电机电流 RS485,CAN和EtherCAT®接口 CANopen和TMCL协议 增量和模拟编码器反馈 数字霍尔传感器反馈 参考开关输入 通过......
    控硅全部损毁。早期由于技术条件及硅整流器件的关系,国内能做到直流4相限的调速很少。到目前为止基本上还是以进口为主导。 目前全数字直流电机调速已可以做到高速高频率正反切换,基本都采用无环流控制技术,并且增加了各种自检系统。 ......
    基于LPC2106微处理器实现微型足球机器人控制系统的设计;以应用为中心的嵌入式系统,已经深入到生活的各个方面。相对于其它领域,智能机器人系统可以说是嵌入式系统应用最典型、最广泛的领域之一。本文对嵌入式系统在足够机器人底层控制系统中的应用进行研究和设计......
    变频器维修电源的设计与制作;因变频器使用电源电压等级的不同,所以在维修变频器时需要提供不同等级的电压。但在板级维修甚至芯片级维修工作时,并非一定需要真正的三相200v交流电压或三相400v交流电......

我们与500+贴片厂合作,完美满足客户的定制需求。为品牌提供定制化的推广方案、专属产品特色页,多渠道推广,SEM/SEO精准营销以及与公众号的联合推广...详细>>

利用葫芦芯平台的卓越技术服务和新产品推广能力,原厂代理能轻松打入消费物联网(IOT)、信息与通信(ICT)、汽车及新能源汽车、工业自动化及工业物联网、装备及功率电子...详细>>

充分利用其强大的电子元器件采购流量,创新性地为这些物料提供了一个全新的窗口。我们的高效数字营销技术,不仅可以助你轻松识别与连接到需求方,更能够极大地提高“闲置物料”的处理能力,通过葫芦芯平台...详细>>

我们的目标很明确:构建一个全方位的半导体产业生态系统。成为一家全球领先的半导体互联网生态公司。目前,我们已成功打造了智能汽车、智能家居、大健康医疗、机器人和材料等五大生态领域。更为重要的是...详细>>

我们深知加工与定制类服务商的价值和重要性,因此,我们倾力为您提供最顶尖的营销资源。在我们的平台上,您可以直接接触到100万的研发工程师和采购工程师,以及10万的活跃客户群体...详细>>

凭借我们强大的专业流量和尖端的互联网数字营销技术,我们承诺为原厂提供免费的产品资料推广服务。无论是最新的资讯、技术动态还是创新产品,都可以通过我们的平台迅速传达给目标客户...详细>>

我们不止于将线索转化为潜在客户。葫芦芯平台致力于形成业务闭环,从引流、宣传到最终销售,全程跟进,确保每一个potential lead都得到妥善处理,从而大幅提高转化率。不仅如此...详细>>