SPI协议的通信原理
零. 聲明
本專欄文章我們會(huì)以連載的方式持續(xù)更新,本專欄計(jì)劃更新內(nèi)容如下:
第一篇:ESP-IDF基本介紹,主要會(huì)涉及模組,芯片,開(kāi)發(fā)板的介紹,環(huán)境搭建,程序編譯下載,啟動(dòng)流程等一些基本的操作,讓你對(duì)ESP-IDF開(kāi)發(fā)有一個(gè)總體的認(rèn)識(shí),比我們后續(xù)學(xué)習(xí)打下基礎(chǔ)!
第二篇:ESP32-IDF外設(shè)驅(qū)動(dòng)介紹,主要會(huì)根據(jù)esp-idf現(xiàn)有的driver,提供各個(gè)外設(shè)的驅(qū)動(dòng),比如LED,OLED,SPI LCD,TOUCH,紅外,Codec ic等等,在這一篇中,我們不僅僅來(lái)做外設(shè)驅(qū)動(dòng),還會(huì)對(duì)常用的外設(shè)總線做一個(gè)介紹,讓大家知其然又知其所以然!
第三篇:目前比較火熱的GUI LVGL介紹,主要會(huì)設(shè)計(jì)LVGL7.1,LVGL8的移植介紹,并且也會(huì)介紹各個(gè)組件,知道原理后,最后,我們會(huì)推出一款組態(tài)軟件來(lái)構(gòu)建我們的GUI,來(lái)提升我們的效率!
第四篇:ESP32-藍(lán)牙,熟悉我的,應(yīng)該都知道,我即使從事藍(lán)牙協(xié)議棧的開(kāi)發(fā)的,所以這個(gè)是我們獨(dú)有的優(yōu)勢(shì),在這一篇章,我們會(huì)提供不僅僅是藍(lán)牙應(yīng)用方法的知識(shí),也會(huì)應(yīng)用結(jié)合藍(lán)牙底層協(xié)議棧的理論,讓你徹底從上到下打通藍(lán)牙任督二脈!
第五篇:Wi-Fi介紹,熟悉我的,應(yīng)該也知道,我們也做過(guò)一款sdio wifi的驅(qū)動(dòng)教程板子,所以在wifi這方面我們也是有獨(dú)有的優(yōu)勢(shì),在這一篇章,我們同樣不僅僅提供Wi-Fi應(yīng)用方面的知識(shí),也會(huì)結(jié)合底層理論,讓你對(duì)Wi-Fi有一個(gè)清晰的認(rèn)知!
另外,我們的教程包括但是不局限于以上篇章,為了給你一個(gè)更好的導(dǎo)航,以下信息尤其重要,請(qǐng)?jiān)敿?xì)查看!!
------------------------------------------------------------------------------------------------------------------------------------------
購(gòu)買(mǎi)開(kāi)發(fā)板(點(diǎn)擊我)
文檔目錄(點(diǎn)擊我)
Github代碼倉(cāng)庫(kù)(點(diǎn)擊我)
藍(lán)牙交流扣扣群:539357317
微信公眾號(hào)↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
????
------------------------------------------------------------------------------------------------------------------------------------------
一.概念
SPI 協(xié)議是由摩托羅拉公司提出的通訊協(xié)議 (Serial Peripheral Interface),即串行外圍設(shè)備接口,是一種高速全雙工的通信總線。它被廣泛地使用在 ADC、LCD 等設(shè)備與 MCU 間,要求通訊速率較高的場(chǎng)合。
二.SPI 物理層
SPI 通訊設(shè)備之間的常用連接方式見(jiàn)圖:
SPI 通訊使用 3 條總線及片選線,3 條總線分別為 SCK、MOSI、MISO,片選線為 SS(也叫做CS),它們的作
用介紹如下:
(1) ( Slave Select):從設(shè)備選擇信號(hào)線,常稱為片選信號(hào)線,也稱為 NSS、CS,以下用 NSS 表示。當(dāng)有多個(gè) SPI 從設(shè)備與 SPI 主機(jī)相連時(shí),設(shè)備的其它信號(hào)線 SCK、MOSI 及 MISO 同時(shí)并聯(lián)到相同的 SPI 總線上,即無(wú)論有多少個(gè)從設(shè)備,都共同只使用這 3 條總線;而每個(gè)從設(shè)備都有獨(dú)立的這一條 NSS 信號(hào)線,本信號(hào)線獨(dú)占主機(jī)的一個(gè)引腳,即有多少個(gè)從設(shè)備,就有多少條片選信號(hào)線。I2C 協(xié)議中通過(guò)設(shè)備地址來(lái)尋址、選中總線上的某個(gè)設(shè)備并與其進(jìn)行通訊;而 SPI 協(xié)議中沒(méi)有設(shè)備地址,它使用 NSS 信號(hào)線來(lái)尋址,當(dāng)主機(jī)要選擇從設(shè)備時(shí),
把該從設(shè)備的 NSS 信號(hào)線設(shè)置為低電平,該從設(shè)備即被選中,即片選有效,接著主機(jī)開(kāi)始與被選中的從設(shè)備進(jìn)行 SPI 通訊。所以 SPI 通訊以 NSS 線置低電平為開(kāi)始信號(hào),以 NSS 線被拉高作為結(jié)束信號(hào)。
(2) SCK (Serial Clock):時(shí)鐘信號(hào)線,用于通訊數(shù)據(jù)同步。它由通訊主機(jī)產(chǎn)生,決定了通訊的速率,不同的設(shè)備支持的最高時(shí)鐘頻率不一樣,兩個(gè)設(shè)備之間通訊時(shí),通訊速率受限于低速設(shè)備。
(3) MOSI (Master Output, Slave Input):主設(shè)備輸出/從設(shè)備輸入引腳。主機(jī)的數(shù)據(jù)從這條信號(hào)線輸出,從機(jī)由這條信號(hào)線讀入主機(jī)發(fā)送的數(shù)據(jù),即這條線上數(shù)據(jù)的方向?yàn)橹鳈C(jī)到從機(jī)。
(4) MISO(Master Input,, Slave Output):主設(shè)備輸入/從設(shè)備輸出引腳。主機(jī)從這條信號(hào)線讀入數(shù)據(jù),從機(jī)的數(shù)據(jù)由這條信號(hào)線輸出到主機(jī),即在這條線上數(shù)據(jù)的方向?yàn)閺臋C(jī)到主機(jī)。
三.SPI時(shí)序圖
我們來(lái)看下SPI的時(shí)序圖,一共有4種模式,也就是根據(jù)“時(shí)鐘極性CPOL”和“時(shí)鐘相位 CPHA”不同組合搭配而來(lái)。
為了方便說(shuō)明,我們先來(lái)介紹下CPOL跟CPHA
時(shí)鐘極性 CPOL 是指 SPI 通訊設(shè)備處于空閑狀態(tài)時(shí),SCK 信號(hào)線的電平信號(hào) (即 SPI 通訊開(kāi)始前、NSS 線為高電平時(shí) SCK 的狀態(tài))。CPOL=0 時(shí),SCK 在空閑狀態(tài)時(shí)為低電平.
CPOL=1 時(shí),SCK 在空閑狀態(tài)時(shí)為高電平.
時(shí)鐘相位 CPHA 是指數(shù)據(jù)的采樣的時(shí)刻,
當(dāng) CPHA=0 時(shí),MOSI 或 MISO 數(shù)據(jù)線上的信號(hào)將會(huì)在SCK 時(shí)鐘線的“奇數(shù)邊沿”被采樣。
當(dāng) CPHA=1 時(shí),MOSI 或 MISO 數(shù)據(jù)線上的信號(hào)將會(huì)在SCK 時(shí)鐘線的“偶數(shù)邊沿”被采樣。
介紹完畢這些,我們來(lái)介紹下具體的時(shí)序圖:
1.CPHA=0
我們來(lái)分析這個(gè) CPHA=0 的時(shí)序圖。首先,根據(jù) SCK 在空閑狀態(tài)時(shí)的電平,分為兩種情況。
SCK信號(hào)線在空閑狀態(tài)為低電平時(shí),CPOL=0;
SCK信號(hào)線在空閑狀態(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ù)線的有效信號(hào)在 SCK 的奇數(shù)邊沿保持不變,數(shù)據(jù)信號(hào)將在 SCK 奇數(shù)邊沿時(shí)被采樣,在非采樣時(shí)刻,MOSI 和 MISO 的有效信號(hào)才發(fā)生切換。
2.CPHA=1
我們來(lái)分析這個(gè) CPHA=1 的時(shí)序圖。首先,根據(jù) SCK 在空閑狀態(tài)時(shí)的電平,分為兩種情況。
SCK信號(hào)線在空閑狀態(tài)為低電平時(shí),CPOL=0;
SCK信號(hào)線在空閑狀態(tài)為高電平時(shí),CPOL=1。
無(wú)論 CPOL=0 還是 =1,因?yàn)槲覀兣渲玫臅r(shí)鐘相位 CPHA=1,在圖中可以看到,采樣時(shí)刻都是在SCK 的偶數(shù)邊沿。注意當(dāng) CPOL=0 的時(shí)候,時(shí)鐘的奇數(shù)邊沿是上升沿,而 CPOL=1 的時(shí)候,時(shí)鐘的奇數(shù)邊沿是下降沿。所以 SPI 的采樣時(shí)刻不是由上升/下降沿決定的。MOSI 和 MISO 數(shù)據(jù)線的有效信號(hào)在 SCK 的奇數(shù)邊沿保持不變,數(shù)據(jù)信號(hào)將在 SCK 奇數(shù)邊沿時(shí)被采樣,在非采樣時(shí)刻,MOSI 和 MISO 的有效信號(hào)才發(fā)生切換。
總結(jié)下模式:
參考文檔:
1.野火 STM32 HAL庫(kù)開(kāi)發(fā)指南
2.SPI協(xié)議
總結(jié)
以上是生活随笔為你收集整理的SPI协议的通信原理的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 06_JS对象
- 下一篇: sudo apt-get nmap 报错