<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 用I2C總線擴(kuò)展I/O總線

          用I2C總線擴(kuò)展I/O總線

          作者: 時(shí)間:2012-02-01 來源:網(wǎng)絡(luò) 收藏
            在需要監(jiān)測(cè)多種輸入信號(hào)或者控制多種輸出信號(hào)的系統(tǒng)應(yīng)用,有時(shí)需要將這些信號(hào)線直接連接到微處理器引腳,用軟件實(shí)現(xiàn)監(jiān)測(cè)和控制。但這種方法可能需要使用很多微處理器引腳。

            為了減少使用微處理器引腳,有一個(gè)辦法就是通過膠合邏輯接口實(shí)現(xiàn)監(jiān)測(cè)和控制信號(hào)線與微處理器通訊。但開發(fā)這種系統(tǒng)很麻煩,也很費(fèi)時(shí),因?yàn)樾枰钠骷?、連線更多、代碼編寫也更復(fù)雜。

            本文給出了監(jiān)測(cè)和控制多外圍設(shè)備信號(hào)的一個(gè)好方案。采用該方案可訪問并行總線并與各種電子器件接口,具有簡(jiǎn)單而且成本低的優(yōu)點(diǎn)。該方法基于工業(yè)標(biāo)準(zhǔn)的PCF8574和PCF8574A器件,這些器件具有不同的I2C地址。本文稱這些器件為擴(kuò)展器,討論其差異時(shí),用器件名代替。

            擴(kuò)展器有一條兩線I2C通訊總線,可與I2C主機(jī)接口進(jìn)行雙向數(shù)據(jù)傳輸。

            線由兩條信號(hào)線和一條地線組成,信號(hào)線為一條雙向串行數(shù)據(jù)(SDA)線和一條雙向串行時(shí)鐘(SCL)線。SDA和SCL通過上拉電阻連接到正電源,總線空閑時(shí),這兩條數(shù)據(jù)線都被拉高。

            連接到線上的各器件地址是惟一的,根據(jù)器件實(shí)現(xiàn)功能不同,可以分別作為接收器和(或)發(fā)送器使用。擴(kuò)展器地址可設(shè)置為惟一的7位地址,PCF8574地址的前4位為0100,PCF8574A地址的前4位為0111。低3位由器件的A2、A1和A0引腳確定。因此,器件的全部惟一地址由A2,A1,和A0引腳確定。表中給出了PCF8574和PCF8574A各種不同的地址設(shè)置。

            器件的設(shè)置惟一地址的能力使得在同一線上可連接8個(gè)的PCF8574和8個(gè)PCF8574A。因各器件I/O引腳有8個(gè),如果使用PCF8574和PCF8574A,用一根I2C總線可控制128個(gè)I/O。

            I2C與擴(kuò)展器之間的通訊由主機(jī)控制,主機(jī)發(fā)出需要通訊的從器件地址。地址字節(jié)的第一部分是4位地址碼,對(duì)于PCF8574,為0100;對(duì)PCF8574A,為0111。該地址代碼后是3個(gè)片選位(A2,A1,和A0),片選位可選擇訪問總線上多達(dá)8個(gè)PCF8574和8個(gè)PCF8574A中的一個(gè)。地址字節(jié)的片選位必須與對(duì)應(yīng)A2,A1,和A0引腳的邏輯電平一致。圖為使用8個(gè)PCF8574和8個(gè)PCF8574A控制和監(jiān)測(cè)多達(dá)128個(gè)I/O的電路。



          關(guān)鍵詞: I2C總 IO總線

          評(píng)論


          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();