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

          新聞中心

          EEPW首頁 > 嵌入式系統 > 設計應用 > 在同一條I2C總線上掛接多個DS1859器件

          在同一條I2C總線上掛接多個DS1859器件

          作者: 時間:2016-12-13 來源:網絡 收藏
          引言


          DS1859雙路、溫控電阻不允許用戶通過外部引腳改變其I2C從地址。相反,器件為主存儲器提供可編程I2C從地址。在具體應用中,一條I2C總線可能需要接多個DS1859器件。由于所有DS1859出廠時的缺省I2C從地址都相同,因此,這些器件與I2C總線連接時,必須改變其中一個或多個器件的從地址。

          本應用筆記闡述了同一條I2C總線上接兩個DS1859時,如何改變其中一個器件的I2C從地址。這一方法可推廣應用于掛接多個器件的情況。本文假定用戶可根據需要將DS1859的WPEN引腳轉換為邏輯高電平或邏輯低電平。

          本文引用地址:http://www.ex-cimer.com/article/201612/329195.htm

          DS1859的獨特之處還在于每個器件有兩個從地址,其中一個可編程地址用來訪問主存儲器,另一個固定地址(A0h)用來訪問輔助存儲器。在本文的最后將討論如何訪問輔助存儲器。

          在同一條I2C總線上掛接兩個DS1859

          當同一條I2C總線上接兩個DS1859時,必須改變其中一個器件的從地址,另一個器件則保持其缺省地址(A2h)不變??赏ㄟ^以下步驟來實現這一點。

          將一個DS1859 (器件1)的WPEN引腳驅動至信號地。

          將另一個DS1859 (器件2)的WPEN引腳驅動至高電平。

          將器件2的MPEN位置為高(從器件地址A2h,表01h,寄存器89h,第2位)。該設置對兩個器件的MPEN位都有效,但是由于器件1的WPEN引腳接地,因此只有器件2被寫保護。該步驟之后所有對從地址A2h的寫操作都僅對器件1產生影響。
          將器件1的從地址設置為任何期望的數值(00h - FEh,A2h除外)。進行編程設置時,采用從地址A2h,表01h,字節(jié)8Ch。

          將器件1的ADFIX位置為高(從地址A2h,表01h,寄存器89h,第4位)。

          器件1的從地址即配置為第5步所指定的地址。

          然后WPEN引腳可被驅動至需要的邏輯電平,此時可以將MPEN位恢復至缺省值(0b)。

          系統中連接多個DS1859

          上述步驟也適用于同一條I2C總線接多個DS1859的情況。此時,除了某個從地址需要改變的器件外,所有器件均被置為寫保護。

          訪問輔助存儲器

          用戶應該注意,只有主器件地址能被改變。而所有器件的輔助存儲器地址不能改變,仍然保持為A0h。I2C總線上只能有一個器件通過地址A0h訪問輔助存儲器。然而,用戶可置位其它器件的ADEN位,并通過主器件地址及表00h來訪問其它器件的輔助存儲器。

          結論

          如果I2C總線上連接了多個DS1859 (具有相同的缺省I2C地址),并且這些器件已焊接在系統PCB上時,本應用筆記對如何改變這些器件的I2C從地址進行了闡述。



          評論


          技術專區(qū)

          關閉
          看屁屁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); })();