3 d0 P9 a9 `, ]( C* |描述8 w+ |3 ~/ |4 p r1 M0 a# L+ e: k
它是一个简单的项目,存储高达8MB的图片数据在spil - flash通过全速DMA传输来渲染字体和图形。8 f. q7 U/ e% q; Q, L6 k$ `9 e
3 t; w" I: [+ m5 x2 ~) U
第一个想法是使用基于Stm32的可编程显示适配器帮助AVR CPU。- _# |" B7 K$ d+ f
3 R4 y: T. |) k8 L G现在我使用stm32duino complete作为工频计。
0 L# d# _0 w" S/ s
' ?! p# M/ y2 m& r您可以在Spi Flash中存储任何数据,以便快速绘制并显示。在我的图片中,你可以看到一个字体示例119*70像素,用24BBP(3字节RGB)传输。
2 |! V% p3 S' C5 b, F
7 n6 ?! M, j7 D% w' o3 i
2 v; ?6 y& E; `# r& M" ?% a
细节
& @1 m! z: J, X9 v在许多项目中,我使用一个简单的工作区来绘制字体。( k* L" {) Z/ h3 C; ^$ Q6 `
2 z$ J. }: M L
7 `2 V4 P% z2 a" l* ^
1.像素存储在RGB565左上角到右下角,连续的下一张图片。( p( h& X$ _9 j7 ?
! K, P) c1 i x! L6 N
2.字体存储在按ASCII码排序的图片中。" H8 j, m$ n, { P
9 Y K. L- q$ K0 v+ W
3.我们可以在Flash中使用字体Startpoint,第一点=0(不同字体)0 ~3 i# O: D8 H4 y( F
6 D0 S6 |& u7 M
代码:1 s% ~1 ]* Z! H0 H* z
6 p# Z" p* c$ ]7 ^+ {5 S; D' T
- <blockquote>uint32_t fontStart=0; // Font Startpoint
复制代码
9 L+ l9 S" q$ h: ~; e$ F4 t
- v+ e( o) w+ h+ } ^* p2 ^: c( O; G2 s' \1 Z+ t E
字符的例子:- r+ i( M9 n2 X" p1 y8 f5 Q
- uint8_t *buf = new uint8_t[picwidth*picheight*2];- m: x5 }1 v' `- d2 T
- mem.read(charstartpoint, buf, mywidth*myheight*2 ); //mem.read(startaddress, *buffer, length );
2 C3 \/ m( _! {! a- `; o( b - tft.drawDMAImage(buf, posx, posy, picwidth, picheight ); //Adafruit Library
复制代码
3 @" u# a& M* o1 h; r4 C% X, A h3 s& x9 R5 W0 P
" [% s5 e; H- Z! p
简单字符串文本示例:8 D3 `# Z8 v/ i1 ]) A1 |
- String metertext = "Powermeter";
9 I" Z& { k6 J; ]+ E% N - for(int i=0; i<mystring.length();i++)) k. ` o6 u. B2 d
- {* I: p3 }$ x( G+ [4 K
- char mychar= (char)mystring.charAt(i);
! T4 R D6 B; j) M- ` - uint8_t ascii = (uint8_t)mychar; //get ascii code from char9 u) \5 T, U- n& C! I
- ascii = ascii - 32; ( A5 ~2 Q5 Y% ?, a" k2 T
- uint32_t charstartpoint = fontStart + (ascii*picwidth*picheight*2);% |* d! a: W7 n9 J* R
-
# b1 e3 U7 Y1 v1 P' J' J - mem.read(charstartpoint, buf, picwidth*picheight*2 ); //mem.read(startaddress, *buffer, length );. V" S; p8 p( q9 S2 C/ }$ R
- tft.drawImage(buf, x+picwidth*i, posy, picwidth, picheight ); & X7 f5 a/ b/ R
- }
& D& S) _. B* @' k1 E1 O* o -
, k# p; N, M' Z2 [+ y8 j
复制代码
2 b) |9 j P; f+ |6 f: \* n
2 n+ ~. ^& D. h v" j4 ~# k
. V1 Y1 v$ e/ ]8 A' X5 j, F. G z+ T( B; B- a
# [4 |% n q* k# S原文请见hackaday
! @7 d% H: {: t: v7 P1 R; k. k: s) x4 o; X
|