请选择 进入手机版 | 继续访问电脑版

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

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

[复制链接]
STMCU小助手 发布时间:2023-2-6 15:39
1.开发介绍:
: o9 R7 U& V7 x% Y, u5 z硬件是中景园1.47英寸 172*320 屏幕
+ e( h6 l- v* `stm32h750. d9 ^$ z+ l  ~# h1 U, l+ Y# h- w% J
是用stm32cubemx+hal库
4 c3 x  ~: Y7 Q% J) Y开发环境 vscode+eide8 r, n2 L, ]) `: _8 c4 C1 t
编译器 ARMCC6
+ D7 E& Y) K; V+ E( e& ~0 t, ]& G/ b
屏幕引脚定义:
' m5 q) _) f; b; _ U340}6DQ(0IWDJVPZ@A309O.png
( M9 n& y( q' V% l' i5 I5 c1 j

/ ]1 Z- q6 f+ F4 G4 x1 U2.cubemx配置2 h; f3 b( W5 {+ F! G
stm32H7时钟配置
! F  j7 Y- o5 U" U! f7 b2 x; |2 A0 f8 I! I0 z# m
7fa890417f9742b1bdb2133f1ca89bae.png 4 u- T9 a5 R, v/ r- c' U' p1 ^
- j' h" q6 r+ |$ S1 ?* K8 J
实测30MBITS能够正常显示,60MBITS就不行了* U+ a. ?& P3 w* r4 j* U

/ A  n8 [  ~2 r9 I
9e86bd6f7f0348f881b83b240b1f7d18.png
5 b; F) Q* Z- R2 J; [

) c& v8 p! T8 o1 x定义相关IO输出:
* N7 m9 I; z4 v5 o" p. F
1 l& Y& r# f& K6 ]* o2 L
5d9df8e4910241c0bf2d711965bce69d.png 4 ]* {. p6 {/ O0 c" g
7 i$ x5 K1 N( D. O
3.注释事项

9 j/ e4 j$ t5 _1 w! l3 i源码基础中景园例程修改,主要修改内容可以往下看
1 D, a. O; z; M+ H0 t

$ F& r* s6 y) R* m7 |" j原例程使用软件spi# _  N" Y& w- o( ?6 V
我在保留原有软件spi的基础上加入硬件spi,使用宏定义HW_SPI进行修改
- [( z! L: W2 @& N8 |# H# A, E
  1. // SW_SPI or HW_SPI or HW_SPI_DMA  (HW_SPI_DMA暂时还用不了,相关代码还没写)
    - v" q' \0 A' [2 Y
  2. #define HW_SPI+ \# V: L* N' C9 i4 ?' _
复制代码

7 l) a* e9 Y* }  X( J5 w对相关GPIO进行了封装重写. X0 n  [. l# K$ h( |0 n
  1. //==========================================
    7 X' W+ n2 d" Z3 f' y
  2. //GPIO-重写& v& A  t; \! |* J
  3. //==========================================* X/ Y' d/ |) D" y6 U& q$ `/ t
  4. #define LCD_RES_GPIO        GPIOC
    , Q8 a* s$ S+ _) x% |3 Y4 ]
  5. #define LCD_RES_GPIO_PIN    GPIO_PIN_4. U. J8 o/ K1 m0 G& D  V
  6. #define LCD_DC_GPIO         GPIOC
    9 s, E& d8 B' O7 _- |
  7. #define LCD_DC_GPIO_PIN     GPIO_PIN_5
    + q: f  A7 @. F9 j) @$ L
  8. #define LCD_CS_GPIO         GPIOB
    0 C' U( t. _; J: p  C9 e& A
  9. #define LCD_CS_GPIO_PIN     GPIO_PIN_0
    ; T. u" b* I6 N! Y
  10. #define LCD_BLK_GPIO        GPIOB
    # o; |6 b& ~; w4 ], j3 }/ I
  11. #define LCD_BLK_GPIO_PIN    GPIO_PIN_1+ t% h( n+ G. ?: {; j5 h  l
复制代码

% j9 l% x% q& x用户还需要修改初始化部分代码,主要是不同屏幕初始化不同,和硬件有关,具体要看厂家初始化代码8 U8 v2 m) I9 m0 q# K
初始化函数为5 w% d. @4 B- }9 S- S; E
  1. void LCD_Init(void);//LCD初始化
    5 a  S  s: I  N) v( M, s9 d
复制代码

: u. F6 h3 f, }" \2 M  e移植时不要忘了修改
, j5 b8 s  @7 s) t: w
0 |# U8 Q  c% t* V移植时还需要修改显示方式和宽高/ l% G" U: p% a& {: s) q' P( G
  1. #define USE_HORIZONTAL 0  //设置横屏或者竖屏显示 0或1为竖屏 2或3为横屏
    # d3 T6 ^/ A) T3 y6 m

  2. ) Z/ g7 I5 `1 F0 `) [3 I  z
  3. #if USE_HORIZONTAL==0||USE_HORIZONTAL==1! e# m3 z" t4 ]) {) d. G# @& l' @
  4. #define LCD_W 1723 J. t; @% c# \+ [( Z
  5. #define LCD_H 320' t6 n' ^. \* d, u% g! p5 Z- m+ n
  6. #else
    * k4 M- x& W3 b" d/ c* ?
  7. #define LCD_W 320
    $ {4 Q; @6 P0 G* Q+ S, a
  8. #define LCD_H 172
    , r7 v9 D3 @* e3 s4 |: _
  9. #endif  K- g+ i) C$ f: W7 o
复制代码

7 t" P2 ?( w8 v) t. d/ B% V: q4.源代码/ t& i6 V6 _. Y- x
源代码由于合并fonts到一个文件有点长,csdn上传不了
; P; Y$ r3 C" J1 t/ z0 a$ t放到github上了
0 L' s$ `6 d% _8 l8 N5 }7 b3 X( p

8 i6 A$ d3 B2 R$ p# n: M4 @5.使用示例$ ]2 \: E4 @0 @
  1. LCD_Init();7 Z) c* d( h9 f" I; v
  2. LCD_Fill(0,0,LCD_W,LCD_H,BLUE);
    % o; |9 ?/ ]3 _1 u' ?
  3. Draw_Circle(50,50,5,WHITE);7 P1 q) V: L2 P, O, R6 u
  4. LCD_ShowString(10,10,(const uint8_t *)"TEST",YELLOW,GREEN,32,0);
    ; V& S; s' ]; `( D$ w0 ~* \* E
复制代码
/ [) T! @: k2 x% U4 y8 V( Z5 N  Q
$ v% p3 d0 M! R' t! n- I7 s5 f
————————————————
- t% U9 {9 J6 U  H) Q2 O% s$ `版权声明:gxt_kt* C4 N0 |2 v9 V3 S9 |

) @  y: m* N- b
6 ]* @6 m  I" i% }
收藏 评论0 发布时间:2023-2-6 15:39

举报

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