24小時(shí)聯(lián)系電話(huà):18217114652、13661815404
中文
- 您當(dāng)前的位置:
- 首頁(yè)>
- 電子資訊>
- 技術(shù)專(zhuān)題>
- I2C與SPI與UART:如何...
技術(shù)專(zhuān)題
I2C與SPI與UART:如何布局這些通用總線(xiàn)
I2C與SPI與UART:如何布局這些通用總線(xiàn)
如果您要為項(xiàng)目構(gòu)建開(kāi)發(fā)板或使用通用MCU,則會(huì)發(fā)現(xiàn)許多用于通信其他活動(dòng)組件的協(xié)議。USB和以太網(wǎng)之類(lèi)的標(biāo)準(zhǔn)已內(nèi)置在大多數(shù)控制器中,用于與計(jì)算機(jī)外圍設(shè)備一起使用。盡管如此,仍使用I2C,SPI,UART等協(xié)議與下游MCU或可編程IC進(jìn)行接口。I2C總線(xiàn),SPI總線(xiàn)和UART總線(xiàn)之間的區(qū)別很簡(jiǎn)單,任何使用MCU的設(shè)計(jì)人員都應(yīng)該知道如何為這些協(xié)議設(shè)置路由和布局。
這些協(xié)議是速度較慢的信令標(biāo)準(zhǔn),因此,如果您使用這些協(xié)議,幾乎不必?fù)?dān)心諸如阻抗控制或傳輸線(xiàn)行為之類(lèi)的問(wèn)題。但是,在確保在接收器上正確讀取總線(xiàn)信號(hào)時(shí),必須考慮一些重要的設(shè)計(jì)要點(diǎn)。解決問(wèn)題也很重要,但是特定的產(chǎn)品和您的代碼可以解決這一點(diǎn)?,F(xiàn)在,讓我們看一下如何在您的PCB布局中使用這三種通用協(xié)議,以及一些保持信號(hào)完整性的要點(diǎn)。
I2C與SPI與UART之間的差異
從8位到32位的所有MCU都將至少使用這些協(xié)議中的一種以及GPIO,以實(shí)現(xiàn)可編程性并將信號(hào)發(fā)送到簡(jiǎn)單的外設(shè)。這三個(gè)串行協(xié)議是總線(xiàn)協(xié)議。I2C和UART使用尋址方案,而SPI是無(wú)地址的。盡管SPI是無(wú)地址的,但它是一種總線(xiàn)協(xié)議,仍可用于選擇下游設(shè)備以接收數(shù)據(jù)。
I2C協(xié)議
I2C(發(fā)音為I平方的C,有時(shí)也稱(chēng)為集成電路間的IIC)使用兩條線(xiàn)(標(biāo)準(zhǔn),快速和快速加法模式)來(lái)控制其他設(shè)備;一條線(xiàn)是時(shí)鐘線(xiàn)(SCL),另一條線(xiàn)是數(shù)據(jù)線(xiàn)(SDA)。它具有三種模式,下表總結(jié)了這些模式。請(qǐng)注意,上升/下降時(shí)間值假定在I / O上安裝了典型的串聯(lián)電阻。
模式 |
數(shù)據(jù)速率/時(shí)鐘速度 |
最大限度。上升/下降時(shí)間 |
最小 上升/下降時(shí)間 |
方向性 |
標(biāo)準(zhǔn) |
100 kHz的 |
1000納秒 |
-- |
雙向的 |
快速地 |
400 kHz的 |
300納秒 |
20 ns * |
雙向的 |
快加 |
1兆赫 |
300納秒 |
20 ns * |
雙向的 |
高速 |
3.4 MHz(100 pF總線(xiàn)) 1.7 MHz(400 pF總線(xiàn)) |
120 ns ** |
15 ns ** |
雙向的 |
超快 |
5兆赫 |
50納秒 |
25納秒 |
單向 |
*假設(shè)VDD / VCC = 5.5V。如果VDD / VCC較低,則按線(xiàn)性比例縮小
**將時(shí)鐘線(xiàn)的這些值除以2
請(qǐng)注意,超快速模式是唯一將通信僅用于下游寫(xiě)入操作的模式。此模式也很重要,因?yàn)樗梢詭椭覀兞私夂螘r(shí)需要匹配總線(xiàn)阻抗,而實(shí)際上這幾乎是絕不可以匹配的。如果我們對(duì)臨界線(xiàn)長(zhǎng)度采取非常保守的10%限制,我們會(huì)發(fā)現(xiàn)這些線(xiàn)的臨界長(zhǎng)度為0.32 m,這比使用I2C的大多數(shù)電路板的尺寸要長(zhǎng)得多。如果我們將拐點(diǎn)頻率用于最短的上升/下降時(shí)間,并且將臨界長(zhǎng)度限制為10%,則得出的值會(huì)更長(zhǎng),為0.92 m。對(duì)于超快模式,我們應(yīng)該將保守的數(shù)字設(shè)置為0.32 m。任何小于此值的I2C線(xiàn)都不會(huì)充當(dāng)傳輸線(xiàn),我們只需要擔(dān)心端接方案。
端接的重點(diǎn)是選擇合適的上拉電阻和串聯(lián)電阻。上拉電阻器和VDD / VCC線(xiàn)路總線(xiàn)的電容形成放電和充電RC電路,當(dāng)驅(qū)動(dòng)器切換時(shí),該電路為接收器提供信號(hào)。信號(hào)線(xiàn)和時(shí)鐘線(xiàn)的上拉電阻值(Rp)必須遵守以下不等式:
總線(xiàn)電容是使用VCC總線(xiàn)阻抗的標(biāo)準(zhǔn)公式確定的,該公式使用與傳輸線(xiàn)(微帶或帶狀線(xiàn))相同的公式計(jì)算得出。然后,您可以使用線(xiàn)路的阻抗和傳播延遲來(lái)解決總線(xiàn)電容。在I2C標(biāo)準(zhǔn)下,串聯(lián)電阻是可選的,但可以包括在內(nèi)以保護(hù)器件免受電壓尖峰的影響并減慢上升/下降時(shí)間。確定與您的上拉電阻值配對(duì)的正確串聯(lián)電阻值。
SPI協(xié)議
SPI協(xié)議類(lèi)似于I2C。該總線(xiàn)上總共使用了4條線(xiàn),并且可以?xún)煞N可能的方式排列組件。如果使用單個(gè)控制器設(shè)備來(lái)觸發(fā)單個(gè)下游設(shè)備,則拓?fù)渚褪屈c(diǎn)對(duì)點(diǎn)的。觸發(fā)多個(gè)設(shè)備取決于驅(qū)動(dòng)器提供的芯片選擇輸出的數(shù)量(標(biāo)準(zhǔn)模式)。第二種模式使用菊花鏈,其中單個(gè)設(shè)備選擇輸出連續(xù)觸發(fā)菊花鏈中的每個(gè)設(shè)備。
與I2C不同,SPI中的各種信令參數(shù)都是高度可配置的。除非您運(yùn)行的接口非常快,否則您可以將互連線(xiàn)上的信號(hào)電平近似為DC,因?yàn)樗鼘⒌陀趥鬏斁€(xiàn)行為的臨界長(zhǎng)度。然后,您可以使用一個(gè)串聯(lián)電阻器來(lái)終止驅(qū)動(dòng)器的低阻抗輸出,并確保最大的功率傳輸。上面顯示的具有跟蹤電容的RC放電方法可以控制接口的輸出電流和上升/下降時(shí)間。
UART協(xié)議
通用異步收發(fā)器(UART)與I2C相似。這些接口的最大數(shù)據(jù)速率約為5 Mbps。UART設(shè)備也很容易使用,因?yàn)樵O(shè)備之間沒(méi)有時(shí)鐘發(fā)送。一切都是異步的。注意,每個(gè)UART設(shè)備的內(nèi)部(系統(tǒng))時(shí)鐘必須以波特率的幾倍運(yùn)行(即,每個(gè)位被采樣N次)。單個(gè)控制器設(shè)備和單個(gè)下游設(shè)備之間僅使用兩條電線(xiàn)進(jìn)行通信。
注意,UART器件的數(shù)據(jù)格式,信號(hào)電平和波特率可通過(guò)外部驅(qū)動(dòng)器電路進(jìn)行配置。不幸的是,這也意味著對(duì)于UART器件的布線(xiàn)和布局幾乎沒(méi)有硬性規(guī)定。遵循標(biāo)準(zhǔn)的高速設(shè)計(jì)指南,通過(guò)查看傳輸線(xiàn)行為的轉(zhuǎn)變來(lái)確定何時(shí)需要終止。減少過(guò)沖的典型端接方法是串聯(lián)端接。請(qǐng)注意,UART可能在高電平或低電平下處于空閑狀態(tài),并且可能需要上拉電阻來(lái)設(shè)置所需的空閑水平;在添加上拉電阻之前,請(qǐng)務(wù)必檢查您的組件規(guī)格。