你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

如何在 4 灰度级 E-Paper 上显示 STM32 嵌入式存储器中尺寸优化的图片

[复制链接]
STMCU小助手 发布时间:2022-7-13 10:48
前言
/ d$ r" P7 O' {本应用笔记描述了如何优化黑白图像的大小以将其存入 STM32 微控制器的嵌入式闪存,以及如何在 E-Paper 显示器上显示它们。% V. J0 Q3 T, i" y
本应用笔记中说明了如何准备和编码黑白图像,并给出了对图像解压缩、将其在 4 灰度级的E-Paper 显示器上显示出来的软件解决方案。
! B& z2 Q# r; b4 h9 {0 [; N  i0 `STM32 微控制器可连接 E-Paper 显示器,使用特定外设向 E-Paper 显示器控制器发送数据 /命令,并驱动特定 GPIO 来管理 E-Paper 控制引脚。1 {, ~/ ]' t6 ]8 F( k5 e: p! y
本应用笔记和相关软件 (STSW-STM32152)都是基于 STM32L053 探索套件(32L0538DISCOVERY),提供了嵌入式 E-Paper 显示器。对于任意一款 STM32 微控制器客户板,经过微小改动 (时钟配置, GPIO 定义),可以很容易地重复利用。4 w5 V0 X* T3 F( {- W/ L2 f; b
E-Paper 显示器的显示区域为 2.1 英寸,包含 172x72 个像素,具有 2 比特完全显示能力。+ c; E% a/ A* ~& ]6 e4 l
关于本应用笔记中未说明的 E-Paper 功能,更多详细信息请参考 ST 网站上的 GDE021A1规范。, g8 o4 |5 z  P, y8 q

8 F, q/ X- G/ y* z/ W% T# C U]Z6C`%@4BH993SWYNADD5L.png
+ q" Q# j" o6 w( [# I; ~8 h2 }
7 N/ l5 c2 v8 S5 `+ Y5 u1 t4 q
表 1. 可用产品、工具 & 软件/ U& z" m7 L9 ~$ K
类型 参考产品' H8 U! P1 i/ t8 K
STM32 嵌入式软件
  q! q9 p4 T( X; w) U( kSTSW-STM321521 a! m2 M! q2 ~$ P5 g$ v. L5 Q
STM32 MCU 评估工具 : |  ]' _$ k$ y
32L0538DISCOVERY2 y, M2 ~6 b4 ~* F/ V/ [$ d

# `( n& ]! c, c1 F, u% }  X

4 d0 M  d: k3 }0 H* w* e4 O
5 q8 [2 \# r; \+ I( }9 }/ a1 实现示例
6 v( V1 E+ y! D# U. S# `5 h1.1 概述
# y% o1 K4 V4 s+ t: F  C2 p' \1 q* c本应用笔记中的示例提供了连接某个 E-Paper 与 STM32 微控制器的典型硬件和软件实现基
& O$ u; u; \$ a# Z( K本知识。
- y2 D" N. M) z一般来说,系统包括:3 o4 \9 W" t) G1 r) i; O3 t
– 一个 STM32 微控制器
( ~# Y8 U! D- H– 一个 E-Paper 显示器,其外部元件用于 E-Paper 显示器驱动器 (嵌入到GDE021A1 E-Paper 显示模块中)的电荷泵。
) K1 V9 x% k! @# d0 w
8 o  G) q1 O9 s2 [) `

& H: B7 V' v8 z' R& W! O! w )QLU6@4JA%OP2OW_TJAX@{K.png . {+ p$ C, o9 N5 u6 m. @. m0 E# n

& Z2 ]6 `7 ~; o% A) ~

8 x) E, g9 h3 m' r3 jE-Paper 显示模块经由 SPI 接口连接到 STM32 MCU 来接收数据和命令,配置显示器并将图片传输到 E-Paper 模块内部 RAM 缓冲器中。* ]/ u: Y1 }4 z) C+ w: g7 i$ E. ]' d
图片存储到内部 Flash 程序存储器中,以减少外部资源。包括 4 张图片以演示 STM32L053的主要特性。图片会循环显示,当第 4 张图片已经在 E-Paper 模块上显示出来时,又返回第一张图片。
  n& K% Y& T! Y; d0 [& ^注: 如果嵌入式闪存的空间很小,不能满足应用代码和图片库的需求,那么图片可存储在外部存储器中 (比如 SD 卡或外部闪存)。这种情况下,通常没有必要缩小图片尺寸,也不需要使用本应用笔记中给出的扩展算法。由于图片无任何预处理就被发送到 EPD 的缓冲区,因此缩短了数据处理时间。1 m6 O  M# U' G: x
9 d* I# u% {* K& h
1.2 STM32 配置& i) c+ \9 }: e6 u) ?
一般要求
* i2 L2 E+ F% w1 E5 O9 {* ?样例主要基于 STM32L053 探索套件,但其功能和结构说明与大多数应用和平台类似。
  t6 S0 {6 }' ]/ b9 i2 Z0 j; b& d/ H; o% _3 q3 B; H
1.2.1 SPI 外设: c7 [3 u& ]: I) X
MCU 和 E-Paper 显示器之间的通信使用 SPI 协议。 MCU 将 SPI 配置为主 8 位模式, NSS由软件管理。这里不需要 CRC。 E-Paper 显示模块可只通过 SPI 通道写入。 这是为什么定义 MOSI 线而不是定义 MISO 线的原因。
9 o) I" [* y1 ]' F用来通信的频率是 2 MHz,开始 HSI 设为 16 MHz,在 SPI 波特率发生器中应用系数为 8 的预分频器 (将其分频为 2 MHz)。
  B0 W  l( L" u, F: M1 d
2 w- ]3 |( g6 m! c' w
1.2.2 系统时钟
) V: }( h6 k/ p6 x/ e& f8 ?( [. y应用笔记中将高速内部振荡器设置为系统时钟。时钟路径上没有分频器, APB 和 AHB 总线频率为 16MHz。
9 s+ q2 \3 X' G0 L! W$ q9 P6 @1 s- i. M
( B% j6 }4 ]- e' Y5 e1 I1 B. j
1.2.3 使用特定的 GPIO 控制 E-Paper 显示器。! U2 }5 s/ }$ R/ {2 E
利用一些特定信号来控制 E-Paper 显示器:  ?. D  ~. L' T  w* B4 C' R7 f* [
• EPAPER_Reset:此信号由 MCU 产生,用来复位 E-Paper 寄存器,并清除任何正在进行的刷新。0 p8 X0 d7 ~& |9 y8 b5 l0 a# U
• EPAPER_D/C:数据/命令线。此输出由MCU生成,使E-Paper显示模块能够识别SPI发送的数值是命令还是数据。
: F- g. P8 n0 c: r) w: n% S• EPAPER_CS:这是芯片选择引脚。此输出由 MCU 生成,用来使能嵌入到 E-Paper 显示模块中的 SPI 从设备。: H7 ^1 m% [3 w$ V1 s! F
• EPAPER_Busy:此信号来自 E-Paper 显示模块,用来向 MCU 报告该模块的状态。当软件启动刷新时,BUSY 位将被置位,E-Paper 显示器上不能有更多操作(不再有命令或数据),以避免显示错误。
1 ^6 O4 s$ ]( o) ^, w1 h0 ?• EPAPER_Power_switch:此GPIO用来控制为E-Paper显示模块上电/掉电的模拟开关,以节约应用的功耗。* u" Q2 J+ m# j- ^) j9 M9 P
, ^9 i: V5 r& X- h5 W, R
1.3 E-Paper 显示器配置
' o& t. w  A+ [用于 STM32L053 探索套件的 E-Paper 显示器是可配置的。建议参考 E-Paper 说明 (型号GDE021A1),以便能更好地理解此应用笔记处理 E-Paper 模块所采用的方法。
) W" T6 \) v) f( D# Z. q6 k编码图片的数据通过 MCU 的 SPI 外设被填充到 E-Paper 模块的内部 RAM (请参考表 2:Ram 地址映射)。
% N# D# }* n' m* \每次写操作后,根据 E-Paper 模块的配置, RAM 地址递增或递减。地址计数器可沿 X 或 Y方向更新。对于 X、 Y 坐标系,可独立配置每个轴的开始 / 结束地址。* C# V% r2 x. k" A
对于本应用笔记,模块配置为沿 X 方向从 0 至 71 递增地址计数器,然后沿 Y 方向从 0 递增至 171。 % `7 L9 E) r! v% v5 {& d. X
( p' q; [  I) @1 }5 B
8 p$ j0 z0 H$ n0 y& W
W}MS}Q@DPE%NG82ZPLS1)[Q.png . m$ H, z5 t& q8 z" C) ?9 G/ u; q* S4 @

2 m( I& ^9 w6 |: \. q) F  u
* p" y1 ]" Y: D* g
此应用笔记中所采用的配置在更新操作后无需使 E-Paper 显示模块进入深度睡眠模式。这意味着 RAM 数据保持在两个更新刷新周期之间。3 e0 l8 M2 m% J8 a' `) [
当没有正在进行的更新时,如果应用需要降低功耗,可以配置 E-Paper 使其处于深度睡眠模式。于是功耗可以降低为 1/10 (降至 2 µA),但是这种情况下无法保持 RAM 内容。这种情况的缺点是部分图片不能刷新显示,在刷新显示之前,整个图片的所有像素必须通过 SPI 重新加载到 RAM 中。
7 I9 o+ i7 p8 k  H+ l这里使用的波形查阅表 (Waveform Look Up Table, LUT)(默认的,无温度范围)。详情请参见 GDE021A1 规范。. x6 u: M+ S1 G7 S, `

7 H1 \+ f$ ~# e$ c$ U- ~; `2 n% m, L& d. i
U4YLD`JX3_4GQ8TDXKAU~.png
6 d+ H8 U3 h  K
. d# `8 Y6 \7 V5 i; k  I" z' | MQ95OA`{`4TMSKKRDE`5V(K.png
; W# N0 h0 L1 @4 ~9 E
9 }/ R0 B8 |7 h. K0 I! v6 I% c4 [& i+ |3 T! Q: A6 u) T# S3 B
每个 RAM 地址存储 4 个像素,每个像素以 4 灰度级进行编码。 STM32 的 SPI 配置为以高位在前的方式来设置传输,如 E-Paper 显示模块所要求的。7 E4 f4 v, T' ~0 T2 [6 X
图片需要按这些限制进行编码。详情请参见第 1.4 节:图片创建和尺寸压缩。
8 c  }8 |6 b( h# j8 [# Q+ Q9 z- i% p3 v. A
1.4 图片创建和尺寸压缩
0 M5 b5 v  A5 Q0 J3 C要在 E-Paper 模块上显示的图片须以巧妙的方式创建,以得到适当格式的相应软件常数。它应该易于处理并在 E-Paper 模块上显示。
* U+ x- n. }) b; F( i此图片存储在 STM32L053 的内部非易失性 Flash 程序区。因此图片必须以特定格式进行压缩,编码为 1 比特每像素,以节省存储空间。这样,图片将被编码为黑白的而不再是 4 灰度级的图片。
" R8 o: [- Z& n: N; c) {由于 E-Paper 显示器 RAM 模块需要接收 2 比特每像素编码模式,因此需要从图片存入非易失性 Flash 程序存储器开始进行扩展处理。此操作将由软件管理 (请参考章节第 1.5 节:图片数据扩展,以载入嵌入式 E-Paper RAM)6 s' }/ X3 X! Q; \
: q+ E$ _5 s/ [3 x' s( e: ]6 q0 J
1.4.1 图片帧' f; K; Z3 t. i4 K  }
图片帧可进行编辑,例如采用 Windows 中有名的 “ 画板 ” 软件。首先须编辑空白图片 (如图 4:图片帧中)。空白帧为 172x72 像素。  c! p& E6 v# u5 P; S1 D4 T

2 P7 ^, V# y1 W5 Q2 M
7 j9 s2 w4 ]; l, H) X% F
%OADLAQ3$X_$$_A_U}SB}0L.png
0 Z- x! C  S$ F8 @; Q0 |8 L# a& c- r8 x4 Y4 |

2 j# j+ W. L1 T1 v# e
( V5 f0 o" B) S# \4 g5 b. c然后必须将要显示的图片放入此帧中。如果要在图片中出现文本,可使用专门字体 “ 小字体 ”,它提供了简便的文本显示。0 ^- g- f8 S% C- U. ^; F6 K
本应用笔记的示意图片显示在图 5: 4 张图片显示在 E-Paper 显示器上中。( b7 N, c# {, i' E
) z5 @$ L* H' ]8 B9 y
( t- `: c" d$ R: `" G' P& r
9RKV7({5`QU0$ASR_GV%F@2.png : B) S' r, d2 {- b4 {( N

$ \4 P8 j7 p+ g

* Z; z, G& D$ {+ w4 b9 @6 ^6 V为了在编码图片 (以一种简便方式,可最小化数据处理)时得到常数,可将图片向右旋转90° (图 6:图片向右 90° 旋转)。这样,如图 7 中所示,编码成常数的字节数量将对所有像素进行编码,且为全帧像素总数的整数倍。" w9 X: S% c  n9 D. @7 _
- e. B4 K- T$ k# j! |
  w$ I) Q2 b% ]  q5 i
W9]7T53K`X(T]O[_I6`L9(Q.png # s! d% k1 \0 }9 f' e; Q6 M+ M; U

' t5 l/ i2 ~6 u) Z' G  n+ I然后,必须利用 PAINT 将每张图片存储为 .bmp 图片格式和单色位图类型。( r, ^; G0 O" l- V, G3 D+ D
为了直接得到编码要显示图片的 C-constant,可将图片存储为 XBM-X11 格式,例如可使用免费软件 Xnview。这里是进行这种操作后得到的文件格式 (图 7: C 常数编码图片帧)。此常数可在 C 项目中直接使用和声明。
) w! {& _+ r/ s& w; r: m/ |( Y2 k  @
7 D) V! J' Q0 `- I; F4 C6 q
{HON%2{95_95)F(S_F63.png , d  s0 [1 G# U/ o4 F
# k  a& T+ ^9 W; K7 q/ H" a/ b
6 @) ^$ x" w1 c! u
利用此图片格式可将每张图片的大小减少 1/2,意味着图片大小为 1.5KB,而不是 4 灰度级模式下的 3KB。% J* {" t9 D+ ~; s. K1 t
% |, M  a2 W; M+ q$ ~
完整版请查看:附件
( K3 b$ {6 ^& ~. h# r) n
$ @' z( X" i8 |4 p

: q' G# D1 e4 Q% T4 O
- t2 `( ^$ I9 y* p  P, E
+ j* w+ f9 g. o% X& t8 |/ n
$ I6 y0 M; V: s; C' X

DM00117749_ZHV1.pdf

下载

781.08 KB, 下载次数: 1

赞 收藏 评论0 发布时间:2022-7-13 10:48

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版