1 系统工作原理
无线环境监控系统总体的设计框图如图1所示。以基于第二代Cortex-M3内核的LPC1758为核心,以TFT触摸屏为显示和控制单元,以2.4 GHz无线模块为通信单元,合理移植μCOS-II系统,对环境参数进行监测和控制。
2 硬件电路设计与实现
2.1 电源方案
硬件电路降压稳压电路采用降压稳压芯片SPXlll7-3.3 V。电路在启动过程中会产生较大的冲击电流,会对其他电路造成电磁干扰,系统在电源中增加容值较大的电解电容以满足系统中各项要求。降压稳压电路如图2所示。
硬件电路升压稳压电路是为TFT液晶屏提供直流12 V电压驱动而设计的。该电路选用PT4102芯片,PT4102是一款由单节锂电池(持续电流)来驱动至多个串联LED的升压转换器,采用固定频率电流模式来调节LED电流,并通过一个外部电流监测电阻来测量此电流,95 mV的低反馈电压可降低功耗和提高效率,PT4102还含有电流限制以避免在输出过载时对器件造成损害。升压稳压电路如图3所示。
2.2 MCU方案
基于CorteX-M3的MCU选用的是荷兰Philips公司LPCI000系列的LPC1758。运行频率高达100 MHz,支持8个区域的存储器保护单元(MPU),高达512 KB片内FLASH程序存储器。增强型的FLASH存储器加速器使能高速的100 MHz操作,而无需等待状态(with zero wait states)。互连的多层AHB矩阵为每个AHB主机提供独立的总线。这种互连所提供的通信不会有仲裁延时分开的APB总线允许高吞吐量,几乎不会在CPU和DMA之间出现中止。 系统采用12 MHz的无源晶振,为了保证晶振的谐振频率和输出幅度,在晶振的两个引脚上加入了两个22 pF的负载电容。在不影响电路正常工作的情况下,为了简化电路设计,没有将数字电路和模拟电路区分开来,VDDA与VDD直接相连、GNDA与GND直接相连。但是为了追求更优秀的模拟性能(ADC和模拟比较器模块),可以另外安排一路3.3 V电源,连接到VDDA和GNDA,使其与VDD和GND分开。LPC1758部分电路图如图4所示。
系统采用如图5所示的RC复位电路。复位电路中的二极管是为了解决电源毛刺和电源缓慢下降等问题,而104电容可避免高频谐波对电路的干扰。
2.3 TFT触摸屏方案
TFT液晶显示方案包括触摸控制和液晶显示两个部分。为了保证显示的速度要求和系统的稳定性,触摸屏控制器选用的是TI公司的TSC20 46,该控制器为SPI接口,具有触摸中断功能,性价比很高。而液晶屏选用的是SPFD5408A,该屏幕为3.5英寸,具有高速8,9,16,18位并行接口。可以显示16位和18位的RGB色彩。
触摸屏控制电路主要是TSC2046的外围电路。MISO,MOSI是TSC2046与MCU之间的信号线。SCK是时钟线。X+/-,Y+/-是触摸屏的信号,INT中触摸中断信号。VCC和VCCl是电路的供电信号。在输入引脚为了保证电源的波形稳定性,避免高频谐波对TSC2046的干扰,加入了1个0.1μF的滤波电容。触摸屏控制电路如图6所示。
TFT液晶显示电路包括模式选择,16位接口,触摸屏接口三个部分。SPFD5408A接口模式有7种模式,本设计中用的是16位并行接口模式。X+/-,Y+/-是四线电阻式触摸屏的输出线。
3 软件设计与实现
为了提高系统的性能和满足多任务处理的要求,系统中合理地移植了μCOS-Ⅱ操作系统。
μCOS-Ⅱ可以简单地看作是一个多任务的调度器,在这个任务调度器之上完善并添加了很多任务操作系统相关的一些系统服务。μCOS-Ⅱ 90%的代码用C语言编写,具有可移植性。移植工作的绝大部分都集中在多任务切换的实现上,因为这部分代码主要是用来保存和恢复处理器现场(即相关寄存器),因此不能用C语言,只能使用特定的处理器汇编语言完成。为了使适时内核μCOS-Ⅱ能在Cortex-M3处理器上运行,同时为了保证代码不依赖于编译器和良好的扩展性。采用了不依赖于编译器的数据类型,使用软中断SWI作为底层接口。移植μCOS-Ⅱ到Cortex-M3内核需要3个文件:C语言头文件(OS_CPU.H),C程序源文件(OS_CPU_C.C),汇编程序源文件(OS_CPU_A.ASM)。除此之外,还有一个文件定义的汇编宏也是移植的重点,它是μCOS-Ⅱ为Cortex-M3通用的中断服务程序的汇编和C函数的接口代码。
OS_CPU.H中包含两部分的代码,数据类型定义代码和与处理器相关的代码。其中数据类型重定义代码是用C语言中short,int,long等,数据类型是与特定的处理器相关的,因此在μCOS-Ⅱ重新定义为移植性很强的定义方式。在OS_CPU.H剩下的部分是移植必须定义底层函数的声明。在LPC1758的移植中为了使底层接口函数与处理器的状态无关,同时使任务调用相应的函数不需要知道函数的位置。在本移植中使用软中断指令SWI作为底层接口,使用不同的功能号来区分各函数。调用这些底层函数,只需要使用一条SWI指令并跟上一个功能号来区别你要调用那个函数即可。任务切换函数为OS_TASK_SW(void),并使用软中断0x00。CPU_C.C中主要是软中断的实现和底层函数的实现及初始化任务堆栈函数的实现,其伪代码如下:
处理器能支持一定数量的数据存储硬件堆栈;用C语言可以开中断/关中断,根据不同的Num值跳转到不同的底层服务函数地址。
系统的应用程序包括三个任务:实时显示屏幕数据任务,采集数据函数,触摸屏响应任务。设计中采用了任务嵌套的方式,将数据采集和触摸屏响应嵌套到实时显示屏幕数据任务之中,这样数据在各个任务之间的传递很有逻辑性,整个系统比较健壮。任务间的通信如图8所示。
移植μCOS-Ⅱ是为了在自己系统中使用μ肛COS-Ⅱ,要在自己的系统中使用μCOS-Ⅱ编写应用程序。应用程序包括相应的头文件,任务堆栈的宏文件和任务相关的文件。由于每个任务都是独立的,所以堆栈部分的宏定义的代码是应用程序必须要有的。建立任务之前必须初始化任务并建立一个空闲的任务。在建立多任务时,必须通过OSTaskCreat()函数建立至少一个用户任务。建立好任务后,利用OSStart()函数开始任务。应用函数主函数如下:
4 结语
利用LPC1758处理器成功验证了采用ARM公司Cortex-M3内核的MCU驱动TFT触摸屏的可能,包括以上硬件方案的提出和软件系统移植的实现,TFT触摸屏单元提供友好的人机界面,且具有坚固耐用、反应速度快、节省空间、易于交流等许多优点。随着多媒体查询的与日递增,在未来的电子产品中,触摸屏无疑将成为输入设备的主流。