SPI全稱是串行外設(shè)接口(Serial Peripheral Interface),,是由Motorola提出的一種全雙工(全雙工指可以同時(shí)(瞬時(shí))進(jìn)行信號(hào)的雙向傳輸(A→B且B→A))同步串行通信接口,通信波特率可以高達(dá)5Mbps,,但具體速度大小取決于SPI硬件,。 SPI總線只需四條線就可以完成MCU與各種外圍器件的通訊。 1)MOSI(SDI ) – Master數(shù)據(jù)輸出,Slave數(shù)據(jù)輸入,; 2)MISO (SDO) – Master數(shù)據(jù)輸入,Slave數(shù)據(jù)輸出,; 3)SClK – 時(shí)鐘信號(hào),由Master產(chǎn)生; 4)/CS – Slave使能信號(hào),由Master控制,。 SPI通信就是采用這樣的主從模式(Master-Slave)架構(gòu),,一般為一個(gè)Master和多個(gè)Slave的應(yīng)用模式。切記,,誰(shuí)為主,,誰(shuí)提供SCLK時(shí)鐘信號(hào)。 SPI通訊就需要這四根線,。其中,,CS是控制芯片是否被選中的,也就是說(shuō)只有片選信號(hào)為預(yù)先規(guī)定的使能信號(hào)時(shí),,對(duì)此芯片的操作才有效,。這就允許在同一總線上連接多個(gè)SPI設(shè)備成為可能。接下來(lái)再負(fù)責(zé)通訊的3根線就可以了,。 SPI也是串行通訊協(xié)議,,也就是說(shuō)數(shù)據(jù)是一位一位的傳輸?shù)摹_@就是SCLK時(shí)鐘線存在的原因,由SCLK提供時(shí)鐘脈沖,,SDI,,SDO則基于此脈沖完成數(shù)據(jù)傳輸,。操作時(shí)序很簡(jiǎn)單,,如下: 看見(jiàn)時(shí)序圖了,就知道怎么通訊了,。SPI接口在Master控制下產(chǎn)生的從器件使能信號(hào)和時(shí)鐘信號(hào),,兩個(gè)雙向移位寄存器按位傳輸進(jìn)行數(shù)據(jù)交換,傳輸數(shù)據(jù)高位在前,,低位在后(MSB first),。在SCK的下降沿上數(shù)據(jù)改變,上升沿一位數(shù)據(jù)被存入移位寄存器,。 換個(gè)說(shuō)法,,SPI是一個(gè)環(huán)形總線結(jié)構(gòu),主要是在sck的控制下,,兩個(gè)雙向移位寄存器進(jìn)行數(shù)據(jù)交換,。對(duì)于主機(jī)來(lái)說(shuō),上升沿發(fā)送,、下降沿接收,、高位先發(fā)送。 上升沿到來(lái)的時(shí)候,,sdi上的電平將被發(fā)送到從設(shè)備的寄存器中,。從M_Sbuff寄存器的7位,發(fā)送到S_Sbuff寄存器的0位; 下降沿到來(lái)的時(shí)候,,sd噢上的電平將被接收到主設(shè)備的寄存器中,。從S_Sbuff寄存器的7位,發(fā)送到M_Sbuff寄存器的0位; 一個(gè)完整的傳送周期是16位,,即兩個(gè)字節(jié),,因?yàn)椋紫戎鳈C(jī)要發(fā)送命令過(guò)去,,然后從機(jī)根據(jù)主機(jī)的命令準(zhǔn)備數(shù)據(jù),,主機(jī)在下一個(gè)8位時(shí)鐘周期才把數(shù)據(jù)讀回來(lái)。 SPI總線比IIC總線傳輸數(shù)據(jù)省事,。之前用過(guò)的IIC通訊,,又有起始位,又有停止位的,。SPI比較豪爽,,對(duì)于主機(jī)來(lái)說(shuō),有上升沿就寫一位,,有下降沿就讀一位,。因?yàn)檫@樣,,SPI能夠不等8位數(shù)據(jù)都傳完就停止。沒(méi)有了主機(jī)發(fā)出的SCLK脈沖,,就不再有數(shù)據(jù)交換了,。需要注意的是:我們的主設(shè)備能夠控制時(shí)鐘,因?yàn)槲覀兊腟PI通信并不像UART或者IIC通信那樣有專門的通信周期,,有專門的通信起始信號(hào),,有專門的通信結(jié)束信號(hào);所以我們的SPI協(xié)議能夠通過(guò)控制時(shí)鐘信號(hào)線,,當(dāng)沒(méi)有數(shù)據(jù)交流的時(shí)候我們的時(shí)鐘線要么是保持高電平要么是保持低電平,。 以上所有信息僅作為學(xué)習(xí)交流使用,不作為任何學(xué)習(xí)和商業(yè)標(biāo)準(zhǔn),。若您對(duì)文中任何信息有異議,,歡迎隨時(shí)提出,謝謝,! 關(guān)于云創(chuàng)硬見(jiàn) 云創(chuàng)硬見(jiàn)是國(guó)內(nèi)最具特色的電子工程師社區(qū),,融合了行業(yè)資訊、社群互動(dòng),、培訓(xùn)學(xué)習(xí),、活動(dòng)交流、設(shè)計(jì)與制造分包等服務(wù),,以開(kāi)放式硬件創(chuàng)新技術(shù)交流和培訓(xùn)服務(wù)為核心,,連接了超過(guò)30萬(wàn)工程師和產(chǎn)業(yè)鏈上下游企業(yè),聚焦電子行業(yè)的科技創(chuàng)新,,聚合最值得關(guān)注的產(chǎn)業(yè)鏈資源,, 致力于為百萬(wàn)工程師和創(chuàng)新創(chuàng)業(yè)型企業(yè)打造一站式公共設(shè)計(jì)與制造服務(wù)平臺(tái)。 |
|
來(lái)自: 張宏韜 > 《IT技術(shù)類文章》