<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從設備通信

作者:Wilson Tang 時(shí)間:2014-05-04 來(lái)源:電子產(chǎn)品世界 收藏

  引言

本文引用地址:http://dyxdggzs.com/article/246299.htm

  本文介紹如何利用安卓®智能手機上的USB口與從設備通信,而無(wú)需計算機系統。文中給出的例子使用手機上的USB端口通過(guò)®總線(xiàn)與® iButton®溫度記錄器通信。

  系統布局

  這種應用的關(guān)鍵是智能手機上的USB接口。當智能手機使用USB OTG時(shí),那么就可利用其作USB主設備來(lái)管理其他USB從設備,例如麥克風(fēng)、閃存、鍵盤(pán),或者本例中的。最新版本的應用程序接口(API)支持USB在應用層為主的模式。該功能使用戶(hù)能夠安裝與USB外設“對話(huà)”的應用程序,無(wú)需刷機(Root)或在用戶(hù)的智能手機上安裝特殊驅動(dòng)。

  系統方框圖如圖1所示。Android智能手機必須使用USB OTG。一般情況下,電話(huà)連接至計算機是作為USB從設備,但USB OTG允許將其轉換為USB主設備。這種角色轉換要求特殊的OTG電纜提供A型USB端口,并指示USB從機已連接至智能手機。

  該應用為主/從系統,Android智能手機作為主機,數據記錄器作為從機。系統采用一個(gè)USB和一個(gè)/iButton把智能手機和數據記錄器橋接起來(lái)。利用網(wǎng)線(xiàn)中的一根數據線(xiàn)和接頭作為總線(xiàn)。數據記錄器為iButton Thermochron。

  1-Wire總線(xiàn)的重要角色

  1-Wire總線(xiàn)是單主和多從系統之間的接口。1-Wire為開(kāi)漏輸出,采用類(lèi)似于I2C的上拉電阻工作。有些1-Wire從機可利用1-Wire總線(xiàn)進(jìn)行寄生供電,在總線(xiàn)不通信時(shí)對從器件中的內部電容充電。每個(gè)1-Wire從機也具有工廠(chǎng)激光刻制的唯一64位編號,所以很容易識別和監測總線(xiàn)上的從機。

  1-Wire傳輸時(shí)序(圖2)包括一個(gè)給從機的復位脈沖(trst)。復位脈沖通將1-Wire總線(xiàn)拉低預定的時(shí)間周期,將全部從機置位成已知的確定狀態(tài)。接著(zhù),從機在主機釋放總線(xiàn)后,利用將總線(xiàn)拉低的在位檢測脈沖(tpd)對主機進(jìn)行應答。

  復位后,從器件根據唯一的自身編號,可接收發(fā)送至從機的各種ROM命令。命令Match ROM將只激活編號正確匹配的某個(gè)從器件。Search ROM命令用于檢測總線(xiàn)上所有從機的編號。因此,盡管這里我們只介紹一個(gè)從機,但可應用于具有多個(gè)兼容的1-Wire從器件。

  在我們這個(gè)Android例子中,某個(gè)ROM命令只要選定,主機即可向每個(gè)具體的從設發(fā)送該命令。將諸如Thermochron這樣的溫度記錄器作為從設備,主機的命令可能包括讀/寫(xiě)其暫存器、存儲器、或轉換溫度。

  1-Wire接口沒(méi)有時(shí)鐘線(xiàn),所以通信分為時(shí)隙(tslot),每個(gè)時(shí)隙承載一個(gè)信息位。在時(shí)隙開(kāi)始,主機將總線(xiàn)短暫拉低,預示數據位將開(kāi)始。當傳輸的是一個(gè)0時(shí),主機或從機會(huì )使總線(xiàn)繼續保持為低電平;傳輸是一個(gè)1時(shí),主機或從機將釋放總線(xiàn)。主機或從機將在主機指示時(shí)隙開(kāi)始后的規定時(shí)間(tsample)讀取總線(xiàn)。

  USB與1-Wire通信

  DS9490R為1-Wire至USB,有四個(gè)USB端點(diǎn):控制、中斷、批輸入(epIN)和批輸出(epOUT)。通常,控制端用于向1-Wire適配器發(fā)送命令,以及配置傳輸類(lèi)型;批輸入/輸出用于數據傳輸;中斷端口接收實(shí)時(shí)敏感的信息,如狀態(tài)寄存器的信息和返回的消息。

  用Android作為USB主設

  此處介紹的設計已有先例。Android API從3.1版開(kāi)始支持USB主模式,Manuel Di Cerbo1曾通過(guò)USB將Arduino®微控制器板與Android電話(huà)連接在一起。我們的應用在DiCerbo的設計上進(jìn)行修改,將基本概念擴展至USB至1-Wire適配器,并且微控制器用1-Wire適配器和Thermochron代替。

  本項目以DiCerbo的示例代碼為基礎。代碼首先詢(xún)問(wèn)用戶(hù)是否允許訪(fǎng)問(wèn)連接至Android智能手記的USB設備。然后程序查詢(xún)制造商和設備ID,并設置用于通信的USB端點(diǎn)。代碼提供給conn,用于批傳輸和控制傳輸的USB設備連接;配置用于批輸入的USB端點(diǎn)epIN及epOUT。這和所有系統中USB初始化及向從機寫(xiě)底層USB命令使用的基本配置沒(méi)什么區別。

  現在,我們演示如何利用Android去實(shí)現讓Thermochron進(jìn)行溫度轉換,并讀取溫度結果。每個(gè)步驟(表1)均以1-Wire復位開(kāi)始,然后利用Match ROM命令選擇從機,最后為給它的執行命令。

  由USB傳輸控制執行1-Wire復位,Android API的控制傳輸函數原代碼如下所示。

  // Performs a control transaction on endpoint zero for this device.

  int controlTransfer(int requestType, int request, int value, int index, byte[] buffer, int length, int timeout)

  傳輸控制用于啟動(dòng)1-Wire Reset、Match ROM或Block I/O。參數說(shuō)明請參見(jiàn)數據資料。隨后,我們將介紹如何使用該函數。

  批數據傳輸用于Match ROM以及讀/寫(xiě)存儲器。此處,端點(diǎn)應為epIN或epOUT,取決于我們讀數據還是寫(xiě)數據。端點(diǎn)緩沖器儲存要發(fā)送的數據,或者為空以?xún)Υ嬉邮諄?lái)的數據,長(cháng)度為接收或發(fā)送的字節數。超時(shí)為USB的超時(shí)設置,單位為毫秒。

  // Performs a bulk transaction on the given endpoint.

  int bulkTransfer(UsbEndpoint endpoint, byte[] buffer, int length, int timeout)

數字通信相關(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>