RA芯片的SPI分為簡(jiǎn)單SPI和普通SPI,簡(jiǎn)單SPI就是SCI模塊(Serial Communications Interface)中的SPI模式,它是使用串行總線(xiàn)來(lái)模擬SPI,而我們本章我們所要學(xué)習(xí)的是普通的SPI,是全功能的SPI,它在RA芯片內(nèi)部實(shí)際存在的一個(gè)硬件SPI控制器模塊。
22.1
SPI協(xié)議簡(jiǎn)介
SPI協(xié)議是由摩托羅拉公司提出的通訊協(xié)議(Serial Peripheral Interface),即串行外圍設(shè)備接口,是一種高速全雙工的通信總線(xiàn)。它被廣泛地使用在ADC、LCD等設(shè)備與MCU間,要求通訊速率較高的場(chǎng)合。
在瑞薩RA6M5芯片中,SPI外設(shè)可用作通訊的主機(jī)及從機(jī),數(shù)據(jù)傳輸可達(dá)到最大的50Mbps速率,信號(hào)允許通過(guò)SPI操作(4線(xiàn)方法)或時(shí)鐘同步操作(3-線(xiàn)方法),支持事件鏈接功能,并具有數(shù)據(jù)校驗(yàn)功能。
下面我們分別對(duì)SPI協(xié)議的物理層及協(xié)議層進(jìn)行講解。
22.1.1
SPI物理層
SPI通訊設(shè)備之間的常用連接方式見(jiàn)下圖。

SPI通訊使用3條總線(xiàn)及片選線(xiàn),3條總線(xiàn)分別為SCK、MOSI、MISO,片選線(xiàn),它們的作用介紹如下:
(1)從設(shè)備選擇信號(hào)線(xiàn)(SlaveSelect):常稱(chēng)為片選信號(hào)線(xiàn),也稱(chēng)為NSS、CS,以下用NSS表示。當(dāng)有多個(gè)SPI從設(shè)備與SPI主機(jī)相連時(shí),設(shè)備的其它信號(hào)線(xiàn)SCK、MOSI及MISO同時(shí)并聯(lián)到相同的SPI總線(xiàn)上,當(dāng)主機(jī)要選擇從設(shè)備時(shí),把該從設(shè)備的NSS信號(hào)線(xiàn)設(shè)置為低電平,該從設(shè)備即被選中,即片選有效,接著主機(jī)開(kāi)始與被選中的從設(shè)備進(jìn)行SPI通訊。所以SPI通訊以NSS線(xiàn)置低電平為開(kāi)始信號(hào),以NSS線(xiàn)被拉高作為結(jié)束信號(hào)。
(2)SCK(Serial Clock):時(shí)鐘信號(hào)線(xiàn),用于通訊數(shù)據(jù)同步。它由通訊主機(jī)產(chǎn)生,決定了通訊的速率,不同的設(shè)備支持的最高時(shí)鐘頻率不一樣,如RA6M5的SPI時(shí)鐘頻率最大為fpclkA/2,兩個(gè)設(shè)備之間通訊時(shí),通訊速率受限于低速設(shè)備。
(3)MOSI(Master Output,Slave Input):主設(shè)備輸出/從設(shè)備輸入引腳。主機(jī)的數(shù)據(jù)從這條信號(hào)線(xiàn)輸出,從機(jī)由這條信號(hào)線(xiàn)讀入主機(jī)發(fā)送的數(shù)據(jù),即這條線(xiàn)上數(shù)據(jù)的方向?yàn)橹鳈C(jī)到從機(jī)。
(4)MISO(Master Input,,Slave Output):主設(shè)備輸入/從設(shè)備輸出引腳。主機(jī)從這條信線(xiàn)讀入數(shù)據(jù),從機(jī)的數(shù)據(jù)由這條信號(hào)線(xiàn)輸出到主機(jī),即在這條線(xiàn)上數(shù)據(jù)的方向?yàn)閺臋C(jī)到主機(jī)。
22.1.2
協(xié)議層
22.1.2.1
SPI基本通訊過(guò)程
SPI通訊的通訊時(shí)序,見(jiàn)下圖:

圖22?18 EEPROM數(shù)據(jù)讀取時(shí)序
這是一個(gè)主機(jī)的通訊時(shí)序。NSS、SCK、MOSI信號(hào)都由主機(jī)控制產(chǎn)生,而MISO的信號(hào)由從機(jī)產(chǎn)生,主機(jī)通過(guò)該信號(hào)線(xiàn)讀取從機(jī)的數(shù)據(jù)。MOSI與MISO的信號(hào)只在NSS為低電平的時(shí)候才有效,在SCK的每個(gè)時(shí)鐘周期MOSI和MISO傳輸一位數(shù)據(jù)。
以上通訊流程中包含的各個(gè)信號(hào)分解如下:
22.1.2.2
通訊的起始和停止信號(hào)
在上圖SPI通訊時(shí)序中的標(biāo)號(hào)1處,NSS信號(hào)線(xiàn)由高變低,是SPI通訊的起始信號(hào)。NSS是每個(gè)從機(jī)各自獨(dú)占的信號(hào)線(xiàn),當(dāng)從機(jī)在自己的NSS線(xiàn)檢測(cè)到起始信號(hào)后,就知道自己被主機(jī)選中了,開(kāi)始準(zhǔn)備與主機(jī)通訊。在標(biāo)號(hào)6處,NSS信號(hào)由低變高,是SPI通訊的停止信號(hào),表示本次通訊結(jié)束,從機(jī)的選中狀態(tài)被取消。
22.1.2.3
數(shù)據(jù)有效性
SPI使用MOSI及MISO信號(hào)線(xiàn)來(lái)傳輸數(shù)據(jù),使用SCK信號(hào)線(xiàn)進(jìn)行數(shù)據(jù)同步。MOSI及MISO數(shù)據(jù)線(xiàn)在SCK的每個(gè)時(shí)鐘周期傳輸一位數(shù)據(jù),且數(shù)據(jù)輸入輸出是同時(shí)進(jìn)行的。數(shù)據(jù)傳輸時(shí),MSB先行或LSB先行并沒(méi)有作硬性規(guī)定,但要保證兩個(gè)SPI通訊設(shè)備之間使用同樣的協(xié)定,一般都會(huì)采用圖SPI通訊時(shí)序中的MSB先行模式。
觀(guān)察圖中的標(biāo)號(hào)處,MOSI及MISO的數(shù)據(jù)在SCK的上升沿期間變化輸出,在SCK的下降沿時(shí)被采樣。即在SCK的下降沿時(shí)刻,MOSI及MISO的數(shù)據(jù)有效,高電平時(shí)表示數(shù)據(jù)“1”,為低電平時(shí)表示數(shù)據(jù)“0”。在其它時(shí)刻,數(shù)據(jù)無(wú)效,MOSI及MISO為下一次表示數(shù)據(jù)做準(zhǔn)備。
SPI每次數(shù)據(jù)傳輸可以8位或16位為單位,每次傳輸?shù)膯挝粩?shù)不受限制。
22.1.2.4
CPOL/CPHA及通訊模式
SPI一共有四種通訊模式,它們的主要區(qū)別是總線(xiàn)空閑時(shí)SCK的時(shí)鐘狀態(tài)以及數(shù)據(jù)采樣時(shí)刻,它們由CPOL與CPHA來(lái)決定。
時(shí)鐘極性CPOL是指SPI通訊設(shè)備處于空閑狀態(tài)時(shí),SCK信號(hào)線(xiàn)的電平信號(hào)(即SPI通訊開(kāi)始前、NSS線(xiàn)為高電平時(shí)SCK的狀態(tài))。CPOL=0時(shí),SCK在空閑狀態(tài)時(shí)為低電平,CPOL=1時(shí),則相反。
時(shí)鐘相位CPHA是指數(shù)據(jù)的采樣的時(shí)刻,當(dāng)CPHA=0時(shí),MOSI或MISO數(shù)據(jù)線(xiàn)上的信號(hào)將會(huì)在SCK時(shí)鐘線(xiàn)的“奇數(shù)邊沿”被采樣。當(dāng)CPHA=1時(shí),數(shù)據(jù)線(xiàn)在SCK的“偶數(shù)邊沿”采樣。
見(jiàn)下圖CPHA=0時(shí)的SPI通訊模式:

我們來(lái)分析這個(gè)CPHA=0的時(shí)序圖。首先,根據(jù)SCK在空閑狀態(tài)時(shí)的電平,分為兩種情況。SCK信號(hào)線(xiàn)在空閑狀態(tài)為低電平時(shí),CPOL=0;空閑狀態(tài)為高電平時(shí),CPOL=1。
無(wú)論CPOL=0還是=1,因?yàn)槲覀兣渲玫臅r(shí)鐘相位CPHA=0,在圖中可以看到,采樣時(shí)刻都是在SCK的奇數(shù)邊沿。注意當(dāng)CPOL=0的時(shí)候,時(shí)鐘的奇數(shù)邊沿是上升沿,而CPOL=1的時(shí)候,時(shí)鐘的奇數(shù)邊沿是下降沿。所以SPI的采樣時(shí)刻不是由上升/下降沿決定的。MOSI和MISO數(shù)據(jù)線(xiàn)的有效信號(hào)在SCK的奇數(shù)邊沿保持不變,數(shù)據(jù)信號(hào)將在SCK奇數(shù)邊沿時(shí)被采樣,在非采樣時(shí)刻,MOSI和MISO的有效信號(hào)才發(fā)生切換。
類(lèi)似地,當(dāng)CPHA=1時(shí),不受CPOL的影響,數(shù)據(jù)信號(hào)在SCK的偶數(shù)邊沿被采樣,見(jiàn)下圖CPHA=1時(shí)的SPI通訊模式:

由CPOL及CPHA的不同狀態(tài),SPI分成了四種模式,見(jiàn)下表:
SPI的四種模式

SPI的四種模式

主機(jī)與從機(jī)需要工作在相同的模式下才可以正常通訊,上圖SPI通訊時(shí)序就是采用的模式1,而我們本次OLED的SPI通訊實(shí)驗(yàn)就是采用的是模式3。
-
瑞薩
+關(guān)注
關(guān)注
37文章
22481瀏覽量
90823 -
SPI
+關(guān)注
關(guān)注
17文章
1885瀏覽量
101182 -
物理層
+關(guān)注
關(guān)注
1文章
170瀏覽量
35647 -
通訊協(xié)議
+關(guān)注
關(guān)注
10文章
298瀏覽量
21476
原文標(biāo)題:SPI物理層及協(xié)議層——瑞薩RA系列FSP庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南(70)
文章出處:【微信號(hào):瑞薩嵌入式小百科,微信公眾號(hào):瑞薩嵌入式小百科】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
瑞薩RA系列FSP庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南之I2C通訊協(xié)議的物理層和協(xié)議層簡(jiǎn)介
瑞薩RA系列FSP庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南之QSPI通訊協(xié)議簡(jiǎn)介
串口通訊協(xié)議簡(jiǎn)介
SPI協(xié)議層及固件庫(kù)
淺析I2C物理層和協(xié)議層
淺析串口通訊協(xié)議的物理層和協(xié)議層
IIC物理層是由哪些部分組成的
從物理層和協(xié)議層兩方面來(lái)了解I2C總線(xiàn)
串口通訊協(xié)議與RS-232標(biāo)準(zhǔn)簡(jiǎn)介
串口通信的物理層與協(xié)議層的相關(guān)資料推薦
《STM32從零開(kāi)始學(xué)習(xí)歷程》——SPI協(xié)議層
瑞薩RA系列FSP庫(kù)開(kāi)發(fā)實(shí)戰(zhàn)指南之SPI通訊協(xié)議的物理層和協(xié)議層簡(jiǎn)介
評(píng)論