历史上的今天
返回首页

历史上的今天

今天是:2025年03月01日(星期六)

2021年03月01日 | 基于Cortex-M3内核的TFT触摸屏在环境监控系统中的应用

2021-03-01 来源:eefocus

0 引言

触摸屏是一种新型的电子输入设备,是目前最简单、方便、自然的一种人机交互方式,它赋予了多媒体以崭新的面貌,是极富吸引力的全新多媒体交互设备。将ARMCortex-M3内核和TFT触摸屏结合在一起,以环境监控系统为应用,对ARM公司的Cortex-M3内核进行了分析,并研究了Cortex-M3内核驱动TFT液晶屏幕的可行性。


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触摸屏单元提供友好的人机界面,且具有坚固耐用、反应速度快、节省空间、易于交流等许多优点。随着多媒体查询的与日递增,在未来的电子产品中,触摸屏无疑将成为输入设备的主流。


推荐阅读

史海拾趣

Corex Intervest Inc公司的发展小趣事

随着技术的不断发展,Corex Intervest Inc公司意识到要想在竞争激烈的电子行业中脱颖而出,必须不断进行技术创新和产品升级。因此,公司加大了研发投入,引进了一批高端人才,积极研发新型电子产品。经过多年的努力,公司成功开发出了一系列具有创新性和市场竞争力的产品,如智能传感器、高性能电源模块等,为公司的发展奠定了坚实的基础。

FINTEK公司的发展小趣事

FINTEK公司深知技术创新是企业持续发展的核心动力。因此,公司不断加大研发投入,建立了完善的研发体系和激励机制。通过与国内外知名高校和研究机构的合作,FINTEK在人工智能、物联网、5G通信等前沿领域取得了多项重要技术突破。这些创新成果不仅提升了公司的核心竞争力,也为电子行业的未来发展贡献了重要力量。

CONEXANT公司的发展小趣事

在无线通信技术快速发展的时代,Conexant公司积极寻求与业界领先企业的合作机会。2001年,Conexant宣布将其无线业务部门与Alpha Industries合并,共同创建一个价值约30亿美元的新企业。这一合并不仅扩大了Conexant在无线通信领域的市场份额,也为其带来了更多的技术资源和市场机会。合并后的新企业以Conexant为主导,通过整合双方的优势资源,实现了无线业务的快速发展和市场份额的稳步提升。

Caddell-Burns Manufacturing公司的发展小趣事

在竞争激烈的电子行业中,质量管理是企业生存和发展的关键。Caddell-Burns Manufacturing公司深知这一点,因此他们始终将质量放在首位。公司建立了严格的质量管理体系,从原材料采购到产品生产、检验、包装等各个环节都进行严格把关。同时,公司还定期对员工进行质量培训,提高他们的质量意识和操作技能。这些措施确保了公司产品的稳定性和可靠性,赢得了客户的信赖。

CUI Devices公司的发展小趣事

CUI Devices的历史可以追溯到1989年,当时它作为CUI Inc的一部分,在俄勒冈州波特兰郊外以高精度示波器探头制造商的身份进入市场。然而,随着时间的推移,公司逐渐认识到市场的多元化需求,开始积极拓展其产品供应和业务范围。2019年9月,一群在CUI Inc有着深厚背景和平均任期超过15年的高级管理人员,剥离了部分业务,成立了新的私人实体——CUI Devices。这一转型不仅为公司注入了新的活力,也为电子元件行业带来了更多的可能性。

GSI Technology公司的发展小趣事

进入21世纪后,GSI Technology继续加大研发投入,不仅巩固了其在SRAM领域的领先地位,还成功扩展了产品线,包括同步突发SRAM、无总线周转SRAM等。同时,公司还推出了SigmaRAM、SigmaQuad、SigmaQuad II等系列产品,这些产品以其卓越的性能、高可靠性和低功耗特性,赢得了市场的广泛认可。此外,GSI还致力于提供超长产品支持生命周期和完整的售前售后服务,进一步增强了客户粘性。

问答坊 | AI 解惑

AD9850

大家看资料吧…

查看全部问答>

这个是什么型号的IC?

请问,丝印文字B18,sot-23-5封装,这个是什么型号的IC?…

查看全部问答>

关于API的一些问题

谁能说说LINUX的编程函数像关于文件I/0的open,write,read,关于进程的fork()函数等与API的曲别与联系啊,它们的侧重点都在哪?…

查看全部问答>

Win ce 5.0 下SD卡驱动程序中的"sdbusdriver"

微软自带的Bus层驱动程序中,在其下的文件sdhceventhandlers.cpp下有一个slotstatuschange函数,这个函数是一个死循环专门负责卡插入拨出时的加载和卸载还有设备中断,在循环中有一个pWorkItem->GetMessage(),用来等待消息,以控制循环。有没有高手 ...…

查看全部问答>

MSP430F149单片机,串口通信

我使用USART1模块进行串口通讯,但调试的时候发现程序进不了中断。 相关代码: #include \"msp430x14x.h\" #define uchar unsigned char #define uint  unsigned int #define URXD1 BIT7 #define UTXD1 BIT6 uchar dataSedBuffer[100] ...…

查看全部问答>

新人请教:CE6 模拟器

    wince6.0 编译产生Nk.bin后,如何在pc上模拟啊,怎么设置或者是否要安装其他软件?…

查看全部问答>

在什么情况下需要8M晶振?

好像只用低频晶振也可以跑125ns嘛,也不知是不是…

查看全部问答>

请教:关于LSD-MSP430PRGS-IIIA编程器

请教:关于LSD-MSP430PRGS-IIIA编程器的BSL密码文件,在说明书中提到 “BSL 密码文件:装载代码的密码文件,芯片熔丝烧掉以后,程序需要更新,但是不希望信息FLASH 里的数据被擦除的情况下使用这种方法,进行这种操作时,务必需要执行以下操作:加 ...…

查看全部问答>

我们做到了,DSP价格只有2美金!!!

刚收到的TI的邮件,是个好消息     这里有链接地址:http://www.ti.com.cn/lsds/ti_zh/dsp/platform/c5000/whats_new.page?sp_rid_pod4=NjU0NjY2MzEzOQS2&sp_mid_pod4=37010664    …

查看全部问答>

请教:Quartus6.0中打开SOPC打不开,出现at.java.awt....(Unknown Source)

请教各路高手:Quartus6.0中点击SOPC打不开,出现很多诸如at.java.awt....(Unknown Source)          注:Nois 已经安装。           此问题困我很久了,望高手指点迷津。 ...…

查看全部问答>