SPI總線之CPOL CPHA
最近在看關(guān)于Silicon Labs的C8051F347的某個(gè)驅(qū)動(dòng)中,關(guān)于SPI部分初始化的代碼,看到其對(duì)于SPI的設(shè)置為CPOL=1,CPHA=0,對(duì)于CPOL及CPHA的含義不了解,想要搞懂,這兩個(gè)參數(shù)到底是什么意思,以及為何要這么設(shè)置。所以才去找了SPI的極性和相位的相關(guān)資料,整理如下。
本文引用地址:http://www.ex-cimer.com/article/201612/330521.htm【SPI基礎(chǔ)知識(shí)簡(jiǎn)介】
設(shè)備與設(shè)備之間通過某種硬件接口通訊,目前存在很多種接口,SPI接口是其中的一種。
SPI中分Master主設(shè)備和Slave從設(shè)備,數(shù)據(jù)發(fā)送都是由Master控制。
一個(gè)master可以接一個(gè)或多個(gè)slave。
常見用法是一個(gè)Master接一個(gè)slave,只需要4根線:
SCLK:Serial Clock,(串行)時(shí)鐘
MISO:Master In Slave Out,主設(shè)備輸入,從設(shè)備輸出
MOSI:Master Out
SS:
SPI由于接口相對(duì)簡(jiǎn)單(只需要4根線),用途算是比較廣泛,主要應(yīng)用在 EEPROM,F(xiàn)LASH,實(shí)時(shí)時(shí)鐘,AD轉(zhuǎn)換器,還有數(shù)字信號(hào)處理器和數(shù)字信號(hào)解碼器之間。
即一個(gè)SPI的Master通過SPI與一個(gè)從設(shè)備,即上述的那些Flash,ADC等,進(jìn)行通訊。
而主從設(shè)備之間通過SPI進(jìn)行通訊,首先要保證兩者之間時(shí)鐘SCLK要一致,互相要商量好了,要匹配,否則,就沒法正常通訊了,即保證時(shí)序上的一致才可正常訊。
而這里的SPI中的時(shí)鐘和相位,指的就是SCLk時(shí)鐘的特性,即保證主從設(shè)備兩者的時(shí)鐘的特性一致了,以保證兩者可以正常實(shí)現(xiàn)SPI通訊。
【SPI相關(guān)的縮寫或說法】
先簡(jiǎn)單說一下,關(guān)于SPI中一些常見的說法:
SPI的極性Polarity和相位Phase,最常見的寫法是CPOL和CPHA,不過也有一些其他寫法,簡(jiǎn)單總結(jié)如下:
(1) CKPOL (Clock Polarity) = CPOL = POL = Polarity = (時(shí)鐘)極性
(2) CKPHA (Clock Phase)
(3) SCK=SCLK=SPI的時(shí)鐘
(4) Edge=邊沿,即時(shí)鐘電平變化的時(shí)刻,即上升沿(rising edge)或者下降沿(falling edge)
對(duì)于一個(gè)時(shí)鐘周期內(nèi),有兩個(gè)edge,分別稱為:
Leading edge=前一個(gè)邊沿=第一個(gè)邊沿,對(duì)于開始電壓是1,那么就是1變成0的時(shí)候,對(duì)于開始電壓是0,那么就是0變成1的時(shí)候;
Trailing edge=后一個(gè)邊沿=第二個(gè)邊沿,對(duì)于開始電壓是1,那么就是0變成1的時(shí)候(即在第一次1變成0之后,才可能有后面的0變成1),對(duì)于開始電壓是0,那么就是1變成0的時(shí)候;
本文采用如下用法:
極性=CPOL
相位=CPHA
SCLK=時(shí)鐘
第一個(gè)邊沿和第二個(gè)邊沿
【SPI的相位和極性】
CPOL和CPHA,分別都可以是0或時(shí)1,對(duì)應(yīng)的四種組合就是:
Mode 0 | CPOL=0, CPHA=0 |
Mode 1 | CPOL=0, CPHA=1 |
Mode 2 | CPOL=1, CPHA=0 |
Mode 3 | CPOL=1, CPHA=1 |
單獨(dú)看這張圖,的確很難明白具體含義,所以下面會(huì)有更詳細(xì)的解釋。
【 CPOL極性】
先說什么是SCLK時(shí)鐘的空閑時(shí)刻,其就是當(dāng)SCLK在數(shù)發(fā)送8個(gè)bit比特?cái)?shù)據(jù)之前和之后的狀態(tài),于此對(duì)應(yīng)的,SCLK在發(fā)送數(shù)據(jù)的時(shí)候,就是正常的工作的時(shí)候,有效active的時(shí)刻了。
先說英文,其精簡(jiǎn)解釋為:Clock Polarity = IDLE state of SCK。
再用中文詳解:
SPI的CPOL,表示當(dāng)SCLK空閑idle的時(shí)候,其電平的值是低電平0還是高電平1:
CPOL=0,時(shí)鐘空閑idle時(shí)候的電平是低電平,所以當(dāng)SCLK有效的時(shí)候,就是高電平,就是所謂的active-high;
CPOL=1,時(shí)鐘空閑idle時(shí)候的電平是高電平,所以當(dāng)SCLK有效的時(shí)候,就是低電平,就是所謂的active-low;
相關(guān)推薦
技術(shù)專區(qū)
- FPGA
- DSP
- MCU
- 示波器
- 步進(jìn)電機(jī)
- Zigbee
- LabVIEW
- Arduino
- RFID
- NFC
- STM32
- Protel
- GPS
- MSP430
- Multisim
- 濾波器
- CAN總線
- 開關(guān)電源
- 單片機(jī)
- PCB
- USB
- ARM
- CPLD
- 連接器
- MEMS
- CMOS
- MIPS
- EMC
- EDA
- ROM
- 陀螺儀
- VHDL
- 比較器
- Verilog
- 穩(wěn)壓電源
- RAM
- AVR
- 傳感器
- 可控硅
- IGBT
- 嵌入式開發(fā)
- 逆變器
- Quartus
- RS-232
- Cyclone
- 電位器
- 電機(jī)控制
- 藍(lán)牙
- PLC
- PWM
- 汽車電子
- 轉(zhuǎn)換器
- 電源管理
- 信號(hào)放大器
評(píng)論