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

          新聞中心

          EEPW首頁 > 網(wǎng)絡(luò)與存儲(chǔ) > 設(shè)計(jì)應(yīng)用 > 利用Android智能手機(jī)及USB接口與1-Wire從設(shè)備通信

          利用Android智能手機(jī)及USB接口與1-Wire從設(shè)備通信

          —— (5月刊)利用Android智能手機(jī)及USB接口與1-Wire從設(shè)備通信
          作者:Wilson Tang 時(shí)間:2014-05-04 來源:電子產(chǎn)品世界 收藏

            以下為發(fā)送至的轉(zhuǎn)換溫度命令(0x44)。在第1行中,如上所述(表1),首先由控制傳輸發(fā)送復(fù)位。這是 Reset、Match ROM及轉(zhuǎn)換溫度序列。

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

            // Reset

            1 conn.controlTransfer(0x40, 0x01, 0x0C4B, 0x0001, null, 0x0000, 0);

            // Match ROM, where romid is the iButton’s registration number

            2 romid = new byte[] {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};

            3 conn.bulkTransfer(epOUT, romid, 8, 0);

            4 conn.controlTransfer(0x40, 0x01, 0x0065, 0x55, null, 0, 0);

            // Convert Temperature for DS1921G

            5 data = new byte[]{0x44};

            6 conn.bulkTransfer(epOUT, data, data.length, 0);

            7 conn.controlTransfer(0x40, 0x01, 0x1075, data.length, null, 0, 0);

            上面第4行中,匹配訪問傳輸控制發(fā)送一個(gè)1-Wire Reset,0x55,匹配訪問ROM命令在1-Wire總線上,接著是相應(yīng)從機(jī)的ROM編號2。檢索參數(shù)設(shè)置為0x55。這個(gè)匹配訪問命令希望用戶把編號預(yù)裝載至epOUT,如第2行和第3行代碼所示。函數(shù)參數(shù)的說明請參考DS2490數(shù)據(jù)資料。

            的數(shù)據(jù)資料將0x44作為開始溫度轉(zhuǎn)換的代碼。表2. 溫度轉(zhuǎn)換命令0x44的寫通過I/O塊操作來執(zhí)行。I/O塊功能是向epOUT寫輸出數(shù)據(jù),如上面第6行代碼所示。然后第7行為控制傳輸為執(zhí)行I/O塊命令。

            以下代碼為利用USB的 I/O模塊讀取溫度寄存器數(shù)據(jù)的步驟。讀存儲(chǔ)器的命令碼為0xF0 (見表2)。在此之后為目標(biāo)寄存器地址(TA) 為0x0211,只讀,分為兩個(gè)字節(jié)(第8行)。由于1-Wire總線只有單根數(shù)據(jù)線,所以總線上寫及發(fā)送的數(shù)據(jù)將全部環(huán)回到主機(jī)。然后主機(jī)需要向總線寫假數(shù)據(jù)(0xff)。如之前所述,由于1-Wire為開漏總線,所以從機(jī)將對0xff進(jìn)行響應(yīng)并修改該數(shù)據(jù)。最終效果就是數(shù)據(jù)和0xff的“與”的結(jié)果。

            這些命令被送至epOUT,傳輸控制函數(shù)將執(zhí)行發(fā)送至1-Wire總線的命令 (第9行和第10行)。讀回的數(shù)據(jù)將位于USB端點(diǎn)epIN,利用第12行的批傳輸命令復(fù)制到tempdata。然后在第13行中,將最終的原始溫度編碼轉(zhuǎn)換為對應(yīng)的溫度值。

            // 1-Wire Reset and Match ROM

            // (omitted) ...

            // Read Temperature Register/Memory Command

            // Read Memory, TA2, TA1, dummy data

            8 command = new byte[] {(byte)0xf0, 0x11, 0x02, (byte)0xff, (byte)0xff};

            9 conn.bulkTransfer(epOUT, command, command.length, 0);

            10 conn.controlTransfer(0x40, 0x01, 0x1075, command.length, null, 0, 0);

            // Return Data from input endpoint

            11 byte[] tempdata = new byte[5];

            12 conn.bulkTransfer(epIN, tempdata, 5, 0);

            // Temperature calculation

            13 temperature = (int)(tempdata[4] & 0xff)/2.0 – 40;

            結(jié)論

            本示例的應(yīng)用程序代碼采用Eclipse編寫,可供下載。提供所有的文件,源代碼查看和修改容易。這個(gè)程序的代碼利用抽象函數(shù)間接使用底層的USB命令。本文最后的一般性參考有助于理解 USB API和1-Wire命令。這些資源開發(fā)類似的產(chǎn)品廣泛使用。經(jīng)過適當(dāng)?shù)男薷?,可使該?yīng)用程序支持其它5V 1-Wire從設(shè),例如存儲(chǔ)器,或支持附加iButton特性??啥ㄖ频倪x項(xiàng)很多,最終取決于設(shè)計(jì)者的系統(tǒng)要求。

          數(shù)字通信相關(guān)文章:數(shù)字通信原理


          通信相關(guān)文章:通信原理


          上拉電阻相關(guān)文章:上拉電阻原理

          上一頁 1 2 下一頁

          評論


          相關(guān)推薦

          技術(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); })();