概述
在芯片的資料上,有兩個非常特殊的寄存器配置位,分別是 CPOL (Clock POlarity)和 CPHA (Clock PHAse)。
CPOL配置SPI總線的極性
CPHA配置SPI總線的相位
極性和相位,這么專業的名詞,非常難理解。我們不妨從時序圖入手,了解極性和相位的效果。
SPI總線的極性
極性,會直接影響SPI總線空閑時的時鍾信號是高電平還是低電平。
CPOL = 1:表示空閑時是高電平
CPOL = 0:表示空閑時是低電平
由於數據傳輸往往是從跳變沿開始的,也就表示開始傳輸數據的時候,是下降沿還是上升沿。
如下圖:
SPI總線的相位
一個時鍾周期會有2個跳變沿。而相位,直接決定SPI總線從那個跳變沿開始采樣數據。
CPHA = 0:表示從第一個跳變沿開始采樣
CPHA = 1:表示從第二個跳變沿開始采樣
不多說,直接上圖:
至於跳變沿究竟是上升沿還是下降沿,這取決於 CPOL。記住, CPHA 只決定是哪個跳變沿采樣。
4種模式
CPOL 和 CPHA 的不同組合,形成了SPI總線的不同模式。
mode | CPOL | CPHA |
---|---|---|
mode 0 | 0 | 0 |
mode 1 | 0 | 1 |
mode 2 | 1 | 0 |
mode 3 | 1 | 1 |
模式0 (CPOL=0; CPHA=0)
特性:
CPOL = 0:空閑時是低電平,第1個跳變沿是上升沿,第2個跳變沿是下降沿
CPHA = 0:數據在第1個跳變沿(上升沿)采樣
效果圖:
模式1 (CPOL=0; CPHA=1)
特性:
CPOL = 0:空閑時是低電平,第1個跳變沿是上升沿,第2個跳變沿是下降沿
CPHA = 1:數據在第2個跳變沿(下降沿)采樣
效果圖:
模式2 (CPOL=1; CPHA=0)
特性:
CPOL = 1:空閑時是高電平,第1個跳變沿是下降沿,第2個跳變沿是上升沿
CPHA = 0:數據在第1個跳變沿(下降沿)采樣
效果圖:
模式3 (CPOL=1; CPHA=1)
特性:
CPOL = 1:空閑時是高電平,第1個跳變沿是下降沿,第2個跳變沿是上升沿
CPHA = 1:數據在第2個跳變沿(上升沿)采樣
效果圖: