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

stm32 使用hal+spi驱动st7789中景园屏幕

[复制链接]
STMCU小助手 发布时间:2023-2-6 15:39
1.开发介绍:
7 y& O% j- l" I; G硬件是中景园1.47英寸 172*320 屏幕" M+ q: [' r0 q# a! a
stm32h750
. B& `4 {) p5 m0 Y4 C& }0 x  ?1 ~; w是用stm32cubemx+hal库8 J# D( b/ h! d8 p
开发环境 vscode+eide  \" U8 B6 n; P2 B+ D7 a7 [
编译器 ARMCC6! B# w/ i! L9 t$ E8 F- _4 }
屏幕引脚定义:% w6 v" I' L* i# \- c+ I' S& O
U340}6DQ(0IWDJVPZ@A309O.png
' P0 Q$ n# _# \$ z: ^1 ~, l
1 `8 D9 N# ~( r, d1 b, s2 k
2.cubemx配置
& [. q1 E0 o) H! ?) L5 D( ustm32H7时钟配置; V( ?2 x' ^/ L% [5 K. @4 g
' m9 n( @! h( V/ b1 J
7fa890417f9742b1bdb2133f1ca89bae.png 0 {% W" i5 n7 r: @% g4 q

) s9 b2 d  ^+ F4 w, \5 V" ]实测30MBITS能够正常显示,60MBITS就不行了, x8 B6 {- j2 _1 u

9 n8 p1 @$ Y- t9 r, M! P- m- h
9e86bd6f7f0348f881b83b240b1f7d18.png
( C$ r  h- E& k2 S$ m

& y6 b5 R0 K5 F$ {4 P* }4 `定义相关IO输出:6 M$ {) Z( ?8 m0 e' s1 k
' s; @& g+ B: v' U$ ~
5d9df8e4910241c0bf2d711965bce69d.png
- m+ _6 y  C/ T& s1 \3 D/ w0 N- |( g/ b/ ~" I) o  a
3.注释事项
4 r2 v' m% |5 {# B* Z, `
源码基础中景园例程修改,主要修改内容可以往下看
. U5 r. ?% a9 b: M4 ~
9 I0 T- @. U! F. h/ L' v
原例程使用软件spi
  q# F0 G2 u8 Q9 V2 p* l我在保留原有软件spi的基础上加入硬件spi,使用宏定义HW_SPI进行修改
7 U4 a. Y5 U' ?* s# r4 V/ _$ p1 c
  1. // SW_SPI or HW_SPI or HW_SPI_DMA  (HW_SPI_DMA暂时还用不了,相关代码还没写)
    5 P- s5 ~5 R2 Y' R0 L" o( i
  2. #define HW_SPI; ^. h2 f8 g3 }: @) J3 l
复制代码
* l2 }9 R: X% |/ r$ _. f+ V
对相关GPIO进行了封装重写
% z3 Q4 t; j5 Z# `7 n( V
  1. //==========================================
    1 b, M- K$ l6 M2 g
  2. //GPIO-重写7 a& G# o4 n4 t, G  i" Z4 X
  3. //==========================================
    2 C, E! K" d- e9 _
  4. #define LCD_RES_GPIO        GPIOC
    7 U( y! D' y! {5 u
  5. #define LCD_RES_GPIO_PIN    GPIO_PIN_47 k+ }) L" A5 O, L1 X/ Y
  6. #define LCD_DC_GPIO         GPIOC* V2 O1 m; q4 H' j" Q+ @- A
  7. #define LCD_DC_GPIO_PIN     GPIO_PIN_5
    % N5 f: h# u$ [$ X  t! x  \
  8. #define LCD_CS_GPIO         GPIOB' b6 v& }/ Z) Y# S8 n% }0 H: y
  9. #define LCD_CS_GPIO_PIN     GPIO_PIN_0
    6 e9 R( |4 P; R# a* Y+ L. j0 W+ {
  10. #define LCD_BLK_GPIO        GPIOB* F  B5 L; Q0 Q' N: z
  11. #define LCD_BLK_GPIO_PIN    GPIO_PIN_1; n" r2 {% \5 Y: k
复制代码
, m6 k+ Q; |! B! ?& v! }; r
用户还需要修改初始化部分代码,主要是不同屏幕初始化不同,和硬件有关,具体要看厂家初始化代码
1 K! F  `; N  K5 }初始化函数为6 p& U/ Y9 O. b4 J6 b
  1. void LCD_Init(void);//LCD初始化8 V, Z3 [9 q- v- V
复制代码
3 @7 q4 E$ \7 O) h% ~
移植时不要忘了修改
" d  P% C( b5 J. w- e' z. [: U' T' \2 P, C8 x$ c& U
移植时还需要修改显示方式和宽高
/ y4 F0 h4 H: g) B: J9 C
  1. #define USE_HORIZONTAL 0  //设置横屏或者竖屏显示 0或1为竖屏 2或3为横屏
    ( W/ @8 Q/ \1 \' a& ?

  2. ( f. z: C& d) w* B
  3. #if USE_HORIZONTAL==0||USE_HORIZONTAL==1
    / ]) M# N" p8 B8 Y9 C4 j4 h& G- k
  4. #define LCD_W 1721 r) d6 Y: t# Y" t; t
  5. #define LCD_H 320
    6 T* d3 W, I+ A- @5 z- z+ R
  6. #else
    6 m- u% A5 J6 F% g" o' _: H! u
  7. #define LCD_W 320
    & g, H+ A$ r! `, o+ i1 c4 h* x
  8. #define LCD_H 1726 z$ H' z* V7 _- k1 a
  9. #endif
    ( \" F" g  H, o! S9 ]* k9 O
复制代码
* i$ `5 i' Z) q
4.源代码' v" y. N+ q# @* ?7 T% |  V
源代码由于合并fonts到一个文件有点长,csdn上传不了$ G- ^; V4 |! O9 J
放到github上了! H% l& [$ @  G/ y. g  A8 C
, t# `0 l# w: X; T3 Y  Y
5.使用示例0 j! v' H, {4 ~3 Z2 Z2 ?+ Z0 U
  1. LCD_Init();
    8 f! h' S* X  b1 M1 h
  2. LCD_Fill(0,0,LCD_W,LCD_H,BLUE);
    & A. i0 M2 u' _) q5 ]: [
  3. Draw_Circle(50,50,5,WHITE);
    2 o* n! A0 t9 Y3 C* b" l
  4. LCD_ShowString(10,10,(const uint8_t *)"TEST",YELLOW,GREEN,32,0);# I' B/ ]. @' L) b1 R8 g1 {
复制代码
! W7 ^( s  P8 a4 |6 Z& v$ [4 j

5 ?' L7 F4 D# [; w% d————————————————1 f9 l6 h, h" F( M- B
版权声明:gxt_kt
/ W! k6 t  [* J# h' R; A5 b
4 w0 y8 Q6 }2 i; ^! T3 C# H5 p+ c$ j2 g/ b( n- h* S: v  i
赞 收藏 评论0 发布时间:2023-2-6 15:39

举报

0个回答

所属标签

相似技术帖

官网相关资源

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