) B. `( }8 `/ Q9 a
描述
# C* v' w6 l4 O它是一个简单的项目,存储高达8MB的图片数据在spil - flash通过全速DMA传输来渲染字体和图形。1 D( c- o# u) T4 F0 _ O3 K
8 u3 I3 F! v Z% R# {第一个想法是使用基于Stm32的可编程显示适配器帮助AVR CPU。
6 ]2 d4 l2 J' u1 K+ z( D$ F
2 t( N, ?+ z% |2 y7 |$ _% d现在我使用stm32duino complete作为工频计。 ]0 ^: q4 J/ a- x" R( p6 P% L9 U
) F% \$ e( w, |& e, N4 p( a
您可以在Spi Flash中存储任何数据,以便快速绘制并显示。在我的图片中,你可以看到一个字体示例119*70像素,用24BBP(3字节RGB)传输。
. Q/ ^) U* _3 f+ y
E4 P" ?" O8 a, D- b6 Q# }
r8 @ Z. H/ d) a5 Z; N
细节3 g7 N4 y4 m) X# e- W) o
在许多项目中,我使用一个简单的工作区来绘制字体。$ t( u0 V: Q g7 b) n3 d
z$ L4 J1 L1 u2 ?0 [- M
0 {- G2 f, ^6 h, D2 S. _2 n1.像素存储在RGB565左上角到右下角,连续的下一张图片。' H1 J P5 ?& ?1 X* A
0 [% N. S0 Z, {6 i% H |! Y# ~
2.字体存储在按ASCII码排序的图片中。
/ i2 D, c8 a( w0 t! ~* p m. e4 T3 z: q' h+ X
3.我们可以在Flash中使用字体Startpoint,第一点=0(不同字体)
# L8 X4 x6 P# `" t% [8 ]
6 C4 S& o$ l% o5 ^' O代码:2 o: W; } a( H5 k, u7 ?
$ T2 m5 v1 P* Y$ W+ R
- <blockquote>uint32_t fontStart=0; // Font Startpoint
复制代码
; q! `: M1 F" U9 b
6 n1 X8 Z$ h4 H1 J
/ m3 p( t E) K9 A- u0 ]% h" L字符的例子:- p( x1 d& V( {# C! S. L( {2 \
- uint8_t *buf = new uint8_t[picwidth*picheight*2];) \, N, M: R" S" D
- mem.read(charstartpoint, buf, mywidth*myheight*2 ); //mem.read(startaddress, *buffer, length );
3 A! E' t* r6 N2 Q& b1 |6 s - tft.drawDMAImage(buf, posx, posy, picwidth, picheight ); //Adafruit Library
复制代码 0 H2 r) v% ?, [8 @
* O9 B" C0 y4 r- f0 G! {
1 \2 y5 P. p/ C/ c( v
简单字符串文本示例:& l6 ]( [4 p9 d- q7 i) X8 ~
- String metertext = "Powermeter";# o! Z5 r1 e# o0 x$ W( p( [
- for(int i=0; i<mystring.length();i++)
. N8 _0 {6 T6 q - {. V/ O/ B: B' c* N' n
- char mychar= (char)mystring.charAt(i);
, @; ?# X7 E" ~0 i9 S" T; \1 t - uint8_t ascii = (uint8_t)mychar; //get ascii code from char
* F0 l0 L, L' _2 r) J* g - ascii = ascii - 32;
( o6 X# H1 d. t; C - uint32_t charstartpoint = fontStart + (ascii*picwidth*picheight*2);7 {; M* e% A9 S: ~3 z( I7 R7 P
-
) \/ t" }3 B& v* \2 n( F% r - mem.read(charstartpoint, buf, picwidth*picheight*2 ); //mem.read(startaddress, *buffer, length );
3 {) i* v6 M7 U$ f5 o' d9 n! M/ w - tft.drawImage(buf, x+picwidth*i, posy, picwidth, picheight );
% O7 |4 n1 h' l( F# o2 y* l- } - }
" G& a! u% x% \+ p0 V4 w -
9 S3 \- z! Q/ ~4 {/ y
复制代码
T0 M- c$ c- D7 Z
1 C. d) r; v7 _9 O4 ^% e% p9 |3 Z. l
H/ @5 \) a: _
/ ]; R$ `1 N3 i; N原文请见hackaday
7 f9 H I. }* Q, G
! W2 M `4 c/ ~9 c: L( Q( j/ O |