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

基于STM32CubeMX移植TouchGFX经验分享

[复制链接]
攻城狮Melo 发布时间:2023-6-28 13:57
本文基于STM32F429IGT6+RGB(800*480)硬件平台,详细记录了如何利用STM32CubeMX将TouchGFX移植到STM32F429IGT6,并驱动RGB屏幕。' i# B" W$ d$ t% d

! m' L3 P1 z+ N% p0 g% F6 O" w
TouchGFX的应用框架如下图所示:) _4 i" x+ Q: b) @' M

( r/ l- {: V- w1 M0 P0 N
微信图片_20230628135738.png

# w- a, H0 |& J4 u( k9 `; z$ f) Y
1. STM32CubeMX配置
STM32CubeMX主要用来配置上面所示的应用框架图中的硬件抽象层和中间件层
⏩ RCC系统时钟:高速外部时钟(HSE)配置为外部晶振
0 m1 D/ d3 D. x* `% `2 r
微信图片_20230628135735.png

. W6 ^: o, @2 m9 e6 x6 t
⏩ 由于要使用FreeRTOS操作系统,因此建议将HAL库的Timebase Source从SysTick改为其他定时器,选好定时器后,系统会自动配置TIM,此处设置为TIM7

7 d3 f1 }7 p1 G! L' V 微信图片_20230628135732.png
) ^9 Y% z4 \- ?7 K⏩ FMC设置:配置外部SDRAM来作为RGBLCD的显存,根据自已的硬件进行参数以及引脚配置, Q8 U. {% {( w1 @- s; ^

, u4 b3 M! d* D: b. B0 s 微信图片_20230628135727.png
) i; w  A8 H* G- K9 ]  C4 e$ C$ q
: K$ }' B# Y. h$ J. o
微信图片_20230628135724.png

1 C0 S  z' f3 V( w
⏩ DMA2D设置:激活DMA2D,配置颜色模式为RGB565,并开启DMA2D中断
, t! M1 ~1 H0 L0 F
微信图片_20230628135722.png 0 M& ^% s, R' m, w. c1 J- _& i7 |

. [) }: _" Z  p5 c+ L+ w 微信图片_20230628135719.png
# J1 j  i) v' J6 R& ~( S
* I' |- }9 Q8 F
⏩ LTDC参数设置:根据使用的屏幕参数配置LTDC参数
$ j$ d" }8 u6 m8 r
* M1 C. _6 J5 k8 t; e& s8 L* E' I
微信图片_20230628135715.png
3 C/ l% ^+ b  k/ K
⏩ LTDC层设置:此处选择使用1层,帧缓存地址设置为SDRAM的首地址0XC0000000

- h  d- r0 N$ I1 P! G+ b 微信图片_20230628135712.png
# _# ]1 D! s2 [; D6 g8 L
  d1 `" v6 H! m$ l) e0 W1 H

3 p' Q1 f: o9 x5 ~& `2 B1 F7 d& G⏩ LTDC GPIO引脚设置:根据具体开发板的引脚连接,配置GPIO,注意要讲输出速度设置为“Very High”;并开启LTDC中断% e9 a6 p, n; C5 ^" l: I

) |0 J& Y0 l& D/ t 微信图片_20230628135709.png ! u$ C4 N0 [; B% v/ k$ }' T, v1 q
" K  k! e5 P9 a
微信图片_20230628135641.png
3 t" s( L: |0 a* M) b, C1 h' G( e1 P0 F& g" @

" e3 ]: r! A! R1 Z⏩ 时钟树配置:像素时钟大小为1056*705*60/1024/1024=42M,像素时钟最大值为42M,此处设置为33M(1056为总宽,705为总高
) a( c% Q9 z  Q+ {
微信图片_20230628135701.png ) G; P( O6 v9 N8 e8 i# n% x" T  `
! {) G: j8 g) T$ t$ _; H/ ?/ b
微信图片_20230628135652.png
& i1 D) |8 y' n' _! L& r  w
% d# F' Y  b& ?" l) n$ k# V
1 N3 v. ?! d6 j2 C& }7 s& F
⏩ 背光引脚设置:本文开发板使用PB5作为背光引脚,设置为推挽输出7 S6 }' D4 ^9 [9 }) T8 c
$ y: p0 V1 G/ N( u
微信图片_20230628135645.png
  z9 d4 H" M  c9 S0 T
/ H  s8 L5 H. U  f

6 c* K9 q, O( A& ?5 f" k5 ?⏩ 激活CRC:TouchGFX需要开启CRC功能1 p! E9 X5 Z( {" V) `8 C, S$ ]

+ J! w3 x, v# m1 v" K- g: J
微信图片_20230628135705.png , M) p" Z9 S4 ]5 T* W3 p- l+ d6 Y
. F& x( X4 v2 X! H
+ [; t2 u' ~6 Q2 R. a5 ?8 S; ~
⏩ 激活FreeRTOS系统:heap大小设置为32768字节,其余默认配置;并添加一个TouchGFX
2 K) C+ q$ s* w, i
微信图片_20230628135636.png 8 R( V; t: x% v: x! s
3 M3 ~1 x6 |: I) `  `) w% s
微信图片_20230628135632.png
) z9 ?+ @2 M6 I9 O( a6 ^/ E+ h* v
3 U+ e. Q, ^5 m6 v6 ~$ ?
选择Touchgfx组件包
9 R4 b, @3 x4 @; h# D0 s
! Q9 C% Z, r/ \; \4 F7 F
微信图片_20230628135627.png
) _8 f& x5 O# F# s+ c- Y
+ E5 b, |0 S$ f- n& l' L 微信图片_20230628135624.png
! O. w: f' A& U9 g3 a" n$ e2 u% n+ S5 I0 T& Z+ B
( |4 d7 {# t( K5 n: `9 \2 I. S
⏩ TouchGFX参数设置:选择双缓存,RGB565,开启DMA2D加速" P* X2 \, C' n& D6 n0 _

% p& h; [4 X9 b 微信图片_20230628135620.png
9 v# P' M  ?( p5 T$ U
# G; U$ u  q1 R0 B- a" ]

+ D) K. _1 i  G, F' q: \⏩ 生成工程代码:最小堆栈大小设置为0X800' k4 S5 q  r/ ]' E" `. l

5 T/ z. C- R* M/ Z3 j4 Y 微信图片_20230628135617.png 4 Y) O. b0 M. T, U3 i+ I

& ^9 I! M4 U2 o; P. c# R
% I- ~* }+ q: I
STM32CubeMX生成工程后,先不用打开Keil工程。若此时编译Keil工程,会出现大量报错
& I# }: B7 _) o" w- y% A4 g
/ m8 E8 s# G7 O
2. TouchGFX Designer界面设计
Keil工程生成后,还需要执行Touch Designer来设计UI部分
- _$ A4 J5 }0 \. P: ^⏩ 生成工程后,在TouchGFX目录下有个ApplicationTemplate.touchgfx.part,点击即可打开TouchGFX Designer
, ^6 D  B! D7 Q4 i
# h" a5 n! A0 P( J5 B" `  X 微信图片_20230628135614.png 2 E5 z9 {4 I5 F8 }
' J0 ]* G3 d% y( u5 Q
# k. V# ]: [. ]5 Y. s: I
⏩ 拖放一些控件后,点击Generate Code生成代码后,TouchGFX相关的代码就会自动添加进工程中
5 u5 A1 B; [2 A2 q2 o/ ~4 e* ]& B# {1 V5 o
微信图片_20230628135610.png
, ^7 a- l, e& P/ H

' S. L  J9 \. a, `) c  {; B5 g4 G
3. MKD-ARM Keil添加代码
⏩ 添加SDRAM驱动源文件和头文件
/ ?6 @/ K5 b3 D" R. d0 M
微信图片_20230628135607.png & G) E, a+ k& k

  S. s" d" ?: s7 O; y& b4 t: u" @2 M
! `8 l0 @( U# C$ }+ d' G
⏩ 在fmc.c文件MX_FMC_Init()函数中添加SDRAM初始化函数,将外存芯片驱动起来
) ?( ~) x; w( g; r- R. k9 V+ P( U' J. B. K: V1 i. @: B0 F
微信图片_20230628135603.png
" p( b8 a, r$ b
7 G. q; w0 F/ Y6 p; d" q# b
4 Z8 Z  V. \# o4 q: s( T
⏩ 在touchgfxhal.cpp文件中点亮屏幕背光
2 z/ E$ A# m5 N, V0 v/ v% F0 N
5 I# H7 Z* }$ a8 E 微信图片_20230628135558.png
: G4 r! N% |8 m6 o4 T4 j6 }, d+ w4 D: q( P; O$ B: ~& W

2 w; m0 d3 M/ m, ^. K* L; s- l⏩ 添加相应任务中,添加TouchGFX处理函数! \: f) [. M0 `# R9 p5 ~# j5 @
; W% \- Z6 f4 ^3 r6 u9 _
微信图片_20230628135551.png

. l6 v0 a) c! s7 y; j# s. S
4. 下载测试
⏩ 编译无误后,下载到开发板中3 j) L; V! J: v  C9 D2 z: c

6 `* U* E' m! ~4 I: m! A 微信图片_20230628135542.png
" a9 U% {+ ~6 r5 D) V7 _  H6 K  \. |6 }& m  s0 x! w
' I& h& u  y* B2 v  N% n
⏩ 如TouchGFX移植成功,开发板屏幕会显示TouchGFX Designer中设计好的界面3 U! p6 O& {3 W" `& o( \3 @
: Q8 F1 Y2 w  O' O
微信图片_20230628135535.png
2 \: {' U: N1 h' V
转载自:安迪西
如有侵权请联系删除
- T2 J; S6 K; Y" ~: U1 K% o

5 ~& P- e: ^$ Z* W$ q7 W
( _1 D* i! u, |  z, Y7 X3 {+ S
9 t. b7 }3 C! A5 g
/ I& ^/ V  H/ R( _1 j
/ z/ b0 N8 A1 F( k9 G% B
/ I% R  T. E0 e6 ~4 x8 u9 N& U' S; k7 x0 G* r( K; d
. \; A+ _" x" L$ p; U; _8 ?  A

+ x+ W! R9 N2 r  q+ Q
4 B/ r+ X& x- [0 h5 k& I( r3 |7 K3 i& |  E9 T% W

8 D. P' e: y1 [3 {. H
赞 收藏 评论0 发布时间:2023-6-28 13:57

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版