精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

接口1-Wire USB適配器與安卓

星星科技指導員 ? 來源:ADI ? 作者:ADI ? 2023-02-20 09:29 ? 次閱讀

本應用筆記詳細介紹了如何連接DS9490R、溫度記錄儀iButton器件和AndroidUSB On-the-Go(OTG)。審查每個部分之間的通信協議。我們回顧數據手冊信息以及如何將其應用于終端系統。演示示例代碼的示例 Android 應用程序也可供下載

介紹

睤。智能手機無處不在。智能手機不僅僅是一部電話,而是一臺功能強大的計算機,可以放在口袋里。由于智能手機中可用的計算能力和傳感器不斷增加,現在使用該手機作為其他設備的接口是切實可行的。本文介紹如何使用 Android 智能手機上的 USB 端口與沒有計算機系統的從屬設備進行通信。此處的示例使用1-Wire總線通過USB從Android到Thermochron iButton溫度記錄器進行通信。????

系統布局

此應用程序的關鍵是智能手機上的USB端口。當智能手機使用USB移動(OTG)收發器時,USB主機功能可以通過其他從設備實現,例如鼠標,閃存驅動器,鍵盤或此處的Thermochron。最新版本的 Android 應用程序編程接口 (API) 在應用程序級別支持 USB 主機模式。此功能允許最終用戶安裝與 USB 外圍設備“對話”的應用程序,而無需在用戶的智能手機上生根或安裝特殊驅動程序。

系統框圖如圖1所示。安卓智能手機必須使用 USB OTG 收發器。通常,手機連接到計算機并充當USB從站,但USB OTG收發器允許將手機轉換為USB主站。這種角色轉換需要一根特殊的OTG電纜來提供USB A型端口,并發出USB從站連接到智能手機的信號

此應用程序是一個主從系統,以Android智能手機為主,Thermochron數據記錄器作為從機。系統使用USB轉1線/iButton(DS9490R)適配器將智能手機與數據記錄器橋接。使用網絡電纜/插座DS1402D-DR8作為1-Wire總線,只需要一條數據線。數據記錄器是iButton溫度記錄器(DS1921G)。

poYBAGPyzPuAPpDZAAA6xRetAkY441.png?imgver=1


圖1.系統框圖使用DS9490R 1-Wire適配器作為智能手機和應用器件之間的接口;DS1402D-DR8總線電纜連接到應用器件,此處為DS1921G溫度時線iButton。

1-Wire總線的重要作用

1-Wire總線是單主系統與多從系統之間的接口。1-Wire輸出為漏極開路,采用類似于I2C. 一些1-Wire從機可以由1-Wire總線寄生供電,當不發生通信時,該總線為從器件中的內部電容器充電。每個1-Wire從器件還具有一個工廠光刻的、唯一的64位注冊號,因此每個從器件都可以在總線上輕松識別和監控。

1-Wire交易序列(圖2)由復位脈沖(trst) 發送給奴隸。復位脈沖通過按住1-Wire總線預定的時間段,使所有從機進入已知狀態。接下來,從機通過存在檢測脈沖(tPD),在主站釋放總線后將其拉下。

pYYBAGPyzPyABPEdAAAIhEOg45o245.png?imgver=1


圖2.1線時序圖。

復位后,從設備可以接受針對每個從設備的各種ROM命令,這些命令由其注冊號標識。匹配ROM的命令僅激活具有正確標識注冊的單個從設備。搜索ROM用于發現總線上所有從站的注冊號。因此,盡管我們在這里只顯示一個從器件,但該應用可以有多個1-Wire兼容的從器件。

一旦選擇了特定的ROM命令,那么設備特定的命令就可以由主節點發出,在我們的例子中是Android。使用像Thermochron這樣的溫度記錄器作為從站,主機的命令可能涉及寫入或讀取其暫存器或存儲器,或轉換溫度。

1-Wire接口沒有時鐘線,因此通信被分成多個時隙(t槽),每個都攜帶一點信息。在時隙開始時,主站會短暫地拉下總線以指示位的開始。傳輸零點時,主站或從站繼續保持總線低電平。傳輸一個時,主站或從站釋放總線。主站或從站按規定的時間讀取總線(t樣本) 之后,母版指示時隙的開始。

與1線適配器的USB通信

DS9490R是1線轉USB適配器,具有四個USB端點:控制、中斷、批量輸入()和批量輸出()。通常,控制端點用于向1-Wire適配器發送命令并設置傳輸類型。批量輸入/輸出用于數據傳輸,中斷終結點用于接收狀態寄存器和返回消息等時間敏感信息。epINepOUT

使用安卓作為 USB 主機

這里提出的設計是有先例的。Android API 從版本 3.1 開始,支持 USB 主機模式。曼努埃爾·迪·塞爾博1通過USB將Arduino微控制器板與Android手機連接。我們的應用修改了DiCerbo的工作,將基本概念擴展到DS9490R USB轉1-Wire適配器,并將1-Wire適配器與Thermochron配合使用,而不是微控制器

DiCerbo示例代碼是該項目的基礎。該代碼首先請求用戶允許訪問連接到Android智能手機的USB設備。然后,程序搜索供應商和設備 ID,并設置 USB 終結點以進行通信。該代碼提供 ,用于執行批量和控制傳輸的 USB 設備連接;它為批量輸入和 .這與所有系統用于初始化USB并將低級USB命令寫入從站的基本設置相同。

現在我們將演示如何使用Android在溫度上執行溫度轉換并讀取溫度結果。每個事務步驟(表 1)都以 開頭,后跟選擇從設備,然后是最終特定于設備的命令。

表 1.1-Wire主機對溫度數據記錄器執行的命令

1線復位 匹配光盤 轉換溫度
1線復位 匹配光盤 讀存儲器/寄存器

1-Wire復位通過USB控制傳輸執行,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)

控制傳輸用于啟動 、 或 。參數在數據手冊中描述。稍后,我們將說明如何使用此函數。

批量傳輸用于讀/寫內存。這里的端點將是 或 ,取決于我們是讀取數據還是寫入數據。終結點緩沖區存儲要發送的數據,或者為空以存儲接收的數據。長度是接收或發送的字節數。超時是以毫秒為單位的 USB 超時設置。

// Performs a bulk transaction on the given endpoint.
int bulkTransfer(UsbEndpoint endpoint, byte[] buffer, int length, int timeout)

此處顯示了將轉換溫度命令 (0x44) 發送到溫度時線的代碼。如前所述,第一行1-Wire復位通過控制傳輸發送(表1)。這是 、 ,它轉換溫度序列。

// 1-Wire 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行中,匹配訪問控制傳輸在0-Wire總線上發送一個、55x1、匹配訪問ROM命令,后跟所需從站的ROM注冊號。1-Wire Reset2索引參數設置為 0x55。match 訪問命令要求用戶將注冊號預加載到 ,如代碼的第 2 行和第 3 行所示。功能參數在DS2490數據資料中描述。

溫度小時管的數據表將0x44標識為開始溫度轉換的代碼。(表2)。轉換溫度命令通過使用塊 I/O 操作寫入0x44來執行。對于塊 I/O 操作,將輸出數據寫入,如上面的第 6 行所示。然后,第 7 行中的控制傳輸執行塊 I/O 命令。epOUT

表 2.溫度存儲器和控制命令(使用批量 I/O)

內存/控制命令 命令代碼 描述
讀內存 0xF0 從內部寄存器讀取數據。按照寄存器地址的命令進行操作,首先使用 LSb。繼續為每個字節讀取0xff虛擬數據。
轉換溫度 0x44 開始溫度轉換。

下面的代碼顯示了通過USB批量I/O傳輸讀取溫度寄存器數據的順序。溫度時線的讀取存儲器命令代碼0xF0(請參閱表 2)。接下來是 0x0211 的目標寄存器地址 (TA),該地址具有只讀訪問權限,并分為兩個字節(第 8 行)。在1-Wire總線上寫入和發送的數據全部環回主機,因為總線僅由一根線組成。然后,主站需要將虛擬數據(0xff)寫入總線。從機響應并覆蓋0xff數據,因為如前所述,1-Wire是一條漏極開路總線。凈效應是數據與0xff的 AND。

這一系列命令被放到1-Wire總線(第9行和第10行)上,控制傳輸通過發送命令來執行命令。回讀數據位于 USB 終結點 中。這是在第 12 行的批量傳輸命令復制到的。然后將生成的原始溫度代碼轉換為第 13 行的相應溫度值。epOUTepINtempdata

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

我們的安卓應用程序示例

示例 Android 應用程序如圖 3 所示。當用戶運行程序并按“枚舉”按鈕時,將顯示一個屏幕,詢問訪問 USB 設備的權限。用戶點擊確定后,應用程序將執行搜索并在下拉菜單中列出所有從站的64位注冊號。當用戶選擇特定的注冊號時,應用程序將執行上述例程,并顯示來自溫度時線的實時溫度。枚舉按鈕和注冊號的選擇連接到生成一個 .這些任務是完成請求的操作并在完成后更新用戶界面 (UI) 的線程。這些任務不會在 UI 線程中執行,以防止它在等待 iButton 響應時凍結。

在最終應用中,代碼被抽象為一般的1-Wire操作,如、、、、和。此外,這些命令一起可以進一步抽象為 iButton 函數,例如 和 。這允許調用正確的函數。

poYBAGPyzP-AK-o5AAG3MKeHbv4545.png?imgver=1

圖3.Android 應用程序,USB 權限(左)。特定溫度時線iButton的溫度測量由其注冊號(右)標識。

示例應用包含用于將用戶交互(如按下按鈕)鏈接到1-Wire從機執行命令的UI代碼。除DS1921G溫度時線外,該應用還支持iButton溫度記錄儀(DS1922L/DS1922T)和iButton濕度記錄器(DS1923)。如圖3所示,每個器件的注冊號分為三個字段:家族代碼、序列號和循環冗余校驗(CRC)。可以從每個注冊號讀取家族代碼,以確定確切的設備型號。

結論

此示例應用程序的代碼是使用 Eclipse 編程的,可供下載。訪問整個項目文件后,可以輕松瀏覽和修改源代碼。項目代碼使用抽象函數間接使用低級 USB 命令。本文末尾的一般參考資料有助于理解Android USB API和1-Wire命令。這些資源廣泛用于開發此示例應用程序。可能的修改可能會改變應用,使其可與其他5V 1-Wire從器件(如存儲器)配合使用,或啟用其他iButton功能。可定制的選項很多,最終結果取決于設計人員的系統要求。

審核編輯:郭婷

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 智能手機
    +關注

    關注

    66

    文章

    18331

    瀏覽量

    178730
  • usb
    usb
    +關注

    關注

    60

    文章

    7773

    瀏覽量

    262389
  • 適配器
    +關注

    關注

    8

    文章

    1889

    瀏覽量

    67586
收藏 人收藏

    評論

    相關推薦

    基于DS2432的USB1-Wire總線適配器的設計

    。  -Wire測量網絡的實現需要與PC主機相結合,所以在1-Wire總線組成的測量網絡中,網絡適配器是必不可少的,它擔負著主機監控單元與網絡節點之間數據傳輸的重要任務。USB
    發表于 07-11 07:24

    1-Wire接口

    1-Wire接口要適應12V供電的芯片有什么?
    發表于 11-12 11:20

    Ginkgo USB-CAN接口適配器

    、OpenBSD、FreeBSD、Solaris產品包含:- Ginkgo USB-CAN接口適配器 x 1- USB數據線 x
    發表于 10-09 15:09

    可編程USB轉串口適配器UART

    /CAN/1-Wire 適配器 USB2S(USB To Serial ports)是多種數字接口物理層協議轉發器, 自帶強大靈活的 S2S
    發表于 08-06 06:35

    DS9097U RS232至1-Wire接口適配器

    DS9097U是一款成熟的RS232至1-Wire?的接口適配器,完成RS232電平轉換,有源產生1-Wire通信信號。配合對應的TMEX軟件驅動器,該
    發表于 06-14 11:53 ?2531次閱讀
    DS9097U RS232至<b class='flag-5'>1-Wire</b><b class='flag-5'>接口</b><b class='flag-5'>適配器</b>

    USB充電用高效AC適配器USB充電用高效AC適配器

    USB充電用高效AC適配器USB充電用高效AC適配器
    發表于 09-15 14:29 ?23次下載
    <b class='flag-5'>USB</b>充電用高效AC<b class='flag-5'>適配器</b><b class='flag-5'>USB</b>充電用高效AC<b class='flag-5'>適配器</b>

    可編程開發板USB轉串口適配器USB2S用戶手冊

    可編程USB轉UART/I2C/SMBusS/SPI/CAN/1-Wire適配器USB2S(USB To Serial ports)是多種數
    發表于 05-30 16:51 ?2次下載

    可編程USB轉串口適配器UART/USB2S用戶手冊

    可編程 USB 轉 UART/I2C/SMBus/SPI/CAN/1-Wire 適配器 USB2S(USB To Serial ports)
    發表于 06-22 15:01 ?0次下載

    I BUS適配器BMW音頻

    電子發燒友網站提供《I BUS適配器BMW音頻.zip》資料免費下載
    發表于 08-05 10:01 ?0次下載
    I BUS<b class='flag-5'>適配器</b>BMW<b class='flag-5'>安</b><b class='flag-5'>卓</b>音頻

    可編程USBWire適配器USB2S結構尺寸及電壓設置

    可編程USB轉 UART/I2C /SMBusS/SPI/CAN/1 -Wire適配器USB2S結構尺寸及電壓設置 1.1 外形尺寸 外形尺
    的頭像 發表于 08-24 09:21 ?1046次閱讀
    可編程<b class='flag-5'>USB</b>轉  <b class='flag-5'>Wire</b><b class='flag-5'>適配器</b><b class='flag-5'>USB</b>2S結構尺寸及電壓設置

    可編程 USB 轉串口適配器開發板的詳細接口與功能

    可編程 USB 轉串口適配器開發板的詳細接口與功能 可編程 USB 轉 UART/I2C/SMBus/SPI/CAN/1-Wire
    的頭像 發表于 08-25 09:31 ?1024次閱讀
    可編程 <b class='flag-5'>USB</b> 轉串口<b class='flag-5'>適配器</b>開發板的詳細<b class='flag-5'>接口</b>與功能

    可編程USB轉串口適配器開發板介紹 UART轉SPI應用

    USB 轉串口適配器開發板? 1.1 GD25QxxFLASH 芯片? 注意:1-Wire 接口與 SPI 接口不可同時連接被測芯片。?
    的頭像 發表于 09-08 13:16 ?1209次閱讀
    可編程<b class='flag-5'>USB</b>轉串口<b class='flag-5'>適配器</b>開發板介紹  UART轉SPI應用

    可編程USB轉串口適配器接口與功能介紹

    可編程USB 轉 UART/I2C/SMBus/SPI/CAN/1-Wire 適配器 USB2S(USB To Serial ports)是
    的頭像 發表于 11-18 14:42 ?879次閱讀

    基于LPC2292的CAN總線USB接口適配器的設計

    電子發燒友網站提供《基于LPC2292的CAN總線USB接口適配器的設計.pdf》資料免費下載
    發表于 10-09 16:53 ?1次下載
    基于LPC2292的CAN總線<b class='flag-5'>USB</b><b class='flag-5'>接口</b><b class='flag-5'>適配器</b>的設計

    請問1-Wire網線如何連接USB適配器

    ADI/Maxim的 DS1402 系列1-Wire網絡電纜提供與任何USB、串行或并行端口1-Wire適配器的連接。經常有客戶詢問DS1402如何連接
    的頭像 發表于 03-28 11:39 ?649次閱讀
    請問<b class='flag-5'>1-Wire</b>網線如何連接<b class='flag-5'>USB</b><b class='flag-5'>適配器</b>?