<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

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

利用Android智能手機及USB接口與1-Wire從設備通信

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

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

本文引用地址:http://dyxdggzs.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ǎng)問(wèn)傳輸控制發(fā)送一個(gè)1-Wire Reset,0x55,匹配訪(fǎng)問(wèn)ROM命令在1-Wire總線(xiàn)上,接著(zhù)是相應從機的ROM編號2。檢索參數設置為0x55。這個(gè)匹配訪(fǎng)問(wèn)命令希望用戶(hù)把編號預裝載至epOUT,如第2行和第3行代碼所示。函數參數的說(shuō)明請參考DS2490數據資料。

  的數據資料將0x44作為開(kāi)始溫度轉換的代碼。表2. 溫度轉換命令0x44的寫(xiě)通過(guò)I/O塊操作來(lái)執行。I/O塊功能是向epOUT寫(xiě)輸出數據,如上面第6行代碼所示。然后第7行為控制傳輸為執行I/O塊命令。

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

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

  // 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;

  結論

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

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


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


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

上一頁(yè) 1 2 下一頁(yè)

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>