
前言 本应用笔记描述了如何优化黑白图像的大小以将其存入 STM32 微控制器的嵌入式闪存,以及如何在 E-Paper 显示器上显示它们。 本应用笔记中说明了如何准备和编码黑白图像,并给出了对图像解压缩、将其在 4 灰度级的E-Paper 显示器上显示出来的软件解决方案。 STM32 微控制器可连接 E-Paper 显示器,使用特定外设向 E-Paper 显示器控制器发送数据 /命令,并驱动特定 GPIO 来管理 E-Paper 控制引脚。 本应用笔记和相关软件 (STSW-STM32152)都是基于 STM32L053 探索套件(32L0538DISCOVERY),提供了嵌入式 E-Paper 显示器。对于任意一款 STM32 微控制器客户板,经过微小改动 (时钟配置, GPIO 定义),可以很容易地重复利用。 E-Paper 显示器的显示区域为 2.1 英寸,包含 172x72 个像素,具有 2 比特完全显示能力。 关于本应用笔记中未说明的 E-Paper 功能,更多详细信息请参考 ST 网站上的 GDE021A1规范。 ![]() 表 1. 可用产品、工具 & 软件 类型 参考产品 STM32 嵌入式软件 STSW-STM32152 STM32 MCU 评估工具 32L0538DISCOVERY 1 实现示例 1.1 概述 本应用笔记中的示例提供了连接某个 E-Paper 与 STM32 微控制器的典型硬件和软件实现基 本知识。 一般来说,系统包括: – 一个 STM32 微控制器 – 一个 E-Paper 显示器,其外部元件用于 E-Paper 显示器驱动器 (嵌入到GDE021A1 E-Paper 显示模块中)的电荷泵。 ![]() E-Paper 显示模块经由 SPI 接口连接到 STM32 MCU 来接收数据和命令,配置显示器并将图片传输到 E-Paper 模块内部 RAM 缓冲器中。 图片存储到内部 Flash 程序存储器中,以减少外部资源。包括 4 张图片以演示 STM32L053的主要特性。图片会循环显示,当第 4 张图片已经在 E-Paper 模块上显示出来时,又返回第一张图片。 注: 如果嵌入式闪存的空间很小,不能满足应用代码和图片库的需求,那么图片可存储在外部存储器中 (比如 SD 卡或外部闪存)。这种情况下,通常没有必要缩小图片尺寸,也不需要使用本应用笔记中给出的扩展算法。由于图片无任何预处理就被发送到 EPD 的缓冲区,因此缩短了数据处理时间。 1.2 STM32 配置 一般要求 样例主要基于 STM32L053 探索套件,但其功能和结构说明与大多数应用和平台类似。 1.2.1 SPI 外设 MCU 和 E-Paper 显示器之间的通信使用 SPI 协议。 MCU 将 SPI 配置为主 8 位模式, NSS由软件管理。这里不需要 CRC。 E-Paper 显示模块可只通过 SPI 通道写入。 这是为什么定义 MOSI 线而不是定义 MISO 线的原因。 用来通信的频率是 2 MHz,开始 HSI 设为 16 MHz,在 SPI 波特率发生器中应用系数为 8 的预分频器 (将其分频为 2 MHz)。 1.2.2 系统时钟 应用笔记中将高速内部振荡器设置为系统时钟。时钟路径上没有分频器, APB 和 AHB 总线频率为 16MHz。 1.2.3 使用特定的 GPIO 控制 E-Paper 显示器。 利用一些特定信号来控制 E-Paper 显示器: • EPAPER_Reset:此信号由 MCU 产生,用来复位 E-Paper 寄存器,并清除任何正在进行的刷新。 • EPAPER_D/C:数据/命令线。此输出由MCU生成,使E-Paper显示模块能够识别SPI发送的数值是命令还是数据。 • EPAPER_CS:这是芯片选择引脚。此输出由 MCU 生成,用来使能嵌入到 E-Paper 显示模块中的 SPI 从设备。 • EPAPER_Busy:此信号来自 E-Paper 显示模块,用来向 MCU 报告该模块的状态。当软件启动刷新时,BUSY 位将被置位,E-Paper 显示器上不能有更多操作(不再有命令或数据),以避免显示错误。 • EPAPER_Power_switch:此GPIO用来控制为E-Paper显示模块上电/掉电的模拟开关,以节约应用的功耗。 1.3 E-Paper 显示器配置 用于 STM32L053 探索套件的 E-Paper 显示器是可配置的。建议参考 E-Paper 说明 (型号GDE021A1),以便能更好地理解此应用笔记处理 E-Paper 模块所采用的方法。 编码图片的数据通过 MCU 的 SPI 外设被填充到 E-Paper 模块的内部 RAM (请参考表 2:Ram 地址映射)。 每次写操作后,根据 E-Paper 模块的配置, RAM 地址递增或递减。地址计数器可沿 X 或 Y方向更新。对于 X、 Y 坐标系,可独立配置每个轴的开始 / 结束地址。 对于本应用笔记,模块配置为沿 X 方向从 0 至 71 递增地址计数器,然后沿 Y 方向从 0 递增至 171。 ![]() 此应用笔记中所采用的配置在更新操作后无需使 E-Paper 显示模块进入深度睡眠模式。这意味着 RAM 数据保持在两个更新刷新周期之间。 当没有正在进行的更新时,如果应用需要降低功耗,可以配置 E-Paper 使其处于深度睡眠模式。于是功耗可以降低为 1/10 (降至 2 µA),但是这种情况下无法保持 RAM 内容。这种情况的缺点是部分图片不能刷新显示,在刷新显示之前,整个图片的所有像素必须通过 SPI 重新加载到 RAM 中。 这里使用的波形查阅表 (Waveform Look Up Table, LUT)(默认的,无温度范围)。详情请参见 GDE021A1 规范。 ![]() ![]() 每个 RAM 地址存储 4 个像素,每个像素以 4 灰度级进行编码。 STM32 的 SPI 配置为以高位在前的方式来设置传输,如 E-Paper 显示模块所要求的。 图片需要按这些限制进行编码。详情请参见第 1.4 节:图片创建和尺寸压缩。 1.4 图片创建和尺寸压缩 要在 E-Paper 模块上显示的图片须以巧妙的方式创建,以得到适当格式的相应软件常数。它应该易于处理并在 E-Paper 模块上显示。 此图片存储在 STM32L053 的内部非易失性 Flash 程序区。因此图片必须以特定格式进行压缩,编码为 1 比特每像素,以节省存储空间。这样,图片将被编码为黑白的而不再是 4 灰度级的图片。 由于 E-Paper 显示器 RAM 模块需要接收 2 比特每像素编码模式,因此需要从图片存入非易失性 Flash 程序存储器开始进行扩展处理。此操作将由软件管理 (请参考章节第 1.5 节:图片数据扩展,以载入嵌入式 E-Paper RAM) 1.4.1 图片帧 图片帧可进行编辑,例如采用 Windows 中有名的 “ 画板 ” 软件。首先须编辑空白图片 (如图 4:图片帧中)。空白帧为 172x72 像素。 ![]() 然后必须将要显示的图片放入此帧中。如果要在图片中出现文本,可使用专门字体 “ 小字体 ”,它提供了简便的文本显示。 本应用笔记的示意图片显示在图 5: 4 张图片显示在 E-Paper 显示器上中。 ![]() 为了在编码图片 (以一种简便方式,可最小化数据处理)时得到常数,可将图片向右旋转90° (图 6:图片向右 90° 旋转)。这样,如图 7 中所示,编码成常数的字节数量将对所有像素进行编码,且为全帧像素总数的整数倍。 ![]() 然后,必须利用 PAINT 将每张图片存储为 .bmp 图片格式和单色位图类型。 为了直接得到编码要显示图片的 C-constant,可将图片存储为 XBM-X11 格式,例如可使用免费软件 Xnview。这里是进行这种操作后得到的文件格式 (图 7: C 常数编码图片帧)。此常数可在 C 项目中直接使用和声明。 ![]() 利用此图片格式可将每张图片的大小减少 1/2,意味着图片大小为 1.5KB,而不是 4 灰度级模式下的 3KB。 完整版请查看:附件 |
DM00117749_ZHV1.pdf
下载781.08 KB, 下载次数: 1
兔哥的ST67——【000】ST67模组订购
STM32 GUI LTDC 最大像素时钟评估方法
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
OpenBLT移植到STM32F405开发板
为什么要先开启STM32外设时钟?
【STM32MP157】从ST官方例程中分析RPMsg-TTY/SDB核间通信的使用方法
【经验分享】STM32实例-RTC实时时钟实验④-获取RTC时间函数与中断服务函数
STM32 以太网 MAC Loopback 的实现
刘氓兔的64位入门挑战【1】——MP257芯片下单和硬件准备
刘氓兔的64位入门挑战【0】——MP257选型