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