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

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 个高速运放(具有可编程增益)
•ARTCCM SRAM 和数算加速器
单存储区 Flash存储容量范围为 32 128 KB,封装为 32 100 引脚。


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

OLED屏与MCU大的连接关系为:
SCL---PA5
SDA---PA6

控制相关引脚输出高低电平的语句定义为:
#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)

#defineOLED_SDIN_Clr()  HAL_GPIO_WritePin(GPIOA, GPIO_PIN_6,GPIO_PIN_RESET)

实现引脚输出功能配置的函数为:
  1. void GPIO_OLED_INIT(void)
  2. {
  3. __HAL_RCC_GPIOA_CLK_ENABLE();
  4. GPIO_InitStruct.Mode  = GPIO_MODE_OUTPUT_PP;
  5. GPIO_InitStruct.Speed = GPIO_SPEED_FREQ_LOW;
  6. GPIO_InitStruct.Pin = GPIO_PIN_5;
  7. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);   
  8. GPIO_InitStruct.Pin = GPIO_PIN_6;
  9. HAL_GPIO_Init(GPIOA, &GPIO_InitStruct);
  10. }
复制代码

由于STM32G431的主频速度比较高,故直接移植程序代码是有问题的,需要添加相应的延时函数来辅助解决。
修改后的辅助显示函数为:
  1. void IIC_Start()
  2. {
  3. OLED_SCLK_Set();
  4. Delay(1);
  5. OLED_SDIN_Set();
  6. Delay(1);
  7. OLED_SDIN_Clr();
  8. Delay(1);
  9. OLED_SCLK_Clr();
  10. Delay(1);
  11. }

  12. void IIC_Stop()
  13. {
  14. OLED_SCLK_Set();
  15. Delay(1);
  16. OLED_SDIN_Clr();
  17. Delay(1);
  18. OLED_SDIN_Set();
  19. Delay(1);
  20. }

  21. void IIC_Wait_Ack()
  22. {
  23. OLED_SCLK_Set();
  24. Delay(1);
  25. OLED_SCLK_Clr();
  26. Delay(1);
  27. }
复制代码

实现下图显示效果的主程序为:
  1. int main(void)
  2. {
  3. HAL_Init();
  4. SystemClock_Config();
  5. GPIO_OLED_INIT();
  6. OLED_Init();
  7. OLED_Clear();
  8. OLED_ShowString(10,2,"STM32G431",16);
  9. OLED_ShowString(10,4,"OLED TEST",16);
  10. OLED_ShowCHinese(79,2,9);
  11. OLED_ShowCHinese(95,2,10);
  12. OLED_ShowCHinese(111,2,11);
  13. while (1);
  14. }
复制代码

a.jpg

OLED屏显示效果


收藏 评论2 发布时间:2020-12-8 22:41

举报

2个回答
kylixyao 回答时间:2020-12-9 11:31:33
赞!
jinglixixi 回答时间:2020-12-9 17:13:52

感谢支持!!!

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版