STM32CUBEIDE(13)----IIC之配置OLED
@TOC
概述
本章配置STM32F103使用IIC进行驱动SSD1306的12864OLED。 最近在弄ST和GD的课程,需要GD样片的可以加群申请:615061293 。
样品申请
https://www.wjx.top/vm/ejaAT1c.aspx#
视频教学
https://www.bilibili.com/video/BV16G411u7cg/
csdn课程
课程更加详细。 https://download.csdn.net/course/detail/35611
生成例程
使用STM32CUBEMX生成例程,这里使用NUCLEO-F103RB开发板

查看原理图,PB8和PB9设置为开发板的IIC。

配置时钟树
配置时钟为64M。

IIC配置
本次实验使用的IIC与显示屏通信,配置如下。

OLED
查看文档可以知道地址为b0111100或者b0111101,当R/W位置写0的时候,才能进行写的操作,那么地址默认为0x78(b01111000)或者0x7A(b01111010)

参考程序
这里使用0.96OLED显示屏_STM32F103C8_IIC_V1.0来进行移植


查看工程可以知道主要是有3个文件来进行OLED的驱动,移入OLE.h .c 、oledfont.h 、 bmp.h 移入文件之后要注意导入C文件。

删除没有用的头文件 删除sys.h文件

删除delay.h文件

可以查看stdint.h

在oled.h中添加u8 u32定义 也可以直接修改

先把oled.h添加主程序中。

查看oled.h,可以看到IIC定义,同时也是模拟IIC,可以注释掉

查看oled.c,可以看到是模拟iic,这些都可以注释不要,我们使用的是iIC,不是模拟。

HAL_I2C_Mem_Write()
IIC写固定的设备写入数据。 记得导入#include "i2c.h"

将HAL_I2C_Mem_Write函数放入oled.c中。 例如将Write_IIC_Command函数修改为HAL_I2C_Mem_Write发送方式。

向0x78设备写命令0x00的IIC_Command指令。
IIC写数据 向0x78设备写数据0x40的IIC_Data指令。
在oled.c中,OLED_Init初始化可以注释掉gpio初始化

在oled.c中,OLED_Init初始化中有个延时800ms。 导入
#include "stm32f1xx_hal.h" 可以使用HAL_Delay(800);

取模


在oledfont.h中放入字库

在main.c中添加显示
字体大小只有2个

显示字符

图片
图片放在bmp.h中。
交流Q_qun:615061293。 或者关注『记帖』,持续更新文章和学习资料!
显示图片

OLED.C
OLED.h
OLEDFONT.H