欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: OLED屏點(diǎn)亮總結(jié)-重要補(bǔ)充 [打印本頁(yè)]

作者: dzllz    時(shí)間: 2022-2-15 23:47
標(biāo)題: OLED屏點(diǎn)亮總結(jié)-重要補(bǔ)充
     本來(lái)這是一篇內(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來(lái)講。這款芯片有2個(gè)硬件SPI接口,你會(huì)發(fā)現(xiàn)廠家的OLED屏驅(qū)動(dòng)引腳落在其中一組SPI引腳上(PA5,PA7),也僅有這兩個(gè)引腳可以復(fù)用SPI,其他的是普通引腳。所以說(shuō)廠家的驅(qū)動(dòng)程序是軟件模擬SPI接口,知道了這一點(diǎn),我們可以做很多事情,也可以避免很多坑。
     不要設(shè)定硬件SPI,特別是使用STM32CubeMX設(shè)定硬件環(huán)境的。如果設(shè)了,你可能會(huì)點(diǎn)不亮屏,還不知什么原因
    2.有人就會(huì)說(shuō),那是不是我就可以隨便選擇引腳了呢。請(qǐng)看下面這個(gè)坑。
      芯片STM32F103T8,這個(gè)芯片QFN封裝,36個(gè)引腳。
      a.使用內(nèi)部晶振和OLED屏。使用普通引腳無(wú)法點(diǎn)亮,但把引腳設(shè)在SPI這幾個(gè)引腳上(引腳定義普通IO,不復(fù)用SPI硬件)卻可以點(diǎn)亮。
      b.使用外部晶振和OLED屏普通引腳可以點(diǎn)亮,你可以隨便選。
      為什么會(huì)這樣,這要回到單片機(jī)的物理特性了--PIN腳工作頻率。有人會(huì)說(shuō),我初始化時(shí)已經(jīng)明確引腳頻率了。可是你可能沒有用示波器真實(shí)測(cè)過引腳的頻率,
實(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屏。查到的資料是說(shuō),在開啟Serial Wire Debug模式下系統(tǒng)默認(rèn)那幾個(gè)引腳是調(diào)試引腳,所以當(dāng)你設(shè)為OLED屏驅(qū)動(dòng)引腳時(shí),是無(wú)法點(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和燒錄程序了。怎么辦,長(zhǎng)按reset鍵,再次燒錄,程序會(huì)刪除芯片中內(nèi)容,并報(bào)錯(cuò)。不要管錯(cuò)誤,再次識(shí)別,發(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.對(duì)于某些實(shí)例,7腳的SPI接口只定義4個(gè)引腳接口。新手會(huì)越看越糊涂。
    其實(shí)很好理解,7腳的SPI接口OLED屏最后一個(gè)引腳CS是片選引腳,也就是控制OLED屏是否可以使用。低電平有效,如果你對(duì)屏幕沒有特殊需求,可以把該腳直接接地。可以節(jié)省一個(gè)IO口。


    寫到這里,也就到結(jié)尾了。使用中總會(huì)碰到一些特殊的情況,特別記錄下來(lái),供大家參考。如有不同意見,歡迎提出,共同學(xué)習(xí)。

作者: hujj    時(shí)間: 2022-2-16 09:54
問題1很可能是SPI的模式?jīng)]有選擇正確造成的;
問題2是SPI的速率沒有選擇正確造成的。
作者: lxllsb    時(shí)間: 2022-2-16 13:50
hujj 發(fā)表于 2022-2-16 09:54
問題1很可能是SPI的模式?jīng)]有選擇正確造成的;
問題2是SPI的速率沒有選擇正確造成的。






歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1