SPI 协议学习
1. SPI硬件知識
1.1 硬件連線
引腳含義如下:
| DO(MOSI) | Master Output, Slave Input, SPI主控用來發出數據,SPI從設備用來接收數據 |
| DI(MISO) | Master Input, Slave Output, SPI主控用來發出數據,SPI從設備用來接收數據 |
| SCK | Serial Clock,時鐘 |
| CS | Chip Select,芯片選擇引腳 |
1.2 SPI控制器內部結構
這個圖等我們看完后面的SPI協議,再回過頭來講解:
2. SPI協議
2.1 傳輸示例
假設現在主控芯片要傳輸一個0x56數據給SPI Flash,時序如下:
首先CS0先拉低選中SPI Flash,0x56的二進制就是0b0101 0110,因此在每個SCK時鐘周期,DO輸出對應的電平。
SPI Flash會在每個時鐘周期的上升沿讀取D0上的電平。
2.2 SPI模式
在SPI協議中,有兩個值來確定SPI的模式。
CPOL:表示SPICLK的初始電平,0為電平,1為高電平
CPHA:表示相位,即第一個還是第二個時鐘沿采樣數據,0為第一個時鐘沿,1為第二個時鐘沿
| 0 | 0 | 0 | SPICLK初始電平為低電平,在第一個時鐘沿采樣數據 |
| 0 | 1 | 1 | SPICLK初始電平為低電平,在第二個時鐘沿采樣數據 |
| 1 | 0 | 2 | SPICLK初始電平為高電平,在第一個時鐘沿采樣數據 |
| 1 | 1 | 3 | SPICLK初始電平為高電平,在第二個時鐘沿采樣數據 |
| 我們常用的是模式0和模式3,因為它們都是在上升沿采樣數據,不用去在乎時鐘的初始電平是什么,只要在上升沿采集數據就行。 |
極性選什么?格式選什么?通常去參考外接的模塊的芯片手冊。比如對于OLED,查看它的芯片手冊時序部分:
SCLK的初始電平我們并不需要關心,只要保證在上升沿采樣數據就行
總結
- 上一篇: 【养成好习惯】使用pipreqs导出本项
- 下一篇: 算法竞赛入门经典——1