基于PIC微控制器的嵌入式图形应用开发指南

电子说

1.4w人已加入

描述

基于PIC微控制器的嵌入式图形应用开发指南

在当今数字化的时代,图形显示设备在我们的生活中无处不在,从手机、计算器到交通信号灯、广告板等。越来越多的设备开始具备图形显示功能,这不仅提升了用户体验,也为产品带来了更多的竞争力。对于电子工程师来说,设计图形应用是一项具有挑战性但又充满乐趣的任务。本文将基于Microchip的应用笔记AN1368,为大家详细介绍如何使用PIC微控制器开发嵌入式图形应用。

文件下载:AC164127-7.pdf

色彩科学基础

色彩的本质

色彩与光的波长密切相关,在人类可见范围内,波长大约从400nm(紫色)到700nm(红色),黄色的中心波长约为575nm。有趣的是,虽然我们知道可以通过混合红、绿、蓝三种基本颜色来得到其他颜色,但实际情况并非完全如此。例如,混合红和绿的光,从波长角度看,是700nm和560nm的光混合,并没有代表黄色的波长,但人眼却会将其感知为黄色光。这就是人眼的色彩识别特性,也是RGB(红、绿、蓝)模型的基础。

RGB模型

RGB模型指出,通过混合适当比例(强度)的红、绿、蓝三种颜色,人眼可以感知到不同的颜色。比如,相同比例的RGB混合会得到灰色;三种颜色都为零得到黑色;三种颜色都为最大值则得到白色。改变RGB的强度比例但保持相同的比例,会得到不同深浅的灰色,即“灰度”。在整个应用中使用单一颜色(固定比例的RGB)就是“单色”应用。

颜色的数字表示

在数字系统中,颜色通常用位或字节来表示。每种基本颜色(RGB)可以用一个字节表示,范围从0到255。因此,使用3个字节可以表示1600万种颜色((2^{24})),这被称为“真彩色”。也常用16位来表示颜色,这样可以表示64K种颜色((2^{16})),对于许多图形应用来说已经足够。常见的16位颜色划分方案有两种:

  • 方案1(R<5> G<6> B<5>):5位红色、6位绿色和5位蓝色。绿色分配更多位是因为人眼对绿色的区分能力更强。
  • 方案2(T<1> R<5> G<5> B<5>):有一个透明位,后面依次是5位的红、绿、蓝。透明位用于指示是否使用该颜色。目前,Microchip图形库(版本2.11)仅支持方案1。

灰度和颜色深度

灰度通常用一个字节表示,0表示黑色,1 - 254表示不同深浅的黑色,数值越大颜色越浅,255表示白色。有时也会使用4位或2位来分别表示16种或4种黑色的深浅。如果只用一位来表示颜色的开或关,就是“单色”。表示颜色所需的位数称为“颜色深度”,例如16位颜色深度意味着需要16位来表示一种颜色,可以表示(2^{16})种不同的颜色。此外,颜色还可以使用颜色查找表(CLUT)来表示,通过表的索引指定颜色,这种方案主要用于节省内存。

基本显示术语

像素和分辨率

屏幕由离散的元素——像素组成,每个像素可以显示一个颜色点,由红、绿、蓝三个点组成。屏幕在水平和垂直方向上的像素数量称为屏幕分辨率,例如320x240表示水平有320个像素(列数),垂直有240个像素(行数)。常见的标准分辨率有QCIF(176x144)、CIF(352x288)、QVGA(320x240)等。在提及分辨率时,最好使用具体的数字而不是名称。

显示模式和宽高比

屏幕可以处于横向模式(宽度 > 高度)或纵向模式(高度 > 宽度)。显示屏幕的可见宽度与可见高度的比值称为“宽高比”,最常用的宽高比是4:3。显示屏的对角线长度称为显示长度,例如3.5英寸的显示屏表示其对角线长度为3.5英寸。

图形子系统硬件

图形系统的组件

嵌入式图形系统有四个基本组件:显示玻璃、显示控制器、帧缓冲区和微控制器。

  • 显示玻璃:负责在像素上显示一系列颜色,并将颜色的数字表示转换为实际颜色。常见的显示类型有TFT LCD、CSTN/MSTN LCD或OLED/AMOLED等。不同的显示技术具有不同的特性,如帧率、残影、水平和垂直消隐、背光、成本、对比度、功耗和视角等。显示玻璃没有固有的内存,需要不断更新像素数据,这个任务由显示控制器完成。
  • 显示控制器:从帧缓冲区获取数据,将其解码为所需的位格式,并将其与适当的控制信号一起提供给显示玻璃。它必须符合显示玻璃的时序要求。
  • 帧缓冲区:通常是一个RAM,用于存储要在显示屏上显示的数据,是显示控制器的数据来源。帧缓冲区的大小取决于分辨率和颜色深度,计算公式为:帧缓冲区大小(字节) = 像素数量 x 颜色深度(位)/ 8。
  • 微控制器:应用代码在微控制器中运行,决定哪些数据应存储在帧缓冲区中。微控制器和显示控制器在颜色深度和帧缓冲区的内存范围方面必须具有相同的设置。微控制器需要有足够的处理能力来在帧缓冲区中渲染所需的形状,以确保在显示屏上快速绘制。

基本组件的集成

在设计图形应用时,如何集成这四个基本组件是一个重要的步骤。有四种可能的组合方式:

  • 选项A:帧缓冲区和显示控制器集成在一个模块中,称为“显示模块”,微控制器和显示模块通过串行或并行接口连接。优点是不需要特定的IC实现图形功能,系统组件少,PCB空间小;缺点是成本通常较高,更换显示模块可能需要更改软件驱动,可能缺乏用于双缓冲、动画等的额外内存。
  • 选项B:帧缓冲区和显示控制器集成在一起,微控制器和图形控制器通过串行或并行接口通信,图形控制器通过RGB接口与显示玻璃连接。优点是更换显示玻璃时不需要更改软件驱动,可能比选项A更便宜;缺点是系统组件更多,PCB空间更大,显示尺寸受显示控制器内帧缓冲区的限制。
  • 选项C:帧缓冲区和显示控制器集成在微控制器内部,微控制器通过RGB接口与显示玻璃连接。优点是只需要一个IC实现图形功能,外形小巧,通常是最便宜的选择,渲染速度更快,更换显示模块时不需要更改软件驱动;缺点是显示尺寸受微控制器内帧缓冲区的限制。
  • 选项D:显示控制器集成在微控制器内部,使用单独的RAM作为帧缓冲区,微控制器通过RGB接口与显示玻璃连接,通过并行接口与帧缓冲区连接。优点是微控制器可以支持最大可能的显示尺寸,通常比选项A和B便宜;缺点是需要额外的IC芯片作为帧缓冲区。

显示面板的电源排序

不同的显示面板有不同的电源供应要求和时序,以启用面板的每个电源信号。常见的电源信号包括数字电源信号、模拟电源信号、LCD电源信号和背光电源信号。这些电源信号必须按照制造商推荐的电源顺序进行供电,否则会显著缩短显示面板的使用寿命。

触摸屏

有些应用需要支持触摸屏,可以通过在显示玻璃上使用单独的触摸屏或选择带有触摸屏的显示模块来实现。触摸屏信号可以由微控制器或单独的触摸屏控制器处理,常见的透明触摸屏有电阻式和电容式两种,电阻式触摸屏最为常用,一般有4线或5线配置。以4线电阻式触摸屏为例,它有四个信号,其中两个是纯数字信号,另外两个信号可以交替配置为数字和模拟信号。当用户触摸屏幕时,通过测量屏幕在水平和垂直方向上的电阻变化,并与校准值进行比较,可以获得触摸点的(x, y)坐标。

决策因素

显示分辨率和尺寸

特定的分辨率可以在不同的显示尺寸中实现,例如QVGA(320x240)显示屏的尺寸范围为1.5英寸到5.7英寸。在应用中,如果用户需要近距离查看显示屏(如手持设备),高分辨率的显示屏是更好的选择;如果用户从远距离查看显示屏(如银行的令牌显示屏),可以使用低分辨率的大尺寸显示屏。如果要显示图片,最好使用高分辨率的显示屏。

显示方向

显示屏有横向(如320x240)或纵向(如240x320)模式。可以通过图形库或显示控制器的90°旋转功能将横向显示屏用于纵向模式,反之亦然。如果旋转是通过图形控制器内部的特殊硬件功能实现的,不会对性能产生影响;如果是通过软件实现的,会对软件性能产生一定的影响。

颜色深度选择

颜色深度的选择会影响帧缓冲区的大小(RAM成本)。如果要显示自然照片,最好选择16位或更高的颜色深度;如果应用只需要256种不同的颜色,可以选择8位颜色深度,这样可以将RAM需求降低50%;如果只需要16种或4种不同的颜色,可以分别使用4位或2位颜色深度,分别节省75%和87.5%的RAM。

帧缓冲区大小

帧缓冲区的大小根据公式计算:帧缓冲区(字节) = 总像素数 x 颜色深度(位/像素)/ 8。如果使用双缓冲技术,帧缓冲区的需求将翻倍。

处理能力(MIPS)

处理能力取决于应用的具体需求,包括屏幕上显示的图形元素数量和复杂程度。绘制复杂形状(如圆形、斜面、文本等)比绘制线条和矩形需要更多的处理能力。如果有硬件图形加速器可用,处理能力的需求会相应降低。对于许多嵌入式图形应用,≥16 MIPS的处理能力可能就足够了。

图形组件的配置

不同的图形组件配置有各自的优缺点,在选择时,通常不是由技术优势或劣势决定,而是由供应链优势或组件的可用性决定。设计师需要在优化设计以满足需求和管理供应链之间进行平衡。

帧率与MIPS

帧率指的是每秒可以显示的不同帧数,对于视频显示是一个很好的性能指标,但对于嵌入式GUI应用来说并非如此。在嵌入式应用中,通常只改变屏幕的一部分,更新时间取决于改变的部件大小和类型。在规划应用时,考虑最坏情况很重要,初步计算帧率和MIPS对于确定系统的初步需求很关键,同时建议使用开发工具(如评估套件)对系统进行评估。

与不匹配数量的显示RGB线接口

显示控制器的RGB线输出数量可能与显示屏的RGB线输入数量不同,但仍然可以进行接口连接。如果显示屏的RGB输入线数量等于显示控制器的RGB线输出数量,不会出现颜色退化;否则,可能会出现轻微的颜色退化。通常将显示控制器的RGB线连接到显示屏显示信号线的高位,未连接的低位可以连接到地、VDD或相同颜色的高位。

PIC24FJ256DA210微控制器

PIC24FJ256DA210是一款16位微控制器,支持高达16 MIPS的处理速度。它包含96 Kbytes的内部RAM和一个内置的显示控制器,带有图形处理单元(GPUs),可以加速常见2D形状的绘制。它还可以通过增强的PMP模块与可选的外部并行RAM接口,以增加帧缓冲区的大小。该微控制器的图形控制器模块具有多个时钟信号和接口,用于驱动显示玻璃、访问寄存器、控制GPU等。此外,它还配备了多个图形加速器,如字符图形处理单元(CHRGPU)、矩形复制图形处理单元(RCCGPU)和膨胀处理单元(IPU),可以帮助释放微控制器的处理能力,提高图形绘制效率。

开发工具

Microchip提供了多种支持图形设计的开发工具,其中两个重要的工具是:

  • Graphics LCD Controller PICtail™ Plus SSD1926 Board(AC164127 - 5):这是一个附加板,可用于Microchip的16位和32位微控制器的通用开发板,如Explorer 16板和PIC32入门套件。
  • PIC24FJ256DA210 Development Board(DM240312):这是一个独立的开发板,两个开发板都需要附加显示模块,这些模块有各种尺寸的显示屏可供选择,用户也可以使用自定义的显示面板。

软件

软件显示驱动

任何图形应用都需要一个基本的软件组件——软件显示驱动,它提供设置像素颜色的基本操作,还可以实现绘制基本形状(如线条、矩形、圆形、文本、图像等)的API。Microchip提供了一个“Microchip Graphics Library”软件库,包含上述驱动和更高层次的功能。该库具有模块化设计、支持多种用户界面、不依赖显示尺寸或分辨率等特点,并且对Microchip客户免费。

软件层结构

  • 显示设备驱动层:每个硬件显示控制器都有自己的命令和状态信息,因此需要为每个支持的显示控制器编写单独的软件驱动。该层的主要功能包括初始化驱动、设置像素颜色、获取像素颜色等。
  • 图形原语层:位于显示驱动层之上,通过API提供最常见的服务,用于绘制基本形状和文本、图像。这些API是通用的,可以与任何显示驱动一起使用。
  • 图形对象层(GOL):由许多可选择的对象(称为“小部件”)组成,如按钮、文本框、复选框等,是复杂图形应用的基本元素。每个小部件都使用基本的面向对象原则实现,可以作为模块使用。使用该层需要在编译时在“GraphicsConfig.h”文件中启用,并且可以根据需要启用或禁用单个小部件,以节省RAM和ROM。
  • 用户消息接口:是GOL的一个子层,用于促进小部件和用户输入之间的消息传递。如果使用GOL,应用代码中必须包含GOLMsgCallback()函数,并且需要在循环中不断调用GOLMsg()函数来处理消息。
  • 应用层:用户在该层可以完全控制应用。首先需要初始化Microchip图形库,然后可以调用原语和驱动层的API来实现所需的绘制功能。创建小部件后,通过在循环中反复调用GOLDraw()函数将其绘制在屏幕上,并通过调用GOLMsg()函数处理消息。

配置

Microchip图形库的配置通过两个文件完成:

  • GraphicsConfig.h:用于配置软件库相关的选项,如非阻塞配置、双缓冲、调色板模式、焦点显示、触摸屏支持、键盘支持、GOL启用、小部件支持、多字节字符支持、字体存储位置、颜色深度等。
  • HardwareProfile.h:用于配置应用的硬件,包括系统时钟、外设时钟、指令时钟、显示相关设置、I/O端口、外部内存定义、触摸屏定义、RTCC定义、通信定义和应用特定定义等。

其他图形库

除了Microchip的图形库,还有一些第三方提供的PIC MCU图形库,如Segger的emWin Graphics Library和Micrium的µC/GUI。

总结

嵌入式图形支持在最近的用户界面应用中变得越来越重要。Microchip通过提供开发工具、图形库、图形启用的微控制器(如PIC24FJ256DA210)以及详细的文档、演示代码和支持,为客户提供了多方面的支持。Microchip的图形解决方案可以成功应用于许多嵌入式图形应用,从而缩短产品上市时间并降低成本。

在开发嵌入式图形应用时,电子工程师需要综合考虑色彩科学、显示术语、硬件组件、决策因素、开发工具和软件等多个方面。通过合理选择和配置这些要素,可以设计出高效、美观的图形应用。希望本文能够为电子工程师在嵌入式图形应用开发方面提供有益的参考。你在开发过程中遇到过哪些挑战呢?欢迎在评论区分享你的经验。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分