續(xù)接上文串行外設(shè)接口SPI通信協(xié)議詳解,本文小編詳細(xì)的 介紹了SPI總線接口定義和數(shù)據(jù)傳輸、通信流程等等,詳細(xì)技術(shù)請(qǐng)看下文內(nèi)容:
SPI總線是一種高速的、全雙工的、同步的通信總線,并且至多僅需使用4根線,節(jié)約了芯片的管腳,SPI通信協(xié)議主要應(yīng)用于EEPROM、FLASH、ADC、DAC等射頻芯片,還有數(shù)字信號(hào)處理器和數(shù)字信號(hào)解碼器之間。
SPI接口無線模塊設(shè)備之間采用全雙工模式通信,是一個(gè)主機(jī)和一個(gè)或者多個(gè)從機(jī)的主從模式。主機(jī)負(fù)責(zé)初始化幀,這個(gè)數(shù)據(jù)傳輸幀可以用于讀與寫兩種操作,片選線可以從多個(gè)從機(jī)選擇一個(gè)來響應(yīng)主機(jī)的請(qǐng)求。
SPI接口定義如下表:
由上表也可以看出當(dāng)SPI設(shè)備間數(shù)據(jù)傳輸通信時(shí),數(shù)據(jù)線應(yīng)該是MOSI連接MOSI,MISO連接MISO,SCLK與SCLK相連,而不是像串口那樣TX、RX進(jìn)行反接。當(dāng)只有單一SPI無線模塊從機(jī)設(shè)備時(shí),如果從機(jī)設(shè)備允許的話,可直接將CS/SS線固定在低電平。然而類似于MAX1242這款需要CS/SS線的下降沿來觸發(fā)的射頻芯片,則必須將CC/SS線與主機(jī)相連。如下圖,為一主一從連接方式。
對(duì)于多個(gè)從機(jī)設(shè)備時(shí),則每個(gè)從機(jī)都需要一根CS/SS線來于主機(jī)相連,從而達(dá)到主機(jī)能與任一從機(jī)通信的目的。如下圖,為一主多從的連接方式。
大多數(shù)從機(jī)設(shè)備都有著三態(tài)邏輯的特性,因此當(dāng)設(shè)備未被選中時(shí),它們的MISO信號(hào)線會(huì)變成高阻抗?fàn)顟B(tài)(電氣斷開)。沒有三態(tài)輸出的設(shè)備則需外接三態(tài)緩沖器才能與其他的從機(jī)設(shè)備共享SPI總線。
在SPI通信中,SPI主機(jī)設(shè)備以從機(jī)設(shè)備支持的頻率通過SCLK線給到SPI從機(jī)設(shè)備,這點(diǎn)也意味著從機(jī)是無法主動(dòng)向主機(jī)發(fā)送數(shù)據(jù)的,只能主機(jī)輪詢向從機(jī)發(fā)或者從機(jī)設(shè)備主動(dòng)通過一個(gè)IO口來告知主機(jī)數(shù)據(jù)到達(dá)。
在SPI每個(gè)時(shí)鐘周期內(nèi),都會(huì)進(jìn)行一次全雙工數(shù)據(jù)的傳輸。主機(jī)通過MOSI線上發(fā)送1bit時(shí),從機(jī)也會(huì)在讀取到之后通過MISO線發(fā)送1bit數(shù)據(jù)出去。這說明,即使只進(jìn)行單工通信,也會(huì)保持此通信順序。
SPI傳輸通常涉及到兩個(gè)給定了字長(zhǎng)的移位寄存器。例如在主機(jī)、從機(jī)中的8bit的移位寄存器。它們以虛擬環(huán)形拓?fù)溥B接,數(shù)據(jù)通常先從最高有效位被移出。在時(shí)鐘沿,主機(jī)和從機(jī)都移出1bit數(shù)據(jù)從傳輸線上給到對(duì)方。在下一個(gè)時(shí)鐘邊沿來到時(shí),雙方的接收器再對(duì)傳輸線上的該bit進(jìn)行采樣,并將其設(shè)置為移位寄存器的新的最低有效位。在寄存器位被移出和移入后,主機(jī)和從機(jī)交換了寄存器值。如果需要交換更多數(shù)據(jù),則重新加載移位寄存器并重復(fù)該過程。傳輸可以持續(xù)任意數(shù)量的時(shí)鐘周期。完成后,主機(jī)停止切換時(shí)鐘信號(hào)。如下圖,為主從機(jī)之間的交互時(shí)的移位寄存器示意圖。
其中上圖的通信流程如下:
1.SPI主機(jī)首先先將SS或CS線拉低,以此來告知SPI從機(jī)通信開始。
2.主機(jī)通過發(fā)送SCLK時(shí)鐘信號(hào),來告知從機(jī)即將進(jìn)行的讀寫操作。這里的SCLK時(shí)鐘信號(hào)是由SPI的模式來決定是高電平還是低電平有效的,這點(diǎn)在稍后會(huì)進(jìn)行介紹。
3.主機(jī)(Master)將要發(fā)送的數(shù)據(jù)寫到發(fā)送數(shù)據(jù)緩存區(qū)(Memory),緩存區(qū)經(jīng)過移位寄存器(0~7),串行移位寄存器通過MOSI信號(hào)線將字節(jié)一位一位地移出去傳送給從機(jī),同時(shí)MISO接口接收到的數(shù)據(jù)經(jīng)過移位寄存器一位一位地移到接收緩存區(qū)。
4.從機(jī)(Slave)也將自己的串行移位寄存器(0~7)中的內(nèi)容通過MISO信號(hào)線返回給主機(jī)。同時(shí)通過MOSI信號(hào)線接收主機(jī)發(fā)送的數(shù)據(jù),這樣,兩個(gè)移位寄存器中的內(nèi)容就被交換。
查看技術(shù)文章和免費(fèi)咨詢技術(shù)問題可以訪問成都億佰特電子科技有限公司官網(wǎng)及各官方平臺(tái):
微信號(hào):cdebyte
今日頭條:億佰特
新浪微博:成都億佰特
7 X 24 銷售服務(wù)熱線
4000-330-990深圳辦事處柯經(jīng)理:18218726658 杭州辦事處戴經(jīng)理:17512568697
常州辦事處崔經(jīng)理:15906110783 南京辦事處葛經(jīng)理:17626012283
業(yè)務(wù)郵箱:support@cdebyte.com
全國(guó)銷售投訴電話:19934352316
地址:四川省成都市高新西區(qū)西區(qū)大道199號(hào)B5棟(前臺(tái)座機(jī):028-61543675)
?? 成都億佰特電子科技有限公司【版權(quán)所有】 蜀ICP備13019384號(hào)-3