I2C總線(xiàn)在單片機上的實(shí)現
隨著(zhù)大規模集成電路技術(shù)的發(fā)展,把CPU和一個(gè)單獨工作系統所必需的ROM、RAM、I/O端口、A/D、D/A等外圍電路集成在一個(gè)單片內而制成的單片機或微控制器愈來(lái)愈方便。目前,世界上許多公司生產(chǎn)單片機,品種很多。其中包括各種字長(cháng)的CPU,各種容量的ROM、RAM以及功能各異的I/O接口電路等等,但是,單片機的品種規格仍然有限,所以只能選用某種單片機來(lái)進(jìn)行擴展。擴展的方法有兩種:一種是并行總線(xiàn),另一種是串行總線(xiàn)。由于串行總線(xiàn)的連線(xiàn)少,結構簡(jiǎn)單,往往不用專(zhuān)門(mén)的母板和插座而直接用導線(xiàn)連接各個(gè)設備。因此,采用串行線(xiàn)可大大簡(jiǎn)化系統的硬件設計。PHILIPS公司早在十幾年前就推出了 I2C串行總線(xiàn),利用該總線(xiàn)可實(shí)現多主機系統所需的裁決和高低速設備同步等功能。因此,這是一種高性能的串行總線(xiàn)。
1 I2C總線(xiàn)的硬件結構
I2C串行總線(xiàn)一般有兩根信號線(xiàn),一根是雙向的數據線(xiàn)SDA,另一根是時(shí)鐘線(xiàn)SCL。所有接到I2C總線(xiàn)設備上的串行數據SDA都接到總線(xiàn)的SDA上,各設備的時(shí)鐘線(xiàn)SCL接到總線(xiàn)的SCL上。典型的I2C總線(xiàn)結構如圖1所示。
為了避免總線(xiàn)信號的混亂,要求各設備連接到總線(xiàn)的輸出端時(shí)必須是開(kāi)漏輸出或集電極開(kāi)路輸出。設備與總線(xiàn)的接口電路如圖2所示。設備上的串行數據線(xiàn) SDA接口電路應該是雙向的,輸出電路用于向總線(xiàn)上發(fā)送數據,輸入電路用于接收總線(xiàn)上的數據。而串行時(shí)鐘線(xiàn)也應是雙向的,作為控制總線(xiàn)數據傳送的主機,一方面要通過(guò) SCL輸出電路發(fā)送時(shí)鐘信號,另一方面還要檢測總線(xiàn)上的SCL電平,以決定什么時(shí)候發(fā)送下一個(gè)時(shí)鐘脈沖電平;作為接受主機命令的從機,要按總線(xiàn)上的SCL 信號發(fā)出或接收SDA上的信號,也可以向SCL線(xiàn)發(fā)出低電平信號以延長(cháng)總線(xiàn)時(shí)鐘信號周期??偩€(xiàn)空閑時(shí),因各設備都是開(kāi)漏輸出,上拉電阻Rp使SDA和 SCL線(xiàn)都保持高電平。任一設備輸出的低電平都將使相應的總線(xiàn)信號線(xiàn)變低,也就是說(shuō):各設備的SDA是“與”關(guān)系,SCL也是“與”關(guān)系。
總線(xiàn)對設備接口電路的制造工藝和電平都沒(méi)有特殊的要求(NMOS、CMOS都可以兼容)。在I2C總線(xiàn)上的數據傳送率可高達每秒十萬(wàn)位,高速方式時(shí)在每秒四十萬(wàn)位以上。另外,總線(xiàn)上允許連接的設備數以其電容量不超過(guò)400pF為限。
評論