GD32F303固件庫(kù)開(kāi)發(fā)(14)----IIC之配置OLED
概述
本章配置GD32F303使用IIC進(jìn)行驅(qū)動(dòng)SSD1306的12864OLED。 查閱手冊(cè)可以得知,PB10、PB11為I2C的接口。 需要GD樣片的可以加群申請(qǐng):615061293 。


視頻教學(xué)
https://www.bilibili.com/video/BV1od4y1u7t7/
csdn課程
課程更加詳細(xì)。?https://download.csdn.net/course/detail/37144
樣品申請(qǐng)
https://www.wjx.top/vm/wFGhGPF.aspx#
參考文檔
GD官方文檔GD32F30x_Firmware_Library_V2.1.4下面IIC的Master_transmitter&slave_receiver
時(shí)鐘使能
初始化IO
IIC初始化
配置IIC接口
修改IIC發(fā)送代碼
將Master_transmitter&slave_receiver的IIC發(fā)送代碼進(jìn)行修改

OLED
查看文檔可以知道地址為b0111100或者b0111101,當(dāng)R/W位置寫(xiě)0的時(shí)候,才能進(jìn)行寫(xiě)的操作,那么地址默認(rèn)為0x78(b01111000)或者0x7A(b01111010)?

參考程序
這里使用0.96OLED顯示屏_STM32F103C8_IIC_V1.0來(lái)進(jìn)行移植?

?

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

?記得添加路徑。?

?刪除沒(méi)有用的頭文件 刪除sys.h文件?

?刪除delay.h文件?

可以查看stdint.h

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

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

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

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

?將IIC寫(xiě)放入oled.c中。 記得導(dǎo)入#include "gd32f30x_i2c.h"頭文件?

記得在oled.h中申明 要使用uint8和uint32,導(dǎo)入頭文件#include "stdint.h"

?IIC寫(xiě)一個(gè)字節(jié)可以修改為如下所示。?

IIC寫(xiě)指令 向0x78設(shè)備寫(xiě)命令0x00的IIC_Command指令。?

IIC寫(xiě)數(shù)據(jù) 向0x78設(shè)備寫(xiě)數(shù)據(jù)0x40的IIC_Data指令。?

在oled.c中,OLED_Init初始化可以注釋掉gpio初始化?

在oled.c中,OLED_Init初始化中有個(gè)延時(shí)800ms。 導(dǎo)入
#include "systick.h" 可以使用delay_1ms(800);?

取模
?


在oledfont.h中放入字庫(kù)?

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

顯示字符

圖片

?圖片放在bmp.h中。
顯示圖片

OLED.C
OLED.h
OLEDFONT.H
以上的代碼會(huì)在Q_qun里分享。QQ_qun:615061293。 或者關(guān)注『記帖』,持續(xù)更新文章和學(xué)習(xí)資料!?