今天的文章來(lái)源于網(wǎng)友問(wèn)答,我在群里給解答了一下,關(guān)于 I2C 電平轉(zhuǎn)換,我之前寫過(guò)一篇串口電平轉(zhuǎn)換,其實(shí)是一個(gè)東西,然后今天我再簡(jiǎn)單寫一下。
之前的文章:3.3V 和 5V 串口通信電平轉(zhuǎn)換電路
聊天記錄中給出的原圖就是下面這張。
?
1. 我首先問(wèn)了一下,VDD_SN 的電壓,這個(gè)電壓肯定是要小于右邊的 3.3V 的,因?yàn)槭裁茨兀?/p>
VDD_SN 高于 3.3V,NMOS Q13 和 Q14 在關(guān)閉狀態(tài)時(shí),左邊高于 3.3V 的電壓就會(huì)通過(guò) Q13 和 Q14 的體二極管到達(dá) TP_SCL 和 TP_SDA 上,使其電壓高于 3.3V,就有損壞單片機(jī) IO 口的風(fēng)險(xiǎn)。
2. 這個(gè)電路的工作原理是什么呢?
SN2_SCL=0V,Q13 導(dǎo)通,TP_SCL=0;
SN2_SCL=1.8V,Q13 截止,TP_SCL=3.3V;能正常完成電平轉(zhuǎn)換過(guò)程,SDA 信號(hào)是同樣的道理。
3. 然后我又提到 MOS 管的開(kāi)關(guān)時(shí)間,原因是什么呢?
左邊到右邊的數(shù)據(jù)傳輸,會(huì)有一個(gè)時(shí)間差,這個(gè)時(shí)間差一方面受到 NMOS 開(kāi)關(guān)時(shí)間的影響,另一方面是總線容抗+上拉電阻(RC 時(shí)間常數(shù))的影響。
假如 I2C 的速率是 400KHz,那傳輸 1bit 數(shù)據(jù)的時(shí)間就是 2.5us,如果 MOS 管的關(guān)閉時(shí)間參數(shù)大,加上 RC 較大,會(huì)出現(xiàn)如下比較差的上升沿波形,在這 2.5us 之內(nèi),1 位數(shù)據(jù)的傳輸可能無(wú)法滿足時(shí)序要求,導(dǎo)致通信失敗。
?
來(lái)自于嵌入式客棧 ? 綜上所述,最好選擇開(kāi)關(guān)時(shí)間小的 MOS 管,一般都是 ns 級(jí)別,其次還要考慮上拉電阻的選擇。I2C 的上拉電阻如何選擇,在之前的文章中,我也有提到。 圖中的型號(hào)是 SI2302,看了一下 SPEC,參數(shù)還是比較小的。
MOS 開(kāi)關(guān)時(shí)間不光要看 switching 參數(shù),最好也看一下 Qg、Qgs 和 Qgd,參數(shù)的介紹,我在之前的文章也有寫到。 然后看了一下開(kāi)啟閾值,也符合要求。
今天的文章內(nèi)容到這里就結(jié)束了,希望對(duì)你有幫助,我們下一期見(jiàn)。