$ e8 c& @$ O& c# }7 c描述' T% V& q2 I9 l7 v; r8 N# K1 V0 J
它是一个简单的项目,存储高达8MB的图片数据在spil - flash通过全速DMA传输来渲染字体和图形。
& ?/ R* t% a" e! x
- D8 ^: X- s: @# j第一个想法是使用基于Stm32的可编程显示适配器帮助AVR CPU。+ C6 j) r# ], H3 V9 a) i
, C6 s- R/ T: W" y9 A2 m. e
现在我使用stm32duino complete作为工频计。4 ^ P! U4 b ~" t1 ^. Y
- I1 K- l5 r1 R$ k7 c f0 t
您可以在Spi Flash中存储任何数据,以便快速绘制并显示。在我的图片中,你可以看到一个字体示例119*70像素,用24BBP(3字节RGB)传输。
( V: ~" C6 c+ F' m) u# l6 a
9 n' h! }" u# d) Z
1 o- K2 r H1 ^* @4 y
细节
1 S/ U( c1 |/ O! `) }在许多项目中,我使用一个简单的工作区来绘制字体。; Q5 g9 Q2 t4 Y1 s1 L
2 W' ~4 O* l/ j: c, |4 \0 `5 L6 G
% M/ K Y+ v7 R1 _1.像素存储在RGB565左上角到右下角,连续的下一张图片。9 N, y; Y8 V: ^4 E$ ?. d+ O* K! B/ Z
( h9 g; C! G, I+ A4 c2.字体存储在按ASCII码排序的图片中。! Z* c; a: ^8 o) `& Z/ T
. w8 W3 E* v' t" B* W; ?2 i3.我们可以在Flash中使用字体Startpoint,第一点=0(不同字体)
4 l1 j* n" C, e' J! b- | z2 U7 Z7 O D3 p. T- t
代码:
/ e2 W4 ^9 b& w7 [! g; G. K2 }
) V: Q* P6 x/ Z4 ^ a$ g- g3 S6 ]4 `- <blockquote>uint32_t fontStart=0; // Font Startpoint
复制代码 & n# {' j5 Y0 T( ?+ ~# H
$ @4 \ R$ L$ e$ b: b: |: A
2 j8 x1 G) T# j字符的例子:' [7 z5 U8 r* p
- uint8_t *buf = new uint8_t[picwidth*picheight*2];
0 G/ Q7 n) \! _9 O* J& `- B, c - mem.read(charstartpoint, buf, mywidth*myheight*2 ); //mem.read(startaddress, *buffer, length );: T+ S: W% Y, e
- tft.drawDMAImage(buf, posx, posy, picwidth, picheight ); //Adafruit Library
复制代码
% v( h) x# C, `8 ^2 x1 a9 J! ?; @# E3 L& g" \) Q
1 K* u8 ?, U1 p% I. u4 \6 Q
简单字符串文本示例:/ T0 X8 _" U! C4 C- x
- String metertext = "Powermeter";
. ^5 `: A; U6 [, C$ b% \+ [ - for(int i=0; i<mystring.length();i++)3 k& a% w" c* r8 h
- {
! \+ b( D# P; ^2 t- T - char mychar= (char)mystring.charAt(i);
9 N" B; |9 f; t - uint8_t ascii = (uint8_t)mychar; //get ascii code from char$ J! w2 t- p' H! H
- ascii = ascii - 32; ; o! p' g0 v; ]) l% E
- uint32_t charstartpoint = fontStart + (ascii*picwidth*picheight*2);
4 ~; S: D; N/ `7 R -
' h3 |$ h7 ?0 ^ - mem.read(charstartpoint, buf, picwidth*picheight*2 ); //mem.read(startaddress, *buffer, length );. C" l" J& @% ^
- tft.drawImage(buf, x+picwidth*i, posy, picwidth, picheight );
# o8 ~/ g0 X+ \% S# p# p% t3 W - }8 N7 ]# ]: K) y' Z+ o: C
- ' B& K; u4 d/ N# L( K1 O
复制代码
: q7 h" j% {. ] J2 f& C. l3 |4 N3 M1 j# p- l
# X# w2 s0 A- a
8 _( d' k$ H# L% [& D6 I
0 Z3 M$ R) {2 P原文请见hackaday
2 N) ^+ B, D4 [% [& [/ }3 N
- U' f8 @$ ?6 O- O/ m |