|
本來這是一篇內(nèi)容,但卻昨天實(shí)在太晚,沒有完成,這里把內(nèi)容補(bǔ)充完整。
OLED屏點(diǎn)不亮跟兩個(gè)方面有關(guān):硬件(硬件驅(qū)動(dòng))和軟件(用戶程序)。
OLED屏分兩種接口,SPI接口和IIC接口。
1. 這里以SPI接口為例(網(wǎng)上有一家做的挺好,硬件驅(qū)動(dòng)也非常工整、詳細(xì),你如果仔細(xì)學(xué)習(xí)一下,可以用他們家的函數(shù)在屏幕上做出各種參數(shù)的矢量圖。但他們家也存在函數(shù)不統(tǒng)一的現(xiàn)象。后面的程序均以此家為例)還是拿STM32103C8T6來講。這款芯片有2個(gè)硬件SPI接口,你會(huì)發(fā)現(xiàn)廠家的OLED屏驅(qū)動(dòng)引腳落在其中一組SPI引腳上(PA5,PA7),也僅有這兩個(gè)引腳可以復(fù)用SPI,其他的是普通引腳。所以說廠家的驅(qū)動(dòng)程序是軟件模擬SPI接口,知道了這一點(diǎn),我們可以做很多事情,也可以避免很多坑。
不要設(shè)定硬件SPI,特別是使用STM32CubeMX設(shè)定硬件環(huán)境的。如果設(shè)了,你可能會(huì)點(diǎn)不亮屏,還不知什么原因。
2.有人就會(huì)說,那是不是我就可以隨便選擇引腳了呢。請看下面這個(gè)坑。
芯片STM32F103T8,這個(gè)芯片QFN封裝,36個(gè)引腳。
a.使用內(nèi)部晶振和OLED屏。使用普通引腳無法點(diǎn)亮,但把引腳設(shè)在SPI這幾個(gè)引腳上(引腳定義普通IO,不復(fù)用SPI硬件)卻可以點(diǎn)亮。
b.使用外部晶振和OLED屏普通引腳可以點(diǎn)亮,你可以隨便選。
為什么會(huì)這樣,這要回到單片機(jī)的物理特性了--PIN腳工作頻率。有人會(huì)說,我初始化時(shí)已經(jīng)明確引腳頻率了。可是你可能沒有用示波器真實(shí)測過引腳的頻率,
實(shí)際的頻率遠(yuǎn)比你設(shè)定的要低。
但有一個(gè)明確的規(guī)律,硬件SPI的頻率高于普通引腳的頻率,使用硬件晶振的引腳頻率高于使用內(nèi)部晶振的引腳頻率。所以你就會(huì)明白,OLED為什么點(diǎn)不亮,頻率不匹配。
3.使用SPI引腳(PA15,PB3,PB4,PB5)時(shí)存在以下問題,當(dāng)開啟Serial Wire Debug模式時(shí),如果使用這幾個(gè)SPI引腳(PA15,PB3,PB4,PB5),你會(huì)點(diǎn)不亮OLED屏。查到的資料是說,在開啟Serial Wire Debug模式下,系統(tǒng)默認(rèn)那幾個(gè)引腳是調(diào)試引腳,所以當(dāng)你設(shè)為OLED屏驅(qū)動(dòng)引腳時(shí),是無法點(diǎn)亮屏幕的。
你可以在引腳初始化函數(shù)里加上下面這兩行代碼,打開這幾個(gè)腳,就可以點(diǎn)亮了。
GPIO_InitTypeDef GPIO_InitStructure;
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO,ENABLE);//打開時(shí)鐘
GPIO_PinRemapConfig(GPIO_Remap_SWJ_JTAGDisable,ENABLE);//禁用調(diào)試功能
看到這個(gè),你會(huì)發(fā)現(xiàn),禁用了調(diào)試功能。沒錯(cuò),結(jié)果就是,屏幕亮了,卻不能Debug和燒錄程序了。 怎么辦,長按reset鍵,再次燒錄,程序會(huì)刪除芯片中內(nèi)容,并報(bào)錯(cuò)。不要管錯(cuò)誤,再次識別,發(fā)現(xiàn)芯片可以寫了。記著把剛才兩句刪掉。
這幾個(gè)腳不是不能用,只是調(diào)試的時(shí)候慎用。
下面再聊一下軟件。
4.看下面代碼
int main(void)
{
delay_init();
OLED_Init();
while(1)
{
OLED_ShowString(0,48,"ASCII:",16);
OLED_ShowString(63,48,"CODE:",16);
}
}
該有的好像都有了,驅(qū)動(dòng)也是原廠的,可就是點(diǎn)不亮屏幕。
這個(gè)版本的驅(qū)動(dòng)程序有一條指令:OLED_Refresh(),刷新屏幕。這個(gè)版本的邏輯是,上面的指令只是把內(nèi)容寫進(jìn)了顯存。你還需要下指令讓它更新屏幕。
5.對于某些實(shí)例,7腳的SPI接口只定義4個(gè)引腳接口。新手會(huì)越看越糊涂。
其實(shí)很好理解,7腳的SPI接口OLED屏最后一個(gè)引腳CS是片選引腳,也就是控制OLED屏是否可以使用。低電平有效,如果你對屏幕沒有特殊需求,可以把該腳直接接地?梢怨(jié)省一個(gè)IO口。
寫到這里,也就到結(jié)尾了。使用中總會(huì)碰到一些特殊的情況,特別記錄下來,供大家參考。如有不同意見,歡迎提出,共同學(xué)習(xí)。
|
評分
-
查看全部評分
|