STM32CUBEMX開發(fā)GD32F303(14)----IIC之配置OLED
概述
本章STM32CUBEMX配置STM32F103,并且在GD32F303中進行開發(fā),同時通過開發(fā)板內(nèi)進行驗證。 使用IIC進行驅(qū)動SSD1306的12864OLED。 最近在弄ST和GD的課程,需要GD樣片的可以加群申請:615061293 。
視頻教學(xué)
https://www.bilibili.com/video/BV1Q8411t7sK/
csdn課程
課程更加詳細。?https://download.csdn.net/course/detail/37152
樣品申請
https://www.wjx.top/vm/mB2IKus.aspx
生成例程
這里準備了自己繪制的開發(fā)板進行驗證。?

?查看原理圖,PB8和PB9設(shè)置為開發(fā)板的IIC。?

配置時鐘樹
配置時鐘為64M。?

IIC配置
本次實驗使用的IIC與顯示屏通信,配置如下。?

OLED
查看文檔可以知道地址為b0111100或者b0111101,當R/W位置寫0的時候,才能進行寫的操作,那么地址默認為0x78(b01111000)或者0x7A(b01111010)

參考程序
這里使用0.96OLED顯示屏_STM32F103C8_IIC_V1.0來進行移植?

?

?查看工程可以知道主要是有3個文件來進行OLED的驅(qū)動,移入OLE.h .c 、oledfont.h 、 bmp.h 移入文件之后要注意導(dǎo)入C文件。?

刪除沒有用的頭文件 刪除sys.h文件?

刪除delay.h文件?

可以查看stdint.h?

在oled.h中添加u8 u32定義 也可以直接修改
typedef unsigned ? ? ? ? ?char u8;
typedef unsigned ? ? ? ? ? int u32;

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

查看oled.h,可以看到IIC定義,同時也是模擬IIC,可以注釋掉?

查看oled.c,可以看到是模擬iic,這些都可以注釋不要,我們使用的是iIC,不是模擬。

HAL_I2C_Mem_Write()
IIC寫固定的設(shè)備寫入數(shù)據(jù)。 記得導(dǎo)入#include "i2c.h"?

將HAL_I2C_Mem_Write函數(shù)放入oled.c中。 例如將Write_IIC_Command函數(shù)修改為HAL_I2C_Mem_Write發(fā)送方式。?

向0x78設(shè)備寫命令0x00的IIC_Command指令。
IIC寫數(shù)據(jù) 向0x78設(shè)備寫數(shù)據(jù)0x40的IIC_Data指令。
在oled.c中,OLED_Init初始化可以注釋掉gpio初始化?

在oled.c中,OLED_Init初始化中有個延時800ms。 導(dǎo)入
#include "stm32f1xx_hal.h" 可以使用HAL_Delay(800);

取模


?在oledfont.h中放入字庫?

在main.c中添加顯示
字體大小只有2個?

?顯示字符
圖片
圖片放在bmp.h中。
顯示圖片
OLED.C
OLED.h
OLEDFONT.H