在本文中,我們將闡明如何構(gòu)建可與 I 2 C 線路一起使用的雙向 2 位多路復(fù)用器電路。如果需要,該電路還具有作為電平轉(zhuǎn)換器工作的額外功能。該設(shè)計基于 GreenPAK? SLG46826V。由于 SDA 和 SCL 線路的雙向性,該設(shè)計可用于單主或多主 I 2 C 通信。
該電路是一個雙軌 IC,包括構(gòu)建適合 I 2 C 協(xié)議的雙向多路復(fù)用器電路所需的所有元件。使用此 IC 可實現(xiàn)小尺寸。除了實現(xiàn) I 2 C 多路復(fù)用器電路的小尺寸外,GreenPAK 還能夠集成電路所需的振蕩器和上拉電阻器。
該設(shè)計針對實際應(yīng)用進行了優(yōu)化,可以輕松修改以滿足閱讀器系統(tǒng)的要求。
通過將其放置在由 Arduino 板和四個 I 2 C-LCD 屏幕組成的 I 2 C 網(wǎng)絡(luò)中對其進行了檢查,其中每個屏幕包含相同的 I 2 C 地址。在設(shè)計的 IC 的幫助下,每個屏幕都被單獨寫入。
I 2 C 協(xié)議
連接兩個或多個設(shè)備以傳輸和接收信息需要特殊的通信路徑,由發(fā)送方和接收方共享的通信協(xié)議控制。集成電路間總線,也稱為 I 2 C,是一種非常常見的雙向通信總線,使用兩條線路在設(shè)備之間發(fā)送串行信息。
I 2 C 用于在控制器和一組外圍設(shè)備之間創(chuàng)建通信網(wǎng)絡(luò)。它已得到眾多電子傳感器和執(zhí)行器的支持,因為它高效且易于布線。I 2 C 總線支持7 位和10 位地址空間設(shè)備,由兩條信號線組成:SCL 和SDA 線,用于與設(shè)備進行通信。SCL 代表“串行時鐘”,它承載由主機驅(qū)動的時鐘信號。SDA 代表“串行數(shù)據(jù)”,因此主機和從機都可以發(fā)送和接收數(shù)據(jù)。當(dāng)I 2 C 外設(shè)之間沒有傳輸時,SCL 和SDA 線都被上拉到V DD。
我們可以使用 I 2 C 協(xié)議連接多達 128 個設(shè)備,所有設(shè)備都共享相同的 SCL 和 SDA 線。圖 1 顯示了一個小規(guī)模的例子。
系統(tǒng)通常需要為不同的 IC 提供多種不同的電源電壓,如今的外圍設(shè)備通常在 I 2 C 總線和 I 2 C 電平轉(zhuǎn)換器或 I 2 C 總線多路復(fù)用器的幫助下連接到微控制器以解決兼容性問題。
圖 1:I2C 網(wǎng)絡(luò)圖
I 2 C 總線多路復(fù)用器
在 I 2 C 網(wǎng)絡(luò)中,每個設(shè)備都必須有一個唯一的不重復(fù)地址才能正確實現(xiàn)主從設(shè)備之間的通信,但是當(dāng)許多傳感器和外圍設(shè)備組合在同一條總線上時,相同的 I 2 C 地址可以分配給多個設(shè)備。為了解決這個問題,我們實現(xiàn)了一個獨特的多路復(fù)用電路,將具有相同地址的從設(shè)備連接到通信總線,我們可以通過輪詢輸入交換通道。
I 2 C 總線多路復(fù)用器電路是 SCL 和 SDA 總線的雙向選擇器,設(shè)計使用 SLG46826 雙軌 IC 構(gòu)建四通道輸出多路復(fù)用器電路,如圖 2 所示。 SCL 線的雙向性,雖然單主系統(tǒng)不需要,但確保拓撲可用于多主配置,其中主主(連接到圖 2 的左側(cè))可以仲裁輔助主(連接到地址上的圖 2 的右側(cè))可以向主 I 2 C 網(wǎng)絡(luò)發(fā)送命令。
圖 2:I2C 總線多路復(fù)用器 IC 圖
GreenPAK 設(shè)計
設(shè)計由兩個主要部分組成;SDA 線多路復(fù)用器和 SCL 線多路復(fù)用器。該電路的關(guān)鍵行為是 SLG46826 的雙向引腳和 OE(輸出啟用)邏輯的配置和靈活性,用于配置特定引腳是輸入還是輸出。可以在 Dialog 的網(wǎng)站上找到在GreenPAK Designer 軟件中創(chuàng)建的完整設(shè)計文件。
SDA 線路多路復(fù)用器
在這部分中,引腳 3 將根據(jù)輸入 A0 和 A1 的狀態(tài)連接到引腳 7、13、15、16 之一。這些輸入已配置為用作數(shù)字輸入/輸出。輸出類型為漏極開路 NMOS,輸入上拉至 10 kΩ 電阻。如圖 3 所示,NOR 門控制每個引腳的 OE“輸出使能”;當(dāng) OE 為“低”時,引腳變?yōu)檫B接到 10K 上拉電阻的輸入,當(dāng) OE 為“高”時,引腳變?yōu)檩敵銮覟?GND。
圖 3:SDA 線路復(fù)用器設(shè)計
3 位 LUT7 的輸出連接到引腳 3 的 OE,而 3L8 或非門的輸出將被多路復(fù)用并連接到引腳 7、13、15、16 的 OE。時間延遲塊被配置為下降Edge Delay 并因此產(chǎn)生到 NOR 門的時間延遲。2 位解復(fù)用器是使用塊 3L3、3L4、3L5、2L2 和 2L3 構(gòu)建的。
因此,當(dāng) [A1A0] = [00] 時,3L8 輸出傳遞到引腳 7,活動通道為 0 到 3L3,而其余通道的輸入被上拉至 1。當(dāng) [A1A0] = [01] 時,3L8 輸出通過 3L4 傳遞到引腳 13,當(dāng) [A1A0] = [10] 時,輸出通過 3L5 傳遞到引腳 15,當(dāng) [A1A0] = [11] 時,3L8 輸出通過兩個與門 2L3 和 2L2 傳遞到引腳 16。
圖 4:引腳 6 屬性
塊3L0、3L1和3L2用于構(gòu)建2位多路復(fù)用器電路;然后它選擇來自引腳 7、13、15、16 的一個輸入信號并將其傳遞到 NOR 門,稍后傳遞到引腳 3 (SDA)。引腳 4 和 5 被配置為連接到下拉電阻器的輸入,然后通道 0 在初始狀態(tài)下處于活動狀態(tài),因為 [A0A1] = [00]。
MF1 和 MF2 是多功能塊,可配置為執(zhí)行多個功能。在這個設(shè)計中,它們被用來產(chǎn)生一個時間延遲,此外,用來制定或非門。每個計數(shù)器的“DLY IN”輸入連接到或非門輸出。
圖 5:MF1(多功能塊)配置
設(shè)計事件順序
當(dāng)總線處于空閑狀態(tài)(不發(fā)送或接收)時,通信引腳連接到一個上拉電阻(高電平),所有引腳根據(jù)傳遞到 OE 的信號處于輸入狀態(tài)。如果輸入之一接收到 LO 信號,則該信號將通過 NOR 門傳播,從而在基于 A0A1 的適當(dāng) OE 處產(chǎn)生 HI 信號。這會將引腳配置為輸出并因此保持到 GND。如果輸入返回 HI,則會產(chǎn)生一個短時間延遲以保持 OE 狀態(tài),以考慮引腳需要從 LO 變?yōu)?HI(從輸入到輸出)的時間。
要繼續(xù)處理事件序列,請考慮以下示例:
初始狀態(tài),總線上無通訊,[A1A0]=[00]。即所有引腳都是輸入,并且由于輸入的上拉電阻被激活,信號 HI 從所有輸入傳遞到 IC。當(dāng)引腳 3 從主機接收到 LO 時,信號傳遞到 3L8,然后到 3 位 LUT3 和 3L3 輸出也為低電平,因為信號低電平到達引腳 7 的 OE,這使得引腳 7 的狀態(tài)從輸入變?yōu)檩敵觥O 信號通過總線 SDA0 傳播到外部設(shè)備。
當(dāng)主機釋放通信總線時,由于現(xiàn)有的上拉電阻,輸入變?yōu)?HI。然后 HI 傳遞到 3L8,后者反轉(zhuǎn)信號并將信號低電平傳遞到引腳 7 的 OE,從而導(dǎo)致引腳將其狀態(tài)從輸出更改為輸入。由于上拉電阻處于活動狀態(tài),HI 被傳遞到外部設(shè)備,并在下降沿應(yīng)用時間延遲,以便在接收新值之前為引腳提供足夠的時間來改變其 IO 狀態(tài)。
SCL 線路多路復(fù)用器
與 SDA 總線的多路復(fù)用器電路的設(shè)計一樣,SCL 總線的另一個多路復(fù)用器電路也采用相同的配置設(shè)計,其中引腳 6、17、18、19 和 20 被配置為作為數(shù)字輸入/輸出和內(nèi)部上拉電阻在引腳上被激活。因此,通過引腳 6 來自主機的信號將根據(jù) A1 和 A0 連接到引腳 17、18、19 和 20 之一。塊 3L11、3L12、3L13 和 2L0 用于構(gòu)建 2 位解復(fù)用器,而塊 4L0、3L6 和 2L1 用于構(gòu)建 2 位復(fù)用器,從而實現(xiàn)雙向通信。
圖 6:SCL 線路復(fù)用器設(shè)計
表 1:選擇輸入狀態(tài)
SLG46826 具有雙電源 V DD和 V DD2,這允許設(shè)計添加電平轉(zhuǎn)換作為多路復(fù)用器電路的另一個功能。引腳 3、6 和 7 由 V DD供電,而引腳13、15、16、17、18、19和 20 由 V DD2供電。因此,可以將此復(fù)用器電路用作通道 1、2、3 的電平轉(zhuǎn)換電路,而無需通道 0。可以從項目信息中選擇所需的電壓(V DD和 V DD2)。
電平轉(zhuǎn)換功能
表 2:已實現(xiàn)多路復(fù)用器的 GreenPAK 引腳圖
結(jié)果
為確保設(shè)計按預(yù)期工作,該設(shè)計置于真實場景中:控制四個屏幕 (I 2 C-LCD),所有屏幕均具有相同的靜態(tài) I 2 C 地址。所有通信都來自一個主設(shè)備,在這種情況下,是一個 Arduino 板。已經(jīng)為 Arduino 板編寫了一個程序,它可以作為主機運行,并通過 I 2 C 協(xié)議在每個屏幕上打印不同的短語。屏幕通過 I 2 C 多路復(fù)用器電路和 Arduino 數(shù)字輸出在總線上互換,以控制 A0 和 A1。在每個打印指令之前,總線在屏幕之間多路復(fù)用。圖 7 描述了實施后的屏幕輸出。
圖 7:實施后的 I2C-LCD 輸出
審核編輯:湯梓紅
評論
查看更多