基于STM32处理器的数字PDA系统设计

时间:2022-10-21 09:20:51

基于STM32处理器的数字PDA系统设计

摘要:数字PDA系统整体由硬件电路和软件系统2部分组成,硬件电路由低功耗ARM微控制器STM32ZET6控制的PDA电路组成,软件系统则由硬件驱动程序、μC/OSⅡ实时操作系统、FATFS文件系统、GUI等部分组成。数字PDA系统将整个软件系统进行了整合,提供一种基于页的机制方法,即每页都是一个线程,利用μC/OSⅡ的信号量、邮箱机制实现多线程之间的任务切换。PDA系统采用页机制的设计,旨在减少增加应用程序时代码的修改量和提高整个PDA软件系统的稳定性,以及提高应用程序的开发速度。

关键词:STM32; μC/OSⅡ; 数字PDA系统; 页机制; ARM

中图分类号:TN91934文献标识码:A文章编号:1004373X(2012)04007503

Design of digital PDA system based on STM32 processor

HU Jinlin1, ZENG Shangyou1, WANG Liang1, DAI Wei2

(1. Electronic Engineering College, Guangxi Normal University, Guilin 541004,China;

2.Yunnan Economics Trade and Foreign Affairs College, Kunming 650114, China)

Abstract: The digital PDA system contains hardware circuit and software system. The hardware circuit is composed of the peripheral circuits of PDA controlled by the low power ARM microcontroller STM32ZET6. The software system is composed of hardware drive program, realtime operating system , file system FATFS and GUI. The digital PDA system integrates the software system, and provides a method based on the page, which is a thread, and utilize the semaphore and mailbox mechanism to switch tasks between multiple threads. The design of the page mechanism is adopted in the PDA system to reduce the amount of the code modification when the PDA system adds application program, and improve the stability of PDA software system and the development speed of application program.

Keywords:STM32; μC/OSⅡ; digital PDA system; page mechanism; ARM

收稿日期:20110821

基金项目:国家自然科学基金资助项目(11065003);广西自然科学基金资助项目(2011GXNSFA018129);广西教育厅资助基金项目 (201012MS026)0引言

以CortexM3为内核的处理器由于其低功耗以及低成本并且是32位处理器,越来越多的研究人员已经从51处理器、AVR等处理器开始转移到这个领域。数字PDA系统设计采用的是以CortexM3的内核STM32ZET6控制器,但是由于STM32ZET6内部没有MMU,不能移植WinCE,Linux等操作系统,故只能应用ucLinux,μC/OSⅡ等实时操作系统[1]。传统的操作系统ucLinux,μC/OSⅡ在微控制器中移植后,应用程序就开始了与操作系统、以及硬件驱动之间的交互,一旦要添加新的应用程序或者对应用程序的更改,代码的修改量以及整个操作系统的稳定性都会收到影响。这时就需要一种新的机制,能够在保证系统稳定性的基础上快速设计应用程序,也正是基于这种思想,数字PDA系统将实时操作系统、硬件驱动、FATFS进行统一的封装,并给出一种基于页的机制,每一页就是一个线程,利用μC/OSⅡ操作系统进行任务间的切换[2],而应用程序只需要按照页的设计规则,进行应用程序页设计即可,设计最终证明是合理可靠的。

1数字PDA系统原理框图说明

数字PDA系统的硬件电路部分由微控制器STM32F103ZET6、16 Mb NOR FLASH存储器、液晶显示LCD控制电路、USB接口电路、VS1003B MP3解码芯片电路、2 Gb misroSD卡接口电路、以及2.5~5 V电源电路组成。它的结构图如图1所示。

2数字PDA系统硬件电路设计

2.1微处理器MCU

微处理器MCU采用STM32F103ZET6 ARM芯片,其特点是低功耗、价格低、具有丰富的外设资源如FSMC控制器、USB、多路SPI和USART,并且有MDK编程手册,易于上手[3]。

图1数字PDA系统硬件电路组成部分2.2NOR FLASH存储器

NOR FLASH采用M29W128芯片,NOR FLASH的作用是存储页面资源、GUI资源、以及各种字库资源。数字PDA系统硬件电路使用微控制器的FSMC控制器对M29W128 NOR FLASH进行读写操作,主要是为了提高对M29W128 读写速度。M29W128 NOR FLASH中的存储的数据,也可以通过从microSD卡中读取并进行存储。

2.3TFT液晶显示电路

数字PDA系统硬件电路使用以HX8312为主控芯片的液晶控制电路和主控制器连接。主控制器和液晶控制电路之间的数据通信也使用主控制器的FSMC接口,目的是进行快速传输数据,避免液晶显示刷屏现象的产生。

2.4VS1003音频解码电路

VS1003是音频解码芯片[4],它支持Mpeg1和Mpeg2,WMA,MIDI,MP3解码,同时支持IMA ADPCM(单声道)、麦克风和线入等编码.VS1003具有一个高性能低功耗的DSP处理器核VS_DSP,0.5 KB数据RAM。数字PDA系统使用VS1003音频解码芯片,实现PDA的音乐MP3的播放功能。

2.5USB接口电路和microSD卡接口电路

STM32微控制器具有1个USB接口,该USB接口主要实现数字系统PDA在和PC机连接时的USB通信,当然也能为数字系统PDA系统供电。microSD实现了数字PDA系统的大容量数据的存储[56]。

2.6PDA内部USB转串口电路

PL2303遵循USB协议,并且支持到RS 232的转换。PDA数字系统通过PL2303电路实现主控制器的串口和PC之间的串口通信,这个电路主要用于系统调试[7]。

2.7电源电路

电源电路包括锂电、5 V外接电源滤波电路、5 V转3.3 V、3.3 V转2.8 V、3.3 V转2.5 V五个电路,它们主要负责分别给主控制器、解码芯片、SD、NOR FLASH提供电源。

3数字PDA系统软件系统设计

3.1软件系统总体介绍

相比较硬件电路来说,硬件电路一旦确定并且电路正确,基本上没有大的变化,而软件部分则会出现非常大变化,因为应用的程序是多种多样的。但是STM32微控制器没有像PC处理器那样含有MMU,不能运行Linux和WinCE操作系统,但是在很多情况下,PDA数字系统是要实现多任务操作的,或者说多线程操作,所以在这种条件下,PDA数字系统采选用μC/OSⅡ进行多任务之间根据优先级别的调度,而应用程序又是基于操作系统和硬件的,为了提高操作系统的稳定性和减少在数字PDA添加应用程序时代码的修改了,所以数字PDA系统将操作系统、GUI、硬件驱动程序、文件系统FATFS进行整合,采用一种页机制,每一页就是指一个TFT LCD显示的页,每一页就是一个线程,当页切换时,底层操作系统就实现任务的切换。

3.2FATFS文件系统的移植

由于PDA数字系统使用SD卡作为大容量数据的存储,虽然主控制器STM32含有SDIO接口,硬件驱动程序只要进行相应的配置就能实现SD的读写操作,但是这种操作时基于扇区的,而上层应用程序操作的是文件,所以必须移植文件系统。移植步骤就是将SD的读写扇区函数和文件系统的底层接口函数想关联。数字PDA系统使用FATFS文件系统,当然也可以使用FAT32文件系统,FATFS文件系统中diskio.c中提供五个接口函数,如图2所示。

图2FATFS接口函数将microSD卡驱动函数的SD扇区读函数、扇区写函数、以及SD初始化的函数和图中的disk_read,disk_write,disk_initialize[8]进行对接,当让还要在FATFS文件系统中数据类型integer.h中包含stm32f10x.h 以及将integer.h中的数据类型进行更改,只需要更改文件系统中BOOL类型数据和stm32f10x.h中的bool类型一致即可,文件系统就移植完了。移植了FATFS文件系统后,数字PDA系统在读取SD卡时,就可以按照大家常用的文件格式进行读取数据。

3.3μC/OSⅡ实时操作系统的移植

μC/OSⅡ为PDA数字系统的操作系统提供多线程操作,任务的调度。由于系统需要多线程的调度,需要为数字PDA系统移植μC/OSⅡ。数字PDA系统使用信号量和邮箱机制进行多任务的调度。μC/OSⅡ是用标准C语言和汇编语言来写的,只有与微处理器相关的是由汇编指令写的,所以在STM32F103ZET6上中移植μC/OSⅡ实时操作系统,只需要更改或者重写处理器相关文件OS_CPU.H和OS_CPU_C.C,汇编文件OS_CPU_A.ASM,系统配置文件OS_CFG.h[8]。

3.4硬件驱动程序

数字PDA系统在调用微控制器的各种外设接口资源、以及各种硬件资源时需要调用这些硬件资源的驱动程序。数字PDA系统的硬件驱动程序由串口打印输出驱动程序、SD卡驱动程序、VS1003B硬件驱动程序、TFT LCD液晶显示器驱动程序、3个SPI串行通信口的驱动程序、NOR FLASH 和STM32 FSMC接口驱动程序、触摸屏TSC2046驱动程序组成。以上的驱动程序保证了各个模块硬件资源的正常工作。作为最底层驱动程序,这些程序保证了整个数字PDA系统能够实现各种应用程序。

3.5页与GUI图形界面接口

数字PDA系统要在TFT LCD液晶显示器中的进行图形界面的显示,需要GUI的支持,数字PDA系统采GUI设计没有移植uCGui,而是根据液晶控制器重写的GUI,由于STM32F103ZET6微控制器的时钟为72 MHz,这样写的好处在于提高液晶页面显示的速度,减少刷屏现象的产生,提高PDA液晶画面显示的质量[56]。

数字PDA系统将以上的所有软件进行了整合,将液晶屏显示一个页作为一个线程,页面进行切换就实现了任务的切换,任务的切换由操作系统实现。通过页机制的框架,在应用程序进行修改或者添加新的应用程序时,减少了代码的修改量,保证系统的稳定性。

数字PDA系统启动后就进入主页线程,操作系统系统根据硬件中断和信号量邮箱机制,进行也切换,页切换的时候,会调用文件系统或者硬件驱动程序,这就是PDA系统的工作原理。

4结语

数字PDA设计是在硬件电路设计上移植文件系统、操作系统上完成的,整个系统不仅要求硬件电路的兼容正确,同时也要求FATFS文件系统和μC/OSⅡ操作系统的移植正确,整个系统基于页的机制进行任务切换,经过实际证明页机制可以进行快速严谨的应用程序开发。

参考文献

[1]任哲.嵌入式实时操作系统μC/OSⅡ原理及应用[M].北京:北京航空航天大学出版社,2009.

[2]LABROSS Jean J.嵌入式实时操作系统μC/OSⅡ[M].邵贝贝,译.北京:航空航天大学出版社,2007.

[3]王永虹,徐炜,郝立平.STM32系列 ARM CortexM3微控制器原理与实践[M].北京:北京航空航天大学出版社,2008.

[4]李宁.基于MDK的STM32处理器开发应用[M].北京:北京航空航天大学出版社,2008.

[5]陈东升,高俊侠.基于STM32的远程温控系统设计[J].电子产品世界,2011(5):710.

[6]武利珍.基于STM32的便携式心电图仪的设计与实现[D].杭州:杭州电子科技大学,2009.

[7]刘军.例说STM32[M].北京:北京航空航天大学出版社,2011.

[8]黄杰,黄秉,罗晓曙.μC/OSⅡ在ARM系列单片机S3C44B0X上的移植[J].现代电子技术,2009,32(18):5657.

[9]邸兴,张建花.基于STM32的BMP图片解码系统[J].电子设计工程,2011(10):9597.

[10]陈海生.基于STM32的TransFlash卡读写技术研究[D].哈尔滨:哈尔滨工业大学,2010.

上一篇:嵌入式Linux NFS根文件系统的构建及研究 下一篇:C语言函数参数传递规律