SPI協議和OLED

一個芯片下面可以接很多個SPI設備,比如說SPI FLASH,SPI OLED,它們直接通過三條先來傳輸數據。第一條線是時鐘線,然後是DO線,就是date output就是芯片給外設發數據

然後讀數據的話就是DI, 芯片上有很多個SPI設備,但是我們怎麼區分要訪問哪一個設備呢,所以就會有一個CS0,片選引腳。在硬件上,都是通過SCK,DI,DO來傳輸數據,都是通過CS來片選。那數據是怎麼傳的呢,我們可以看看數據格式,

看這裏,在第一個時鐘週期裏面傳輸一位,在第二個時鐘中期裏面傳輸第二位,先傳輸最高位,bit0是最後傳輸的。讀的時候也是一樣的,每發一個時鐘讀一位。

先講一個簡單的例子,我想把0x56發出去,怎麼發呢,56的二進制是0b01010110,我想把這8位數據發送出去,我先發送給SPI flash,首先讓片選引腳變成有效,CS0編程低電平,在整個傳輸過程中要保持低電平,然後我們SPICLK就發出一個脈衝,在這個脈衝期間,我先傳輸最高位,所以在MOSI的第一個脈衝就要保持低電平,然後SPI FLASH會在時鐘的上升沿會把這個MOSI上的引腳讀進去,以此類推。

在我們210上給出了4種SPI的圖形,這四種圖形的差別在哪裏呢,我們先來看看前面兩種


第一種是Format A,第二種是Format B,他們的差別在於MISO這條線上數據格式有點不一樣,當我這個SPI設備提供完8位數據給我們的芯片的時候,在下一個時鐘週期沒到來之前,這SPI設備是把什麼數據放到這個線上,FORMAT A放的是上一次接收的這一字節裏面的最高位。FROMAT B是放得下一個字節的最低位。

  \

然後在看看這個,CPOL是極性的意思,CPHA是相位的意思。極性就是在沒有開始傳輸數據之前,你這個SPICLK是什麼電平,如上圖,有的是高,有的是低。

但是你這裏要注意看是上升沿還是下降沿獲取數據。上圖就是CPOL CPHA就是下降沿獲取數據。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章