测控系统是水动力实验中的重要测试设备。在实验中有压力、拉力、加速度等物理量通过传感器转换成电压值,需要准确记录。虽然实验模型有很多种,但是共用传感器及测控系统,因此对测控系统的通用性和用户界面友好性提出了要求。本文采用嵌入式架构设计了测控系统。
本文设计的系统硬件基于STM32芯片,具有很强的扩展能力,易于移植,其外设单元资源丰富,能够达到系统要求的精度和范围。
1、硬件架构
采用嵌入式架构(见图1)的优点是通用性强,便于在多平台移植;主控芯片外围电路模块丰富,包括ADC、DA、CAN和SDIO等接口,独立完成对多种类型设备的测量、控制。芯片的主频高,运算能力也很强,适合嵌入复杂的算法。完全适合作为测控系统,具备系统升级和扩展的空间。
图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接口电路。
图2 LCD驱动模块的接口电路
内部ADC模块是12位逐次逼近型,有16通道,采样率最高1MHz。STM32F103的CAN总线单元被称为bxCAN(BasicExtendedCAN),它支持CAN协议2.0A和2.0B;选用的CAN收发器是TJA1050,在CAN协议控制器和物理总线之间起到接口的作用,设计有120Ω的终端匹配电阻以适应不同的总线网络。图3所示为CAN模块的接口电路。另外,本文还设计了RS232接口以适应不同接口要求。
图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中,并强制中断返回。这样就绪的最高优先级任务就如同从中断返回到运行态一样,使得整个系统得以运转。
图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接口实现系统的图形界面。
图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系统中建立的任务及其参数
图6左侧所示是软件流程初始化函数。
图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基本系统主要几个部分
下一篇:STM32CubeMX-实时时钟(RTC)
推荐阅读最新更新时间:2024-11-04 13:42
设计资源 培训 开发板 精华推荐
- 使用 Richtek Technology Corporation 的 RT9917 的参考设计
- 电路显示安全地 RGND 错误地连接到 NEGB 而不是 LTC4355 和 LTC4354 的 RTNB
- AM2G-1212SZ 12V 2 瓦 DC/DC 转换器的典型应用
- LT3493 演示板、1.2A、750KHz 降压型开关稳压器,采用 2mm3mm DFN
- LTC1736 的典型应用 - 5 位可调高效同步降压型开关稳压器
- 使用 LTC3639MPMSE 5 至 150V 输入至 5V 输出、100mA 降压型稳压器的典型应用
- 使用 Omron 的 S8VS-18024A 的参考设计
- LT3748EMS 隔离式演示板,10V Vin 15V,Vout = 52.5V @ 0.7A
- 使用 NXP Semiconductors 的 MCM200 的参考设计
- LT3757,一个 4.5V、36V 至 5V、3A 的反相转换器
- ADI有奖直播:基准电压源产品技术及应用选择 7月25日上午10:00-11:30 不容错过~
- 免费申请|基于STM32H7处理器的机器视觉微控制器板OpenMV4 Cam H7
- 【提问有礼】TI MCU,今天你提问了吗?
- 学最新DLP课程,跟帖抢楼赢好礼!
- 有奖直播|TI MSP430™民用超声波水表开发指南及其智能模拟组合模块在传感器检测中的应用
- 2016 TI嵌入式产品研讨会全网首映,下载有好礼!
- Molex紧凑型Type-C连接器 为您的设计节约宝贵空间!下载好礼送!
- 第二季学习体验活动风暴来袭!
- 福禄克首款热成像万用表Fluke-279FC 即将上市!填写问卷赢好礼喽!
- 联想栗子工业智能开发板抢先首发!免费申请进行时~另有12 月 22 日深圳技术沙龙邀您莅临!