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

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 引脚。
" B% D. P( L. h' c. g; E6 J* |

3 O* o$ ]% t7 p
STM32G431开发板的周边外设比较少,为了便于人际交互最先考虑的是为其配上一个显示屏,以利于信息的观察。
为了较少地占用系统资源,这里采用的是I2C接口的双色OLED屏,考虑到STM32G431开发板配有Arduino接口,就将OLED屏放到Arduino接口上来使用,从而能够不必连线就解决问题。

! [' `3 [- R! g3 }2 G7 D/ r) s3 i1 {
OLED屏与MCU大的连接关系为:
SCL---PA5
SDA---PA6

8 P& I% G8 ?+ I3 B4 S3 H6 s: h, c
控制相关引脚输出高低电平的语句定义为:
#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)
9 _4 b' s) `# D! E9 }# H
#defineOLED_SDIN_Clr()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6,GPIO_PIN_RESET)
9 J7 e: T' U+ g9 A4 G
实现引脚输出功能配置的函数为:
  1. void GPIO_OLED_INIT(void)  e! ]/ e$ f4 N
  2. {; C8 m7 D$ j: j
  3. __HAL_RCC_GPIOA_CLK_ENABLE();
    / x7 H8 Z3 V* c) P
  4. GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;3 X) G: ~) x+ Q; l1 e
  5. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
    : z! z" [; e3 F  H; d
  6. GPIO_InitStruct.Pin = GPIO_PIN_5;% u- Q4 r% P1 a
  7. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);   
    $ v( H$ a7 l( i4 J1 K' |% R
  8. GPIO_InitStruct.Pin = GPIO_PIN_6;
    : ]1 L8 y3 N' A3 i
  9. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
      O7 y- G: e9 c8 ?+ Z0 o' d, L" r
  10. }
复制代码
* N1 H6 e7 B; i. H0 x7 q& }) y
由于STM32G431的主频速度比较高,故直接移植程序代码是有问题的,需要添加相应的延时函数来辅助解决。
修改后的辅助显示函数为:
  1. void IIC_Start()
    ! w0 w; ^/ p2 G0 V7 u
  2. {6 k8 j3 ?7 t% W
  3. OLED_SCLK_Set();9 G8 N# X8 `2 X: \# s) m% S( }( A
  4. Delay(1);! }$ H! V6 u' m7 D9 k
  5. OLED_SDIN_Set();
    ! Y3 }% m5 {: g
  6. Delay(1);
    " |9 h. a# [& ~6 p5 U4 q
  7. OLED_SDIN_Clr();
    * p: l5 F0 F0 p0 [" H7 Y/ c
  8. Delay(1);
      [- J7 `) p0 d/ E
  9. OLED_SCLK_Clr();
    0 ~6 a9 v7 J3 L, N+ Y
  10. Delay(1);& O; x* Y: Y7 \- j, A
  11. }& W4 v6 A& ~, f6 q* a/ H
  12. . p) M: l) c( p) k
  13. void IIC_Stop()
    * Q" E. z3 ]. }+ i* T$ v6 T
  14. {
    & B( M' h: Q, ~5 k! D
  15. OLED_SCLK_Set();9 B$ }1 T" }4 S
  16. Delay(1);
    2 O6 _: _8 P+ T, I% e4 X
  17. OLED_SDIN_Clr();0 C  C! A' ~8 ^& S. A
  18. Delay(1);: u/ a: t/ t4 {  w- h7 q# Z( I
  19. OLED_SDIN_Set();/ C- `/ K& y- [- `5 N( Q) k
  20. Delay(1);
    / ?+ I2 f) M$ t$ `& V+ r/ H4 f2 H
  21. }
    8 Y; _- w: ]( p1 V/ f

  22. 6 {5 y9 O+ E( }9 V% [& t
  23. void IIC_Wait_Ack()5 u, E: m* K8 b0 @+ E
  24. {' y( o3 K! R! l4 }. V/ S) k2 O! E' V
  25. OLED_SCLK_Set();+ p1 |% p/ u& j. u/ ]3 W, ?
  26. Delay(1);
    + I- |8 L$ B( r! F: w* X
  27. OLED_SCLK_Clr();
    5 M/ e$ D2 u. p6 c9 L
  28. Delay(1);
    + p, c; O8 r7 l4 |/ v7 z' d; e
  29. }
复制代码
2 u$ _$ L/ D2 q0 @0 s5 d0 V
实现下图显示效果的主程序为:
  1. int main(void)& H. K  O8 R6 M" u! H" h
  2. {) ^4 t% a' N5 k6 K8 k6 f- f. n
  3. HAL_Init();( l4 y9 O+ i, Y* h) d
  4. SystemClock_Config();2 P! h+ H$ v5 X1 J4 ^. e8 X
  5. GPIO_OLED_INIT();+ L' z( Q3 I. f6 @/ U
  6. OLED_Init();- w& P! m! H! `: \$ m# A
  7. OLED_Clear();: @  o7 }( o" [) I5 M
  8. OLED_ShowString(10,2,"STM32G431",16);
    ) |9 T  o: Z' s7 m, Y
  9. OLED_ShowString(10,4,"OLED TEST",16);
      e1 I0 }: O  C5 n( x3 m6 B
  10. OLED_ShowCHinese(79,2,9);
    8 q  K: i4 k& D
  11. OLED_ShowCHinese(95,2,10);% l/ T& T! b$ q: ?3 U
  12. OLED_ShowCHinese(111,2,11);( {* p% l: a) z! d; `2 a# J2 e& z
  13. while (1);" r+ ?8 F5 @' N5 s( A4 @9 u
  14. }
复制代码
- T4 U; n0 I+ W" v
a.jpg
& y! Y% e8 u( R; ]8 V& `
OLED屏显示效果
2 J/ f2 I$ J( o9 P  H

: `+ X: G' i7 h; o- B' H& r7 f* j1 }
赞 收藏 评论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
+ _" O: W) m0 G" i* @2 D赞!
" a) V3 W1 k/ W% \/ [
感谢支持!!!

所属标签

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