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

【TouchGFX分享】裸机移植TouchGFX 初级篇一 附源码

[复制链接]
MP不是MT 发布时间:2020-10-24 17:39
码字不容易,转载请说明出处,本分享基于免费性质,禁止收集倒卖的行为,对上述行为本人保留追究权利。( _/ Y+ V  q7 _' j
文末扫码关注公众号,获取文章源码9 H7 s- s; g4 Z. W5 J

8 w4 `& J1 V' a( ?【TouchGFX分享】文章合辑! c% U  H, r! H
( h, U% i# ]: i/ y0 Y. _; Z! w/ ^( v
初级篇:
* |0 k3 N$ X4 z, I' E【TouchGFX分享】裸机移植TouchGFX 初级篇一
& f% W% Y3 X4 y# C7 a) }3 I8 S9 E# n" M5 ~. o
  • 所用的软件及版本:0 u6 c4 H6 }% _9 r
  • CubeMX 5.5.0
  • TouchGFX 4.13
  • TouchGFX Designer 4.13
  • STM32CubeIDE 1.1.0
  • Visual Studio 2019
    / D, u' u: {# l( x

. r) i, R3 _2 e: s, }, a
  • 硬件环境:
    9 O, ~, u9 U9 r8 b$ u8 Z3 E" R4 N  ^
  • 自制电路板
  • MCU型号:STM32F429IIT6,1M Flash,192K RAM
  • SDRAM:32位16M字节容量SDRAM
  • 显示屏:RGB888,4.3寸480x272
  • 实时操作系统:无2 L! e+ ^4 {7 z9 X$ x

% N- b7 f. |7 V5 o% M& R0 s2 [' @
  • 实现效果:0 e1 e" `& {5 Y4 l% @
                                 27.png
9 P- j) R: c8 [/ b; d" W( @3 C1 _( x# I4 w% b: Q* }- A
  • DEMO说明:
    5 \* R; e- M, r+ G0 }6 G9 t
该DEMO主要介绍TouchGFX快速配置,并显示一个最简单的TouchGFX界面。需要在CubeMX配置的模块为:8 O, S$ l' p/ p- D3 m
  • 外部高速时钟,外部输入时钟为无源8M晶振;
  • SWD仿真,用于程序在线仿真;
  • FMC,驱动SDRAM用作显存的功能,以及TouchGFX的frame缓冲,对于小尺寸如320x240来说,外部SDRAM并不是必须的,若内部RAM的大小足以支撑屏幕的显示,可以不使用外部SDRAM;
  • DMA2D,用于图形界面的加速;
  • LTDC,用于驱动RGB显示屏,其他型号的MCU可以使用其他显示接口如MIPI;
  • CRC,使用TouchGFX必须要使能;
  • GPIO,用于控制屏幕的背光;
  • X-CUBE-TOUCHGFX。! I- Y* g. o) Q' B! n! d% q0 L3 q

* [) m/ I/ c2 k7 \- o/ S' s& U6 q
  • 视频教程:
    + Y$ O+ X9 c8 p& u( H- m7 k9 T  k

. s  ~1 y3 a* F# k$ E+ R/ x
: r, K4 H. h, d: e; q6 G+ X
  • 文字实现步骤:
    ! f+ t8 H  t' w
①下载TouchGFX扩展包;- `. P& H8 q6 I" ~# }2 o6 K
1.png
; {3 ~2 _# C% i+ _ 2.png
0 w& C5 K* ~/ d$ d% I) o" l/ N1 k+ x/ a2 k; `* |8 ?
②添加TouchGFX扩展包;
2 |% M! H+ R1 D( B) O0 y, L# j8 i 3.png 2 v) s. z9 S/ l+ U1 `" _# ]
. x) A/ n& S5 |) u) f
③使能外部高速时钟;/ D# S0 |( r$ z' c; u% o4 a
4.png
/ u$ B0 }# E( c
$ q) h0 y) t4 X④使能SWD仿真接口,如果不使能,程序烧写后,下一次无法进行仿真,此时要重新擦除内部flash内容;
; V: z% C4 |7 c  L! d, S5 E 5.png
* M. u" m. r! R  d
1 H" x; r: `9 D/ R0 C( L8 T* L⑤使能FMC,注意根据原理图配置对应管脚,并根据SDRAM的手册设置时钟和时序;
9 i! b2 [4 h+ A1 X8 I 13.png
1 k) o# M# E& K# j1 Z 6.png 3 i6 l# N% y* y3 V6 q
7.png & j' k: @$ Y$ h3 o$ l; h1 F

9 k/ S( M" M0 a6 `) I( I' d⑥使能DMA2D;3 x% \) ~# y( h% i* W
8.png
- |( X) O) a$ N- m! z' Y( p- n# U( O9 |( P0 i! S
⑦使能LTDC,注意根据原理图配置对应管脚,并根据屏幕的手册设置参数,屏幕分辨率为480x272,色深为RGB565,因此屏幕显示需要的空间大小计算公式为宽x高x(色深/8),RGB565色深为16,RGB888色深为24,所以480x272x(16/8)=261120字节,若屏幕配置为2layer,第二层的地址至少偏移261120字节;
: F( }' t: |& \1 m$ o 9.png
8 P4 d( k: Y+ T3 U4 h! y$ M 10.png 0 z$ ^5 B% P$ B0 z5 u- c9 F
11.png 9 o$ J2 Z! Z" U

& u1 Q, P+ j7 C9 d⑧使能CRC;
' u6 m+ j, U' M: q3 N 12.png
, E' n9 }, I' d" p
' D5 J7 j. g, a⑨使能TouchGFX扩展插件,配置TouchGFX参数;
' m6 H4 f# _* i- q8 L4 ^2 j0 Y: d# I 14.png
0 g7 {# p) e( x( S7 K
) L' q0 e, E/ H9 F⑩配置NVIC和优先级;
/ y$ x% i1 @  l3 g. U% P 15.png $ J9 j$ D9 C+ j  C- N
  r" a8 i% T$ S% ^
配置系统时钟;
1 D6 ^8 T1 t% E 16.png 4 v3 Z0 U4 u7 n" c% R; Y9 C+ s8 }" N
) j. _6 u# `; T" n; v) o
设置工程名称和路径,选择IDE和HAL库版本;6 j& N+ x$ r# `
17.png 7 k( H6 V- d4 V& e+ V7 b( q8 b! P

, I4 }  {' |1 v# I( `$ K( v点击生成代码;
+ D1 b7 l' Y# t$ V1 K  p# ~; a 18.png . t7 X! {: h2 D: k9 D  D9 k5 k  J

( m0 l9 }. ?' F( Y7 Z% m查看生成的代码文件;
* n' Y% r1 I) Z3 m+ I4 D8 r 19.png ! e/ p2 g. i6 Y$ t8 \

' W1 d4 G3 P/ W( F9 g) K打开TouchGFX Designer导入CubeMX生成的模板;5 {7 ~8 d. ?2 E; }
20.png . g4 L, i9 B5 \3 T, F: I
9 k8 r* r( t# d. U6 m, L

) C- ?6 f6 X- I" k2 k添加一个box控件作背景;
0 H, g/ Q/ t3 X 21.png * {8 z, _" s$ F5 T, w" v) F" k

* }' Q) o$ ^# G4 d; w$ d添加一个文字控件;  _8 q: ^- {) ^' l4 {
22.png
! s( H" z( e* C6 O
: Z  O2 \0 \8 t- L3 Z修改box控件的名称,尺寸;. ~( \# I, `! P/ \
23.png ) ]' b/ E4 o: ^3 I9 f

5 ^7 v. l, w% e$ y8 \修改box控件颜色;% d" h$ ^! P) @1 J% y: m) D
24.png
" w7 r. b, e) t# Y4 t: K; e4 Y: w. B; k5 x0 K
修改文字控件的名称,位置,文字内容,字体和颜色;
* j" s* C( E# q8 J0 t7 E 25.png
$ ?0 ?: H' L5 K  L4 R! E; n1 l  ^, S3 @- F9 }2 b$ G
点击生成代码;* M) b& ^- t) j( B7 L
26.png 4 g* S* U6 I* h' s3 L' {
: c; |- U. H3 f& t
打开STM32CubeIDE,导入工程;+ B, ^1 ?+ P& h" t: G  o0 ]0 l3 ~$ b
28.png
$ Y- i' {7 Y' `; R 29.png
; f! U2 @! V* r6 T' R 30.png
  Q+ U( G* k5 P1 X) e 31.png ; ]% w& L1 F6 e1 ^0 m

  E0 ]+ H* ?" W8 C" w添加SDRAM刷新初始化函数和相应头文件;
' t* S" e6 D& \/ m: G 32.png , F% n6 ~. _1 j. _; P
33.png
4 W2 {& q& ^, j- Q6 ] 34.png
- Q: G. v1 a' n8 N  l6 M0 l) l6 a0 s+ T9 U) Y' J& j, F
添加头文件路径;# J+ V' N( i" d/ C$ k4 d/ Z+ l
35.png ( k  i6 ?, G/ c6 a7 o
36.png
- J9 k8 W7 t" }2 b4 V% ]: ^" @  a 37.png
, f, W+ w1 q! z7 }
+ H' I: s6 U$ c; ^; y点击编译;
3 U. P% V. Y8 H 38.png
& x8 @; F! i# A( g* X) A, |" M8 y7 b9 f( T% t, G$ H0 v# F8 T5 u) M% N
点击仿真;
+ W$ G6 n/ e+ H5 L 39.png
, T) l. C! T" F9 ^' Z8 d* Y& R
( l' w0 F% Z( ^1 ~" @4 f/ d( _4 v最终下载到板子上的效果如下,本次分享结束。3 `2 w3 O1 C2 a2 [: A* J
微信图片_20201024152744.jpg
* o) b8 Y/ |. [* N" x1 K+ b1 S: w7 L+ i, [/ ~! d

  V" t/ r. g1 H. h0 |' g8 K! H扫码关注公众号,回复"101"获取文章源码:
" G( _4 m* I1 ^6 C8 _                                    
- j6 O  E' t. ?8 p3 r% G1 r2 A& L: h) l
码字不容易,转载请说明出处,本分享基于免费性质,禁止收集倒卖的行为,对上述行为本人保留追究权利。
1 ^6 a9 h; d6 \1 |- T; F( M9 _' M) Q3 X7 @2 m$ A

7 B: Q: g  Y& @9 l/ _/ U4 N' v; T! L& K8 C

: Q7 S3 e* q1 y5 `7 O5 Q% ?/ ~

$ u5 v. ~3 U: k) G8 g0 U
6 ?- V/ q2 Y# A, l  q2 o9 \! i7 c. w
7 [8 A0 K8 L- S/ C# h
8 u& N* _( V/ y. o, l$ m
3 I5 I; n/ n/ R1 e; a1 x; r) {* s  V; n$ s
/ x: l* k* w# n: g8 G( T7 n& G
1 收藏 1 评论3 发布时间:2020-10-24 17:39

举报

3个回答
成长yeah 回答时间:2021-1-26 09:21:30
赞,学习了
lhdboy1988 回答时间:2021-1-28 16:16:10
感谢楼主!写的很好,看来是自己做的板子,正需要从零开始移植这方面的资料。
夏颜真 回答时间:2021-6-24 17:32:17
请问老大,我的板卡是STM32H7B3I ,下载TouchGFX 模板,自己加入UI文件,配置UI为RGB888(只能有这个选项),更新工程后。编译下载,运行后屏幕花屏。但是用TouchGFX目标板仿真却没有问题。请问啥问题?
2 h% G% O' l% B0 L5 L

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版