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

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

[复制链接]
MP不是MT 发布时间:2020-10-24 17:39
码字不容易,转载请说明出处,本分享基于免费性质,禁止收集倒卖的行为,对上述行为本人保留追究权利。, Z+ l8 Q5 `3 G3 C, F
文末扫码关注公众号,获取文章源码
' W5 b) g9 p0 Z: N9 T9 ?2 n  d  _! t2 y* o) K' @+ V; H6 Z0 @
【TouchGFX分享】文章合辑1 }# z$ N' n6 Z' G) s! j! u2 [4 h9 _
$ `9 n9 c# v2 b
初级篇:
9 U8 I6 }0 G4 O# S1 u+ Y/ g【TouchGFX分享】裸机移植TouchGFX 初级篇一2 V1 ]& e3 w# j. B

% R* C6 v9 T2 i0 M7 g6 E
  • 所用的软件及版本:& R4 [2 K& e- g) P
  • CubeMX 5.5.0
  • TouchGFX 4.13
  • TouchGFX Designer 4.13
  • STM32CubeIDE 1.1.0
  • Visual Studio 2019
    9 I# x8 W' \3 W

1 v3 r1 k) ?! |5 A7 t* y
  • 硬件环境:) |3 F4 q: f  B. t: d
  • 自制电路板
  • MCU型号:STM32F429IIT6,1M Flash,192K RAM
  • SDRAM:32位16M字节容量SDRAM
  • 显示屏:RGB888,4.3寸480x272
  • 实时操作系统:无
    4 q) X- j" P7 P& M4 {6 @! n' _

9 D3 C* q$ P+ |3 t+ i+ `$ @
  • 实现效果:: n' a4 L) f, @$ X# s' Z3 B- M
                                 27.png   z* a1 D& v. Y' p" Q  a
& Y+ h& n( y  k( q7 t
  • DEMO说明:. J% Z2 f8 B$ u/ K4 F- v
该DEMO主要介绍TouchGFX快速配置,并显示一个最简单的TouchGFX界面。需要在CubeMX配置的模块为:5 X# u$ [" ]$ }
  • 外部高速时钟,外部输入时钟为无源8M晶振;
  • SWD仿真,用于程序在线仿真;
  • FMC,驱动SDRAM用作显存的功能,以及TouchGFX的frame缓冲,对于小尺寸如320x240来说,外部SDRAM并不是必须的,若内部RAM的大小足以支撑屏幕的显示,可以不使用外部SDRAM;
  • DMA2D,用于图形界面的加速;
  • LTDC,用于驱动RGB显示屏,其他型号的MCU可以使用其他显示接口如MIPI;
  • CRC,使用TouchGFX必须要使能;
  • GPIO,用于控制屏幕的背光;
  • X-CUBE-TOUCHGFX。
    : m" I, u8 M0 r& r
; ~1 J" t: ^2 Q' T) Y$ B
  • 视频教程:5 X/ m1 B! w, w# Q
. B0 p& G7 a/ C" J- w1 b8 t
# p! s0 `% n+ ?' r
  • 文字实现步骤:/ [0 ?4 m8 s! `1 ]4 w; v
①下载TouchGFX扩展包;
, A3 K- C( C1 X2 n: h$ p8 B  t7 ?2 m 1.png
1 K( X( w7 q$ ?! |9 \% @; q  _ 2.png
% l5 i! ~2 x; J0 Y' e' j, ?; J$ D$ {& o/ V0 U& s
②添加TouchGFX扩展包;# U9 B. _+ k# @) D8 W
3.png . D  a7 i) b7 b0 Z0 B* i

& D" M! s3 \% @9 h. X7 L& H! ]③使能外部高速时钟;) h4 y( h# }3 M& h2 i
4.png
9 r2 K. \  Z: X* x9 I6 f6 w" f* j/ S; Z+ H2 Z  ]* {
④使能SWD仿真接口,如果不使能,程序烧写后,下一次无法进行仿真,此时要重新擦除内部flash内容;
% ~% q: R5 Z3 S: f+ X" b+ a 5.png 5 o* m. o" ]( q- {2 O* y3 \
1 R% Y& `) h6 y5 L- m
⑤使能FMC,注意根据原理图配置对应管脚,并根据SDRAM的手册设置时钟和时序;
4 J9 f, ^, g  d& X( a, s 13.png 3 _, W1 [7 A- ?3 u; g" g
6.png % l5 A' p( K$ M9 x: D- M( T- E
7.png " ~( o, G0 C1 C8 g5 Y8 m

8 R9 f8 T  o% B⑥使能DMA2D;
. x; Y& T5 V' @& x9 K3 S 8.png
& l' {* \$ b& {' P* L4 p
/ k1 i: S' z8 B( b. _, p⑦使能LTDC,注意根据原理图配置对应管脚,并根据屏幕的手册设置参数,屏幕分辨率为480x272,色深为RGB565,因此屏幕显示需要的空间大小计算公式为宽x高x(色深/8),RGB565色深为16,RGB888色深为24,所以480x272x(16/8)=261120字节,若屏幕配置为2layer,第二层的地址至少偏移261120字节;
3 \: k. l5 ~2 p3 J1 N 9.png
: K' o' m6 L) t7 [* Z0 T% f 10.png
- I- I3 p: j- E7 \* j2 E 11.png
( b- J' `+ y0 _
) F0 X" u9 M3 u⑧使能CRC;
" \  L! j! M0 E% U! i9 L 12.png
% [; N1 C8 }% N9 T" c
$ u% p$ X6 T! n8 r4 A- `2 C  M: ]⑨使能TouchGFX扩展插件,配置TouchGFX参数;
( c8 F/ ~/ n4 w) K- ^* S/ b  e- S, J0 \ 14.png : P. E4 X5 Q: _% e6 ]: T- T
( o8 ?" D4 Y7 s3 h0 i7 [. i7 ~: ]
⑩配置NVIC和优先级;" P7 M0 w3 D8 v7 ~$ Q+ Z% F2 O
15.png 1 b3 y  J8 w1 r

5 o( {- [, S7 J1 I6 S% {⑪配置系统时钟;/ Q" b! o/ Y0 _; t) Z. d; `& r) G- U. [
16.png
5 P% B9 G, E  e2 @* F
' l0 y) n# f( Q- g⑫设置工程名称和路径,选择IDE和HAL库版本;
9 D. ]) I9 H1 t! n3 j1 d6 M2 Y 17.png * ~" D6 W1 e2 g, E$ G9 M% P# ]

2 |3 v5 _$ f. q. o0 ~⑬点击生成代码;3 P+ F4 s; N( z, @& q/ N
18.png   ~9 V0 x1 }# I( p
7 A3 g2 z* [' k" M) t$ U
⑭查看生成的代码文件;
8 r/ B5 j. L7 j. D: O- o0 U 19.png
6 D* o4 U( c+ Z/ k. z
, [, l6 n8 i9 ^⑮打开TouchGFX Designer导入CubeMX生成的模板;0 v" Q. i$ R$ V& G6 J* T0 `( u: @
20.png
# T: |/ h! p7 B+ b9 \4 Y0 r4 v2 E* s0 N1 q

0 o, U* S. U0 R2 q# |7 g0 A* a⑯添加一个box控件作背景;
0 R5 X5 M* g7 }# Y6 ~ 21.png   f, A2 c. ~4 k6 s+ K2 J$ g4 b

$ l, ]4 a: h7 `; U" ^+ L⑰添加一个文字控件;6 i3 ^) f; Z* _: ^! h
22.png
) x' J$ l, D0 r  C3 e' E/ _  N% w$ b+ q' w
⑱修改box控件的名称,尺寸;9 q2 v; B, e4 `: Y/ }. |4 A
23.png
3 r3 r  i5 `3 R* C. c7 `
$ z( ~% ?9 `1 k8 A⑲修改box控件颜色;& g' X4 x! |1 f  P2 i* L$ d
24.png # X; Q! v6 P( C% h) ?
  `  |& @" h2 _& G/ Q  Q* U( [
⑳修改文字控件的名称,位置,文字内容,字体和颜色;" ~8 t3 C  p$ t3 B3 X& W- ?
25.png
% D- \( M8 l! ~( b2 D% d8 l& B( D7 F5 Z$ L) {$ d8 P; k, s
㉑点击生成代码;
9 t; ^- X9 k( N0 f1 a 26.png
6 _6 {* m) W( M
! h9 v) F; O: N# t㉒打开STM32CubeIDE,导入工程;
. T: m( o8 f5 N- h6 T- ^ 28.png / J$ z5 H9 t4 ]  p8 y7 O
29.png
/ ~4 M" h2 e9 p4 H; p 30.png   |! T7 I6 x1 T& a6 X1 `" X% t0 e
31.png 8 v1 T7 H+ T1 p8 h0 O+ @/ m8 }3 F5 ^( [
# z- K7 R0 ]7 U: l
㉓添加SDRAM刷新初始化函数和相应头文件;9 _0 R% F- V5 s2 T) E9 m
32.png 3 |4 c( W" n9 K2 C6 y$ n
33.png
3 ^6 z, [* d1 X$ \0 S+ E 34.png
& o8 S9 D8 K. O8 v5 z! `  T& O
0 R9 r  ?" h+ K1 k㉔添加头文件路径;- A) I& G5 q$ W( D) i
35.png
% i4 p3 V9 B9 F 36.png
: p) q1 s- p0 }2 K3 q 37.png + I# t3 A* T4 j; b
1 z! _5 L6 N" m2 V' `, s4 \. U+ D
㉕点击编译;
; k& r: v+ c! v 38.png ) n- Z% k+ k; [$ W  k5 M  A# P  u

( i+ I3 K2 t6 i' ]" Y' K㉖点击仿真;" ~9 C: E' z; d/ o5 s1 P. G
39.png
$ ?/ f3 H$ g* Q6 @* E+ _- y% D/ f$ i! K% T0 q
㉗最终下载到板子上的效果如下,本次分享结束。
8 h  K7 O  w) s/ k4 A1 b- g1 d$ ? 微信图片_20201024152744.jpg
. f, T1 ]# c5 j# a$ e, J
& Q2 @1 t4 D: C$ Z! k! F1 {( e
) H; |% p) L; b* A7 e# n+ A扫码关注公众号,回复"101"获取文章源码:1 n4 M" C8 l0 ]6 }
                                    
: |$ K8 e8 _2 D+ F1 J6 _6 w: P( _8 r/ R6 n3 y
码字不容易,转载请说明出处,本分享基于免费性质,禁止收集倒卖的行为,对上述行为本人保留追究权利。
% \9 ]- A, g: D) ^. O# }
) _. O6 k( j5 d2 Q# c0 p& v* s' H! T; {$ n

5 S0 w  k* i& `' B9 j5 [% B  U* P
( l& T9 l, n+ b3 z% I0 ~: t  {
% x) B4 f* l  g# A9 G
4 a/ `7 }% O& z* V; f0 Q+ D! j8 a  V# r8 X' I6 s/ X+ _4 k' d

: D7 g0 d) H0 ^0 r3 S3 d( o. ?  q

# T0 m; f" g( R0 N
: U4 [1 f0 y+ C; o0 q% {, e% o+ g, M/ t
赞 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目标板仿真却没有问题。请问啥问题?5 C+ G+ }& v1 |; W8 Z4 d' g
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版