STM32CUBEIDE(13)----IIC之配置OLED
@TOC
概述
本章配置STM32F103使用IIC進(jìn)行驅(qū)動(dòng)SSD1306的12864OLED。 最近在弄ST和GD的課程,需要GD樣片的可以加群申請(qǐng):615061293 。
樣品申請(qǐng)
https://www.wjx.top/vm/ejaAT1c.aspx#
視頻教學(xué)
https://www.bilibili.com/video/BV16G411u7cg/
csdn課程
課程更加詳細(xì)。?https://download.csdn.net/course/detail/35611
生成例程
使用STM32CUBEMX生成例程,這里使用NUCLEO-F103RB開(kāi)發(fā)板?

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

配置時(shí)鐘樹(shù)
配置時(shí)鐘為64M。?

IIC配置
本次實(shí)驗(yàn)使用的IIC與顯示屏通信,配置如下。?

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,不是模擬。

HAL_I2C_Mem_Write()
IIC寫(xiě)固定的設(shè)備寫(xiě)入數(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è)備寫(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 "stm32f1xx_hal.h" 可以使用HAL_Delay(800);

取模


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

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

?顯示字符

圖片
圖片放在bmp.h中。
交流Q_qun:615061293。 或者關(guān)注『記帖』,持續(xù)更新文章和學(xué)習(xí)資料!?
顯示圖片

OLED.C
OLED.h
OLEDFONT.H