專(zhuān)注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開(kāi)發(fā)工具、應(yīng)用測(cè)試 完善的開(kāi)發(fā)代碼案例庫(kù)分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無(wú)限潛能!
提供新的芯片及解決方案,提升客戶(hù)產(chǎn)品競(jìng)爭(zhēng)力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)
我們說(shuō)看到的大部分單片機(jī),基本都實(shí)現(xiàn)了內(nèi)部集成電路(I2C)串行總線接口。I2C對(duì)于連接主板或嵌入式系統(tǒng)上的許多低速外設(shè)非常有用。這些接口使用7位尋址方案,它允許多個(gè)主設(shè)備通過(guò)簡(jiǎn)單的2線總線控制多個(gè)外設(shè)。
在設(shè)計(jì)PCB時(shí),有時(shí)由于總線的物理尺寸變得很大,因此需要緩沖器。I2C緩沖器就像一種中繼器,但它并不意味著克服總線上的損耗。由于I2C總線的上升時(shí)間通常較慢,因此這些總線不會(huì)像高速數(shù)字總線那樣因損耗而出現(xiàn)信號(hào)衰減。相反,它們將時(shí)序特性恢復(fù)到某個(gè)所需的水平,以便可以根據(jù)需要使總線的大小更大。
一、I2C總線電氣特性
I2C總線由兩條活動(dòng)線組成:串行時(shí)鐘(SCL)和串行數(shù)據(jù)(SDA)線。這兩條線都連接到主控制器或外圍ASIC上的引腳,這兩個(gè)引腳都是需要上拉電阻的開(kāi)漏引腳。這意味著主設(shè)備或外圍設(shè)備可以將SDA線拉低,而上拉電阻器被動(dòng)地將線返回到高電壓電平,從而切換所有邏輯狀態(tài)。
影響I2C總線性能的兩個(gè)關(guān)鍵電氣參數(shù)包括:
(1)總線電容(Cbus):SCL和SDA跡線以及連接到總線的設(shè)備上的所有輸入引腳的電容較高,會(huì)增加數(shù)據(jù)信號(hào)和時(shí)鐘沿的上升時(shí)間。
(2)上拉電阻(R):SCL/SDA和VCC之間連接一個(gè)電阻。較低的電阻值會(huì)縮短上升時(shí)間,但會(huì)增加流經(jīng)開(kāi)漏極的電流(功耗較高)。
I2C總線中上拉電阻的典型值為10 kOhms。例如,如果總總線電容為 100 pF,則SCL/SDA信號(hào)的 10%-90%上升時(shí)間約為2.2微秒。通過(guò)將I2C總線本質(zhì)上視為充電/放電RC電路,可以輕松計(jì)算出這一點(diǎn)??偩€如下圖所示:
隨著越來(lái)越多的設(shè)備添加到I2C總線,由于每個(gè)設(shè)備的負(fù)載電容和額外的走線電容,Cbus的值也會(huì)增加。最終,總電容將降低可以可靠支持的最大I2C時(shí)鐘速度。較高的總線電容可以用較小的上拉電阻來(lái)抵消,但較小的電阻會(huì)通過(guò)開(kāi)漏引腳增加功耗。有些漏極電流可能僅限于幾毫安,這就是上拉電阻值應(yīng)在10 kOhms左右的原因。
如果上升時(shí)間超過(guò)I2C器件的輸入閾值區(qū)域,緩慢的上升時(shí)間也會(huì)導(dǎo)致時(shí)序問(wèn)題,這可能會(huì)導(dǎo)致接口時(shí)序窗口期間電壓電平的錯(cuò)誤。
為什么要添加I2C緩沖器?
為了說(shuō)明為什么需要I2C緩沖器,讓我們考慮一個(gè)例子。假設(shè)我們有一塊帶有兩個(gè)I2C設(shè)備、一個(gè)單片機(jī)和一個(gè)EEPROM的板。單片機(jī)充當(dāng)I2C主設(shè)備,EEPROM充當(dāng)外圍設(shè)備。
在400 kHz的快速模式時(shí)鐘速度下,主機(jī)可以正確地訪問(wèn)EEPROM中的數(shù)據(jù),不會(huì)出現(xiàn)時(shí)序錯(cuò)誤。但如果在板上添加更多外圍 IC,總線最終會(huì)停止工作。這些額外的設(shè)備增加了現(xiàn)有總線的電容。由于這些設(shè)備全部并行添加到總線,因此增加的電容開(kāi)始導(dǎo)致總線上所有設(shè)備的上升時(shí)間變慢,并最終出現(xiàn)通信錯(cuò)誤。
解決I2C總線性能限制的主要方法有幾種:
(1)較低的上拉電阻值:使用較小的電阻可縮短上升時(shí)間,但會(huì)因增加漏極電流而大大增加功耗。
(2)降低I2C時(shí)鐘速度:這會(huì)增加SCL/SDA信號(hào)上升沿的時(shí)序裕度,但也會(huì)降低吞吐量。
(3)添加I2C緩沖器/中繼器:I2C緩沖器將總線分成多個(gè)較小的段,這些段可以通過(guò)緩沖器獨(dú)立驅(qū)動(dòng)。
I2C緩沖器及其總線連接的結(jié)構(gòu)如下所示:
二、在PCB設(shè)計(jì)中實(shí)現(xiàn)I2C緩沖器
I2C緩沖器允許工程師將大型總線劃分為較小的段,這最大限度地減少了每個(gè)部分的電容。通過(guò)降低電容,可以增加上拉電阻值以降低I2C功耗,同時(shí)仍滿(mǎn)足上升時(shí)間要求。
I2C緩沖器還可以提供電平轉(zhuǎn)換功能,可在段之間升高或降低信號(hào)。這允許高壓設(shè)備與低壓設(shè)備通信,但兩個(gè)電源電壓都需要添加到PCB中。
設(shè)計(jì)PCB時(shí),如果出現(xiàn)以下情況,請(qǐng)考慮添加I2C緩沖器或中繼器:
(1)I2C總線具有來(lái)自許多設(shè)備的高電容。
(2)由于上拉電阻較大,SDA/SCL上升時(shí)間太慢。
(3)I2C設(shè)備需要不同的信號(hào)電平。
(4)I2C設(shè)備需要不同的時(shí)鐘頻率。
(5)I2C器件具有不同的上拉電阻限制。
(6)總線速度較高時(shí)會(huì)發(fā)生通信錯(cuò)誤。
使用I2C緩沖器的一些好處包括:
(1)將大總線分成更小的段以減少電容。
(2)通過(guò)最小化每個(gè)段上的電阻值來(lái)延長(zhǎng)上升時(shí)間。
(3)與單個(gè)長(zhǎng)總線相比,可實(shí)現(xiàn)更高的I2C時(shí)鐘速度。
(4)防止傳播延遲影響總線時(shí)序。
(5)隔離總線段之間的電氣噪聲。
三、I2C緩沖器的放置位置
當(dāng)布局具有多個(gè)I2C設(shè)備的PCB時(shí),有幾種有效的方法來(lái)放置I2C緩沖器:
(1)將設(shè)備集群分成I2C段。如果某些 I2C 設(shè)備在電路板上物理分組在一起,則在集群之間放置緩沖器可將它們隔離到單獨(dú)的總線段中。這包含每組內(nèi)的電容。
(2)將緩沖器放置在總線中間附近。在長(zhǎng)總線的中間放置緩沖器有助于在兩個(gè)段上均勻地分配電容。這樣,緩沖器在總線的每一側(cè)看到/創(chuàng)建相似的上升時(shí)間。
(3)在電容非常高的設(shè)備附近放置一個(gè)緩沖器。如果一些外圍設(shè)備具有較大的電容,則可以將它們放置在緩沖器的輸出側(cè),這樣它們就不會(huì)減慢總線的其余部分。
(4)使用多個(gè)級(jí)聯(lián)緩沖器來(lái)劃分復(fù)雜的總線。對(duì)于在大面積上分布有許多設(shè)備的總線,級(jí)聯(lián)2-3個(gè)緩沖器將總線分成幾個(gè)低電容段,以獲得更好的性能。
I2C緩沖器作為備份總線
使用 I2C 緩沖器的另一種選擇是作為備份總線,這實(shí)際上創(chuàng)建了主設(shè)備可以通過(guò)其進(jìn)行通信的冗余總線。如果總線上有可能發(fā)生故障,則可以啟用緩沖器以打開(kāi)備份組件或外設(shè)。這種類(lèi)型的系統(tǒng)常見(jiàn)于高可靠性應(yīng)用,例如基礎(chǔ)設(shè)施或工業(yè)系統(tǒng)的電力電子設(shè)備。
當(dāng)設(shè)備故障可能導(dǎo)致整個(gè)系統(tǒng)癱瘓時(shí),就會(huì)使用緩沖器??偩€上單個(gè)設(shè)備的故障可以通過(guò)在總線上放置一個(gè)用緩沖器分隔的冗余電路來(lái)克服。然后可以通過(guò)打開(kāi)其電源或切換其ENABLE/SHDN引腳來(lái)啟用緩沖器。
在這種情況下,需要一種控制方法來(lái)感測(cè)受保護(hù)設(shè)備并確定該設(shè)備是否發(fā)生故障。如果設(shè)備發(fā)生故障,主控制器可以通過(guò)切換使能引腳切換到受保護(hù)的總線。這需要在嵌入式應(yīng)用中多付出一些功夫,但考慮余量來(lái)設(shè)計(jì)總線可確保系統(tǒng)的長(zhǎng)期可靠性。
以上就是英銳恩單片機(jī)開(kāi)發(fā)工程師分享的單片機(jī)PCB電路設(shè)計(jì)知識(shí):為I2C總線添加緩沖器。英銳恩專(zhuān)注單片機(jī)應(yīng)用方案設(shè)計(jì)與開(kāi)發(fā),提供8位單片機(jī)、32位單片機(jī)。