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

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 引脚。

( H/ T! Z2 z+ f4 b3 c+ I% g+ D. i/ f$ p* V: p
STM32G431开发板的周边外设比较少,为了便于人际交互最先考虑的是为其配上一个显示屏,以利于信息的观察。
为了较少地占用系统资源,这里采用的是I2C接口的双色OLED屏,考虑到STM32G431开发板配有Arduino接口,就将OLED屏放到Arduino接口上来使用,从而能够不必连线就解决问题。
- a' Q0 z5 P1 e* n( b/ P5 ]+ C9 Z
OLED屏与MCU大的连接关系为:
SCL---PA5
SDA---PA6

$ @; g( m5 i5 }2 L# ~& i
控制相关引脚输出高低电平的语句定义为:
#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)
( u: M- G( F3 |( I
#defineOLED_SDIN_Clr()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6,GPIO_PIN_RESET)
" V! B4 C3 F- V
实现引脚输出功能配置的函数为:
  1. void GPIO_OLED_INIT(void). k8 Z& L1 S  v  j  p
  2. {
    % ^. _8 U, |; x$ U8 H* A
  3. __HAL_RCC_GPIOA_CLK_ENABLE();
    # }" {# s' f& `4 I
  4. GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
    ( j  y; G4 W/ Q
  5. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;# T. `# |' {7 V( N& O# \
  6. GPIO_InitStruct.Pin = GPIO_PIN_5;2 [- m" ^' D# j1 Q" @! J8 p- X
  7. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);   
    2 L8 i+ j0 N4 r; h5 E& O
  8. GPIO_InitStruct.Pin = GPIO_PIN_6;) I; `6 z0 |7 a/ K4 `0 ~5 y5 R. j
  9. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);( t; k7 Q" v1 G: s
  10. }
复制代码

5 f( P. d  E9 Z% a; E  X
由于STM32G431的主频速度比较高,故直接移植程序代码是有问题的,需要添加相应的延时函数来辅助解决。
修改后的辅助显示函数为:
  1. void IIC_Start()
    & b! F' m7 @- R; R
  2. {4 M3 ^- j& `4 m5 g
  3. OLED_SCLK_Set();
    6 {6 `6 C0 n! `- E  R
  4. Delay(1);
    ' ^1 [' h  p1 ]8 c8 Z$ w
  5. OLED_SDIN_Set();0 c% G' u+ ^; q- F; @  H9 P
  6. Delay(1);
    & o  r5 Q4 s- P* |& O
  7. OLED_SDIN_Clr();
    ' m1 s( j% G4 V) h% I+ f+ \! W" x
  8. Delay(1);
    4 }3 I( ?* y1 R# I; d! G
  9. OLED_SCLK_Clr();4 d0 b+ Q; r& ?6 k, Q: B
  10. Delay(1);
    5 c( }4 f1 T- j) V% j! n4 c( U5 w
  11. }6 U$ z/ P: m* v6 k- \9 C4 j. b: U

  12. 8 V0 w0 n& D$ U$ j9 a) a- w
  13. void IIC_Stop()( M. B7 Z' `% A. {2 N
  14. {
    3 G/ B1 D/ Z* w  ]& O! G
  15. OLED_SCLK_Set();9 z5 M; B8 x' d; U3 J
  16. Delay(1);' K* g. g0 @1 ~$ `
  17. OLED_SDIN_Clr();
    6 T/ K( G" |# e( g0 [( |5 i8 p+ |, Q
  18. Delay(1);$ r1 E8 ]" S  X  l5 q3 _
  19. OLED_SDIN_Set();  V& y! s' i0 t* ^6 P( }
  20. Delay(1);
    / D$ `$ @  ]. l, x# c
  21. }
    # D. H4 T! c( N
  22. " I9 ^* M, p( V% ]5 R* W+ f* u3 x
  23. void IIC_Wait_Ack()
    + T, e& S: Q! T/ J5 S6 D5 [
  24. {6 g' V/ Q3 l3 d: Q
  25. OLED_SCLK_Set();
    + v6 V9 n. b" E. C
  26. Delay(1);5 h! ~: O" l2 j! a9 ^
  27. OLED_SCLK_Clr();% r& [$ L& N6 t
  28. Delay(1);
    ( C5 _7 D+ J% x* z. c
  29. }
复制代码
5 `( C  q% f2 @3 x6 A
实现下图显示效果的主程序为:
  1. int main(void)
    ) ]- k3 l! p, z* p
  2. {
    5 X8 e: c- x5 z
  3. HAL_Init();
    7 a5 {# T# \' l/ V: s, A! M  Z
  4. SystemClock_Config();( c, p1 g7 h# y( {+ s. M& }9 }
  5. GPIO_OLED_INIT();) Y" D) c/ M* s
  6. OLED_Init();
    ) e- c% B: B; A+ ^/ X7 e
  7. OLED_Clear();
    - @7 g# ~; c8 [9 c! r0 b- M. m
  8. OLED_ShowString(10,2,"STM32G431",16);" |5 p, p7 {7 n+ s5 K* X
  9. OLED_ShowString(10,4,"OLED TEST",16);
    3 j/ l$ G7 Q9 n% ]2 B
  10. OLED_ShowCHinese(79,2,9);, E+ G, y2 p& k
  11. OLED_ShowCHinese(95,2,10);
    ! g8 j+ f; B8 ~6 |9 X% T# i
  12. OLED_ShowCHinese(111,2,11);1 V3 A9 @; x" o' y6 J" v
  13. while (1);# W7 d9 q6 F0 D/ b" s3 M* @3 ]
  14. }
复制代码
# N2 E# v, E. X  Y) b( `$ P; M, J& U, @
a.jpg
) i1 D: v6 T" S# v7 A6 x
OLED屏显示效果
; i+ r+ u* _* ]4 q
% f& w& g/ x" w/ d, P* P, `/ j0 N
赞 收藏 评论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:310 a) w4 V5 a" R, k+ S. n" e
赞!
. C6 N3 p1 o. b( X
感谢支持!!!
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版