SPI通信方式總結

SPI 通信方式總結

在SPI通信中,通信管腳的配置是一部分,而對於通信的配置則顯得跟重要,因爲這個配置錯誤的話,會導致接收的數據是錯位的,並且這個跟從設備相關。
下面已STM8L的SPI爲例:
SPI初始化的函數原型是:

void SPI_Init(SPI_TypeDef* SPIx, SPI_FirstBit_TypeDef SPI_FirstBit,
              SPI_BaudRatePrescaler_TypeDef SPI_BaudRatePrescaler,
              SPI_Mode_TypeDef SPI_Mode, SPI_CPOL_TypeDef SPI_CPOL,
              SPI_CPHA_TypeDef SPI_CPHA, SPI_DirectionMode_TypeDef SPI_Data_Direction,
              SPI_NSS_TypeDef SPI_Slave_Management, uint8_t CRCPolynomial)
{
}

其中我們重點關注SPI_CPHASPI_CPOL,這兩個參數代表了時鐘的相位即時鐘的極性。
在手冊中,對這兩個參數不同的組合,列出不同的通信時序圖:
CPHA1
CPHA0
CPOL表示時鐘在空閒狀態的極性是高電平還是低電平,而CPHA則表示數據是在什麼時刻被採樣的,
具體有下面四種類型分別對應上面的時序圖。

Mode CPOL CPHA
0 0 0
1 0 1
2 1 0
3 1 1

最近調試W25Q16 Flash時,使用不對的配置,發現接收回來的數據不對,之後查了下W25Q16的數據手冊,返現其中W25Q16的SPI總線模式是Mode0 或Mode3 ,這個在手冊中或本文中下面的時序圖中可以看出,那麼就要將CPOLCPHA都配置爲0或1。

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