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

STM32G431驱动OLED屏显示

[复制链接]
jinglixixi 发布时间:2020-12-8 22:41
STM32G431是一款 STM32G4 系列的入门级芯片,它内嵌了运行频率为 170 MHz 的 Arm Cortex-M4内核,支持 FPU 和 DSP 指令,属混合信号微控制器。
该系列芯片具有:
•2 个高速12 位 ADC(采样率 4 M/秒)
•4 个 12 位 DAC(采样率 15 M/秒)
•4 个高速比较器(17 纳秒)
•3 个高速运放(具有可编程增益)
•ART、CCM SRAM 和数算加速器
•单存储区 Flash存储容量范围为 32 到 128 KB,封装为 32 到 100 引脚。
2 t/ l1 e! a8 R% z
" n+ n" I  H( A! D+ n% I+ R, R
STM32G431开发板的周边外设比较少,为了便于人际交互最先考虑的是为其配上一个显示屏,以利于信息的观察。
为了较少地占用系统资源,这里采用的是I2C接口的双色OLED屏,考虑到STM32G431开发板配有Arduino接口,就将OLED屏放到Arduino接口上来使用,从而能够不必连线就解决问题。
9 z7 B0 C; x6 n$ d
OLED屏与MCU大的连接关系为:
SCL---PA5
SDA---PA6

9 E2 x% ^5 ]; I5 v2 X1 s0 h
控制相关引脚输出高低电平的语句定义为:
#defineOLED_SCLK_Set()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5,GPIO_PIN_SET)
#defineOLED_SCLK_Clr()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_5,GPIO_PIN_RESET)
#defineOLED_SDIN_Set()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6,GPIO_PIN_SET)
  r$ p0 n2 i- {- Q2 g9 V
#defineOLED_SDIN_Clr()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6,GPIO_PIN_RESET)

. ]" `, M' I9 L& |
实现引脚输出功能配置的函数为:
  1. void GPIO_OLED_INIT(void)3 P5 X- p8 Q$ L
  2. {
    9 R! h3 u# g  ?8 H7 l+ V
  3. __HAL_RCC_GPIOA_CLK_ENABLE();" G8 L8 \  d8 T" m
  4. GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
    / }) K" G+ j' U, u! {# Z! ~
  5. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    " b* I5 V. V: }
  6. GPIO_InitStruct.Pin = GPIO_PIN_5;; U0 ]: D' l2 {9 u8 N
  7. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);   
    5 U3 `% i( Y9 U+ \; g* A4 L/ M
  8. GPIO_InitStruct.Pin = GPIO_PIN_6;4 G* W, K+ A6 U1 U9 N% g
  9. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);: J" V( n3 R$ u2 }
  10. }
复制代码

: ?$ x0 ^, G1 C
由于STM32G431的主频速度比较高,故直接移植程序代码是有问题的,需要添加相应的延时函数来辅助解决。
修改后的辅助显示函数为:
  1. void IIC_Start()
    * p' s4 K' a* G+ Z. `3 ~" @- M
  2. {+ x. [8 V& q& p+ b/ `0 Q# K" v; j
  3. OLED_SCLK_Set();
    3 Y$ J, k" C1 {+ ~0 ~
  4. Delay(1);7 n! E8 d# G# Q7 N
  5. OLED_SDIN_Set();
    % ^4 b: ~& }$ Y4 q2 R1 @$ E7 s
  6. Delay(1);9 N! J2 ]& B+ }+ o' o; [- H
  7. OLED_SDIN_Clr();  D- o# l) l  N7 U* e3 O
  8. Delay(1);) {, }1 X9 O4 K( d/ j, i
  9. OLED_SCLK_Clr();
    , U- _- c9 W5 d" M
  10. Delay(1);
    % [, y9 n1 M% G4 R0 ~
  11. }
      f! l" |3 g( a. u5 E! u3 E+ k
  12. ( E9 ~+ ~7 v* R( O
  13. void IIC_Stop()
    . H% ]. A+ ?: t$ M( ~
  14. {
    ' ?4 \* c# g* X) V2 o
  15. OLED_SCLK_Set();4 z  d9 o6 z. N3 w6 x2 \' s) l
  16. Delay(1);
    5 C( g- H) H& H
  17. OLED_SDIN_Clr();
    1 P; _8 Q) [- k% a; h
  18. Delay(1);
    7 P3 o8 k% ]- A+ G% F. f+ _
  19. OLED_SDIN_Set();& b1 C% L2 t, w% v/ x
  20. Delay(1);2 p# [1 T. I1 F8 ~
  21. }
    ; B2 ~4 w; j8 H$ b2 S# }9 R6 W6 Z

  22. 4 |; t5 M& J5 p# z5 c7 ~% C
  23. void IIC_Wait_Ack()
    . Z" X( B# |! d* F- y5 a& ~. _
  24. {
    ; |: \; L* H2 D- x
  25. OLED_SCLK_Set();! d/ b" ^% ?5 r0 l8 _$ ]/ G
  26. Delay(1);
    7 f% N6 I( q: F. l1 c9 V, `
  27. OLED_SCLK_Clr();. u  P$ T6 D- a$ U
  28. Delay(1);
    . P& d7 w0 T6 b5 ]* Z6 B
  29. }
复制代码
1 b6 x9 K2 }- [& M2 h
实现下图显示效果的主程序为:
  1. int main(void)2 W% S& M( E5 A3 e" W. }
  2. {
    # s% K, P2 l7 g2 P( ~& A" V
  3. HAL_Init();
    / j5 w* _  [) c7 F5 r
  4. SystemClock_Config();: z" @+ O1 y* ?, ^) ]: g+ W
  5. GPIO_OLED_INIT();0 m2 \, ]  S6 V) k% o: @8 X) F5 @+ j
  6. OLED_Init();
    : Q- z. W. e4 {+ W! U5 C
  7. OLED_Clear();
    / |: v# o' z5 ^3 i! L/ q
  8. OLED_ShowString(10,2,"STM32G431",16);+ Y. _+ R( r' o+ J, C' W- U
  9. OLED_ShowString(10,4,"OLED TEST",16);/ _. I( \! K7 Y& g2 r, V5 [' r
  10. OLED_ShowCHinese(79,2,9);' M9 `' a) l' L2 |* |
  11. OLED_ShowCHinese(95,2,10);
    2 f& b" }" p; l6 n4 P9 n
  12. OLED_ShowCHinese(111,2,11);3 r/ \; O* Y1 S; p6 W$ S
  13. while (1);
      f( g  V# X1 I$ M/ N
  14. }
复制代码
1 I" S5 H( f/ m! T9 O- ]% h3 d- O
a.jpg

& S+ y3 b) k; L# b* ]# C2 d
OLED屏显示效果

$ y/ z; U7 o  G' Y5 t. n

0 K! V1 A( C7 ~6 n9 E6 d
赞 收藏 评论2 发布时间:2020-12-8 22:41

举报

2个回答
kylixyao 回答时间:2020-12-9 11:31:33
赞!
jinglixixi 回答时间:2020-12-9 17:13:52
kylixyao 发表于 2020-12-9 11:31
% a4 z) c' x+ V) \5 ]) k! N1 ^赞!

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