<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>
你的位置:首頁(yè) > 測試測量 > 正文

可控制多外設的SPI/I2C總線(xiàn)

發(fā)布時(shí)間:2017-05-12 責任編輯:wenwei

【導讀】本應用筆記對兩種模擬IC中常用的串行、數字接口(SPI™或3線(xiàn)、I²C或2線(xiàn))進(jìn)行了比較,每種接口在不同的設計中都表現出其優(yōu)點(diǎn)和缺點(diǎn),具體取決于數據速率、可提供的設計空間以及噪聲環(huán)境等。本應用筆記給出了兩種接口的區別,并舉例詳細說(shuō)明了這些觀(guān)點(diǎn)。
 
引言
 
雖然現實(shí)世界中的信號都是模擬信號,但是現在越來(lái)越多的模擬IC采用數字接口進(jìn)行通信。串行接口的數據通信介于主機(提供串行時(shí)鐘)和從機/外設之間。目前,大多數微控制器提供SPI (3線(xiàn))和I²C (2線(xiàn))接口,用于發(fā)送、接收數據。微處理器通過(guò)幾條總線(xiàn)控制周邊的設備,比如:模/數轉換器(ADC)、數/模轉換器(DAC)、智能電池、端口擴展、EEPROM以及溫度傳感器。與通過(guò)并口傳輸數據不同的是:串行接口通過(guò)2條、3條或4條數據/時(shí)鐘總線(xiàn)連續傳輸數據。雖然并行接口具有傳輸速度快的特點(diǎn),但是串行接口占用較少的控制和數據線(xiàn)。
 
串行接口的基礎知識
 
串行接口有三種:3線(xiàn)、2線(xiàn)和單線(xiàn)。本文主要討論3線(xiàn)和2線(xiàn)串行接口。串行外設接口(SPI)、隊列串行外設接口(QSPI™)和MICROWIRE™ (或MICROWIRE PLUS™)接口標準均采用3線(xiàn)接口。芯片間總線(xiàn)(I²C)和系統管理總線(xiàn)(SMBus™)均為2線(xiàn)接口。這些串行接口擁有各自的優(yōu)點(diǎn)和缺點(diǎn),如表1所示。
 
3線(xiàn)接口
 
3線(xiàn)接口使用片選線(xiàn)(低電平有效CS或SS)、時(shí)鐘線(xiàn)(SCLK)和數據輸入/主機輸出線(xiàn)(DIN或MOSI)。3線(xiàn)接口有時(shí)也包括一條數據輸出/主機輸入線(xiàn)(DOUT或MISO),這時(shí)也叫做4線(xiàn)接口。為了敘述的簡(jiǎn)便,本文將3線(xiàn)接口和4線(xiàn)接口統稱(chēng)為3線(xiàn)接口。
 
3線(xiàn)接口可以以更高的時(shí)鐘頻率工作,并且不需要上拉電阻。SPI/QSPI和MICROWIRE接口都可以工作在全雙工模式(數據可以在同一時(shí)間發(fā)送和接收),一般在嘈雜環(huán)境下工作不成問(wèn)題。3線(xiàn)接口是邊沿觸發(fā),不是電平觸發(fā),因此具有更強的抗干擾能力。
 
3線(xiàn)接口的主要缺點(diǎn)是它要為每一個(gè)從機提供一條低電平有效的CS線(xiàn),除非將從機用菊鏈形式連接,如圖1所示(后續章節將詳細討論菊鏈方式)。另外一個(gè)缺點(diǎn)是3線(xiàn)接口沒(méi)有應答機制去判斷數據的收發(fā)是否正確。從軟件設計看,在單主機/單從機應用中,3線(xiàn)接口比2線(xiàn)接口簡(jiǎn)單,效率更高。
 
可控制多外設的SPI/I²C總線(xiàn)
圖1. 利用數據輸入、數據輸出、時(shí)鐘和片選信號進(jìn)行通信的3線(xiàn)接口。
 
2線(xiàn)接口
 
2線(xiàn)接口包括一條數據線(xiàn)(SDA或SMBDATA)和一條時(shí)鐘線(xiàn)(SCL或SMBCLK)。2線(xiàn)接口的優(yōu)點(diǎn)是使用更少的連線(xiàn),這一點(diǎn)對于結構緊湊的設計尤為重要,比如:手機、光纖的應用。因為2線(xiàn)接口為每個(gè)從機分配唯一的地址,所以可以在一條總線(xiàn)連接多個(gè)從機而不需要片選信號。2線(xiàn)接口在成功完成一次讀操作后會(huì )傳輸一個(gè)應答位。因為2線(xiàn)接口只有一條數據線(xiàn),所以它只能工作在半雙工模式(數據的讀寫(xiě)不可以同時(shí)進(jìn)行)。因為2線(xiàn)接口是電平觸發(fā),所以在嘈雜環(huán)境中如果發(fā)生數據位錯誤,可能造成問(wèn)題。
 
可控制多外設的SPI/I²C總線(xiàn)
表1. 3/2線(xiàn)接口優(yōu)缺點(diǎn)的對比
 
主機和從機經(jīng)由多條總線(xiàn)通過(guò)串行接口進(jìn)行通訊。在寫(xiě)周期,主機使用自己產(chǎn)生的時(shí)鐘和數據將數據傳至從機。在讀周期,從機傳輸數據至主機。
 
SPI、QSPI和MICROWIRE設計
 
由Motorola®制定的SPI接口已被很多流行的處理器和微控制器采用,比如MAXQ2000。SPI接口需要兩條控制線(xiàn)(低電平有效CS和SCLK)和兩條數據線(xiàn)(DIN/SDI和DOUT/SDO)。Motorola的SPI/QSPI標準稱(chēng)DIN/SDI數據線(xiàn)為MOSI (主機出,從機入),DOUT/SDO數據線(xiàn)為MISO (主機入,從機出),CS線(xiàn)為SS (從機選擇)。為了敘述的清晰,我們基于從機說(shuō)明3線(xiàn)接口的數據線(xiàn)。DIN是從機的數據輸入線(xiàn),DOUT是從機的數據讀出線(xiàn)。本文采用低電平有效CS、SCLK、DIN和DOUT來(lái)定義3線(xiàn)接口中的各條線(xiàn),Maxim外設使用了這些引腳名稱(chēng)。
 
大多數的SPI接口有兩位配置位,時(shí)鐘極性(CPOL)和時(shí)鐘相位(CPHA)用于設定從機何時(shí)采集數據。CPOL決定SCLK為高時(shí)總線(xiàn)空閑(CPOL = 1)還是SCLK為低時(shí)總線(xiàn)空閑(CPOL = 0)。CPHA決定在SCLK的哪一個(gè)邊沿將數據移入、移出。當CPOL = 0時(shí),將CPHA設為0,表示在SCLK的上升沿將數據移入從機;將CPHA設為1,表示在SCLK的下降沿將數據移入從機。CPOL和CPHA的兩個(gè)狀態(tài)允許四種時(shí)鐘極性和相位的不同組合。每一種都與其它三種不兼容。為了實(shí)現主、從機間的通訊,主、從機的CPOL和CPHA必須有相同的設置。
 
在SPI接口的大多數應用中,SPI接口一次傳送8位數據(一個(gè)字節),有一些微處理器一次傳送兩個(gè)或多個(gè)字節。例如,MAXQ2000微處理器可一次傳送8位或16位數據。當CPOL = 0、CPHA = 0,低電平有效CS由高跳變?yōu)榈?,開(kāi)始一個(gè)主機到從機的傳輸過(guò)程。在SCLK信號高低變化的八個(gè)周期內,低電平有效CS信號必須保持為低。DIN數據鎖定在SCLK信號的上升沿。在同樣的8位周期內,DOUT線(xiàn)上的從機輸出數據在SCLK的每個(gè)下降沿有效。圖2a給出了CPHA = 1時(shí)的詳細時(shí)序;圖2b給出了CPHA = 0時(shí)的詳細時(shí)序。
 
可控制多外設的SPI/I²C總線(xiàn)
圖2a. 3線(xiàn)接口時(shí)序(CPHA = 1),CPHA = 1、CPOL = 1時(shí),3線(xiàn)接口在時(shí)鐘的上升沿將數據移入外設,在時(shí)鐘的下降沿將數據移出外設。
 
可控制多外設的SPI/I²C總線(xiàn)
圖2b. 3線(xiàn)接口時(shí)序(CPHA = 0),CHPA = 0、CPOL = 1時(shí),3線(xiàn)接口在時(shí)鐘的下降沿將數據移入外設,在時(shí)鐘的上升沿將數據移出外設。
 
因為總線(xiàn)上的每一個(gè)IC需要專(zhuān)屬的片選線(xiàn),所以低電平有效CS被用做每個(gè)從機的使能信號。如果一條總線(xiàn)上有四個(gè)從機,則需要四條片選線(xiàn)。如果從機的低電平有效CS為高電平(禁止),該從機就忽略SCLK線(xiàn)上的數據,將DOUT置為高阻。
 
部分3線(xiàn)接口設備可以鏈接成菊鏈的方式,而不需要為每個(gè)從機提供低電平有效的CS線(xiàn),菊鏈方式能夠用一條低電平有效的CS線(xiàn)和一條數據線(xiàn)控制多個(gè)串聯(lián)從機。在菊鏈結構中3線(xiàn)接口必須包含DOUT線(xiàn),如圖1所示,從機#1的DOUT連接到從機#2的DIN,如此反復。
 
SPI標準中沒(méi)有定義最大數據速率。外部設備定義了自己的最大數據速率,通常為MHz量級。微處理器可以適應很寬范圍的SPI數據速率。在利用SPI接口進(jìn)行通訊時(shí),從機無(wú)法降低主機的數據速率或確定一個(gè)適當的速率。
 
QSPI標準和SPI標準非常相似。事實(shí)上,外設無(wú)法區分QSPI總線(xiàn)和SPI總線(xiàn)。與SPI標準中的主機不同,QSPI中的主機允許數據通過(guò)可編程的片選線(xiàn)傳輸數據。QSPI的主機甚至可以傳送長(cháng)度在8位和16位之間的數據,而SPI的主機只可以傳送8位的數據??梢耘渲肣SPI的設備去連續傳送長(cháng)度超過(guò)16字節的數據(最大為256位)。這種傳輸完全由QSPI設備的配置來(lái)實(shí)現,不需要MCU的操作。與SPI接口相似,QSPI接口也沒(méi)有規定最大數據速率。
 
由National Semiconductor公司制定的老的MICROWIRE標準和SPI標準非常相似。不同的是MICROWIRE標準的時(shí)鐘極性和時(shí)鐘相位是固定的(CPOL = 0和CPHA = 0)。DIN的數據讀取總是鎖定在SCLK的上升沿。DOUT的數據輸出總是在SCLK的下降沿。MICROWIRE標準沒(méi)有規定最大數據速率。
 
芯片間電路接口(I²C)
 
不同于全雙工的3線(xiàn)制接口,由Philips制定的I²C接口通過(guò)一條數據線(xiàn)(SDA)和一條時(shí)鐘線(xiàn)(SCL)實(shí)現半雙工通信。I²C接口定義了一個(gè)簡(jiǎn)單的主/從雙向通信接口。在這個(gè)體系中,MCU決定自己為主機(寫(xiě)模式)或為從機(接收模式)。每個(gè)從機具備專(zhuān)有、唯一的地址,使主機可以和多個(gè)從機通過(guò)一條總線(xiàn)進(jìn)行通信,而不需要為每一個(gè)從機提供單獨的片選線(xiàn)。如圖3所示,從機的數目只受限于最大線(xiàn)上電容(400pF),I²C接口的機制基于7位或10位地址,7位的地址更為常見(jiàn)。在7位地址的機制中,總線(xiàn)上可以接127個(gè)不同的外設。SCL和SDA線(xiàn)為漏極開(kāi)路結構,所以閑置時(shí)必須為高。當電源電壓為3V時(shí),連接一個(gè)1kΩ或更大阻值的上拉電阻;當電源電壓為5V時(shí),連接一個(gè)1.6kΩ或更大阻值的上拉電阻。
 
可控制多外設的SPI/I²C總線(xiàn)
圖3. 利用數據輸入/輸出和時(shí)鐘信號進(jìn)行通信的2線(xiàn)接口。
 
當SCL為高,SDA從高變?yōu)榈?,即發(fā)出了一個(gè)開(kāi)始命令,啟動(dòng)I²C通信。圖4a所示,每個(gè)SCL時(shí)鐘傳輸一個(gè)數據位,傳輸一個(gè)字節至少需要9個(gè)數據位。一個(gè)寫(xiě)周期包括8個(gè)數據位和一個(gè)應答位(ACK)或者非應答位(NACK)。如圖4b所示,當數據在I²C總線(xiàn)上傳輸時(shí),在SLK的上升沿寫(xiě)入從機,在SLK的下降沿從機輸出。在SCL時(shí)鐘周期為高電平的時(shí)間內,SDA線(xiàn)的數據不可以改變。一次傳輸的完成必須跟隨著(zhù)一個(gè)中止或重新開(kāi)始的命令,既SCL為高時(shí),SDA由低變?yōu)楦?。當總線(xiàn)空閑時(shí),SDA和SCL都為高。
 
可控制多外設的SPI/I²C總線(xiàn)
圖4a. 開(kāi)始條件和停止條件,2線(xiàn)接口采用開(kāi)始、重復開(kāi)始和停止命令在主機和從機之間傳輸數據。
 
可控制多外設的SPI/I²C總線(xiàn)
圖4b. I²C應答位,應答數據時(shí),2線(xiàn)接口將SDA拉低。
 
I²C的寫(xiě)周期起始于開(kāi)始命令,隨后是7位從機地址和第8位用于標識讀、寫(xiě)操作。將第8位置低,表示寫(xiě)操作;將第8位置高,表示讀操作。主機在第8個(gè)時(shí)鐘周期后釋放總線(xiàn)。如果從機應答數據傳輸,則在第9個(gè)時(shí)鐘周期將SDA拉低。如果從機不應答寫(xiě)命令,則釋放SDA (該數據線(xiàn)通過(guò)上拉電阻置于高電平)。
 
隨后,主機寫(xiě)入8位命令字節,然后是第二個(gè)ACK/NACK位。接下來(lái),主機寫(xiě)入8位數據字節并跟隨第三個(gè)ACK/NACK位。數據字節和最后的應答位完成一個(gè)讀/寫(xiě)周期,更新外設輸出,圖5a是一個(gè)寫(xiě)周期的詳細例子。
 
I²C讀周期起始于開(kāi)始命令,隨后是需要寫(xiě)入數據的從機地址、第8位置高,表示讀操作。在A(yíng)CK/NACK之后,主機寫(xiě)入命令字節訪(fǎng)問(wèn)從機寄存器。在第二個(gè)ACK/NACK位后,主機重新寫(xiě)入從機地址。在第三個(gè)ACK/NACK位后,從機控制總線(xiàn),一次輸出8位數據到總線(xiàn)上。如圖5b所示,當從與上次讀操作相同的從機寄存器讀取數據時(shí),主機只需要在讀取從機數據之前寫(xiě)入從機地址。
 
可控制多外設的SPI/I²C總線(xiàn)
圖5. 2線(xiàn)接口一次傳輸8位數據,圖5a是I²C寫(xiě)周期的一個(gè)例子;圖5b是I²C讀周期的一個(gè)例子。
 
I²C接口支持低速(大于100kHz)、快速(大于400kHz)和高速(大于3.4MHz)三種數據速率。I²C接口的高低電平為CMOS邏輯電平(低電平為0.3x電源電壓以下,高電平為0.7x電源電壓以上)。
 
系統管理總線(xiàn)(SMBus)
 
Intel®制定了SMBus標準用于低速通信,SMBus 2線(xiàn)接口與I²C接口非常相似。SMBus也使用一條數據線(xiàn)(SMBDATA)和一條時(shí)鐘線(xiàn)(SMBCLK)進(jìn)行通信。SMBCLK和SMBDATA也需要上拉電阻,3V供電時(shí)上拉電阻大于8.5kΩ,5V供電時(shí)上拉電阻大于14kΩ。SMBus工作電壓范圍在3V和5V之間,大于2.1V為高電平,低于0.8V為低電平。
 
I²C接口和SMBus接口的最主要區別是最高/最低時(shí)鐘速率,因為I²C總線(xiàn)為被動(dòng)傳輸總線(xiàn),不存在總線(xiàn)超時(shí)問(wèn)題,速率可低至“靜止”。SMBus接口則存在總線(xiàn)超時(shí)問(wèn)題。如果時(shí)鐘信號拉低之后的時(shí)間大于超時(shí)周期(最長(cháng)為35ms)時(shí),從機復位接口,認為發(fā)生總線(xiàn)超時(shí)。SMBus的超時(shí)周期限制了時(shí)鐘的最小速率為19kHz。為了保證正常通信,SMBCLK的速率必須介于10kHz至100kHz之間,而I²C接口的主機或從機則可根據傳輸數據的需要將時(shí)鐘保持在低電平。
 
外設舉例
 
微處理器經(jīng)常通過(guò)串行接口與外設通信,當微處理器通過(guò)2線(xiàn)或3線(xiàn)接口訪(fǎng)問(wèn)外設后,外設相應地改變其模擬或數字輸出。例如,指使外設設置電池的充電的電流和電壓、用溫度傳感器控制風(fēng)扇、設置數模轉換器的模擬輸出等。
 
如圖6所示,通過(guò)2線(xiàn)接口連接微處理器和8位數/模轉換器(MAX5115)。因為這個(gè)DAC有四個(gè)地址選擇引腳,可以產(chǎn)生16個(gè)唯一的從機地址,因此可以在總線(xiàn)上并聯(lián)16個(gè)DAC,因為MAX6641有不同的從機地址,同樣的2線(xiàn)接口也可以設置SMBus溫度傳感器/風(fēng)扇控制器(MAX6641),風(fēng)扇控制器控制MOSFET的柵極,使其打開(kāi)或關(guān)閉風(fēng)扇。
 
可控制多外設的SPI/I²C總線(xiàn)
圖6. 由于微控制器采用的是I²C接口,與外設通信時(shí),如DAC、溫度傳感器,總線(xiàn)只需要兩條連線(xiàn)。 
 
3線(xiàn)接口需要單獨的片選線(xiàn)實(shí)現微處理器與多個(gè)并行從機之間的通信,更簡(jiǎn)單的2線(xiàn)接口用一條時(shí)鐘線(xiàn)和一條數據線(xiàn)與總線(xiàn)上的每個(gè)設備通信??梢酝ㄟ^(guò)設定不同的從機地址在總線(xiàn)上掛接多個(gè)IC。大多數I²C接口外設具備地址選擇引腳,以實(shí)現從機地址的配置。外設可以使用的從地址數等于地址選擇引腳數的平方。例如,若外有兩個(gè)地址選擇引腳,它就可以配置四個(gè)不同的地址。
 
新一代設計以更少的地址選擇引腳提供更多的從地址。MAX7319是輸入/輸出擴展芯片,可以從兩個(gè)地址選擇引腳(AD2和AD0)擴展出16個(gè)從地址。這些引腳可以接GND、電源(VCC)、SDA或SCL。表2列出了這16個(gè)從地址的詳細信息,A6、A5、A4固定為110,A3至A0可以通過(guò)AD2、AD0設置。 
 
可控制多外設的SPI/I²C總線(xiàn)
表2. MAX7319僅利用2個(gè)地址線(xiàn)(AD2和AD0)即可編譯出16個(gè)不同地址
 
進(jìn)一步改進(jìn)
 
3線(xiàn)接口和2線(xiàn)接口有幾點(diǎn)不同的要求,每種接口都有其特殊優(yōu)勢。近期內不可能用一種接口標準完全取代另一接口標準。具備I²C接口的器件發(fā)展較快,并開(kāi)始融合一些SMBus接口的特點(diǎn),支持諸如超時(shí)復位等功能,使接口可以根據需要關(guān)斷。新的I²C從機地址長(cháng)達10位,而不僅僅是7位,這給用戶(hù)帶來(lái)更多的靈活性。
 
3線(xiàn)接口和2線(xiàn)接口將并存,但I²C接口似乎占有更大的市場(chǎng)份額,大部分微處理器支持2線(xiàn)接口。I²C接口的易用性及更少的連線(xiàn)使其增長(cháng)量超過(guò)了SPI接口。
 
本文來(lái)源于Maxim。
 
 
 
 
推薦閱讀:


優(yōu)化DS2715電池充電器的負載切換功能
5通道(3路+V和2路-V)熱插拔參考設計
最新 MEMS 慣性模塊如何幫助克服應用開(kāi)發(fā)挑戰
用于自主駕駛車(chē)輛的 V2X 通信
設計面向工業(yè)物聯(lián)網(wǎng)的低功耗邊緣層節點(diǎn)
 
 
 
特別推薦
技術(shù)文章更多>>
技術(shù)白皮書(shū)下載更多>>
熱門(mén)搜索
?

關(guān)閉

?

關(guān)閉

久久无码人妻精品一区二区三区_精品少妇人妻av无码中文字幕_98精品国产高清在线看入口_92精品国产自产在线观看481页
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<s id="eoqoe"><xmp id="eoqoe">
<button id="eoqoe"><strong id="eoqoe"></strong></button>
<wbr id="eoqoe"></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><strong id="eoqoe"></strong></wbr>
<wbr id="eoqoe"><label id="eoqoe"></label></wbr>
<button id="eoqoe"></button>
<wbr id="eoqoe"></wbr>