利用Android智能手机及USB接口与1-Wire从设备通信

来源 :电子产品世界 | 被引量 : 0次 | 上传用户:lihongde313
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  引言
  本文介绍如何利用安卓Android?智能手机上的USB口与从设备通信,而无需计算机系统。文中给出的例子使用Android手机上的USB端口通过1-Wire?总线与Thermochron? iButton?温度记录器通信。
  系统布局
  这种应用的关键是智能手机上的USB接口。当智能手机使用USB OTG收发器时,那么就可利用其作USB主设备来管理其他USB从设备,例如麦克风、闪存、键盘,或者本例中的Thermochron。最新版本的Android应用程序接口(API)支持USB在应用层为主的模式。该功能使用户能够安装与USB外设“对话”的应用程序,无需刷机(Root)或在用户的智能手机上安装特殊驱动。
  系统方框图如图1所示。Android智能手机必须使用USB OTG收发器。一般情况下,电话连接至计算机是作为USB从设备,但USB OTG收发器允许将其转换为USB主设备。这种角色转换要求特殊的OTG电缆提供A型USB端口,并指示USB从机已连接至智能手机。
  该应用为主/从系统,Android智能手机作为主机,Thermochron数据记录器作为从机。系统采用一个USB和一个1-Wire/iButton适配器把智能手机和数据记录器桥接起来。利用网线中的一根数据线和接头作为1-Wire总线。数据记录器为iButton Termochron。
   1-Wire总线的重要角色
  1-Wire总线是单主和多从系统之间的接口。1-Wire为开漏输出,采用类似于I2C的上拉电阻工作。有些1-Wire从机可利用1-Wire总线进行寄生供电,在总线不通信时对从器件中的内部电容充电。每个1-Wire从机也具有工厂激光刻制的唯一64位编号,所以很容易识别和监测总线上的从机。
  1-Wire传输时序(图2)包括一个给从机的复位脉冲(trst)。复位脉冲通将1-Wire总线拉低预定的时间周期,将全部从机置位成已知的确定状态。接着,从机在主机释放总线后,利用将总线拉低的在位检测脉冲(tpd)对主机进行应答。
  复位后,从器件根据唯一的自身编号,可接收发送至从机的各种ROM命令。命令Match ROM将只激活编号正确匹配的某个从器件。Search ROM命令用于检测总线上所有从机的编号。因此,尽管这里我们只介绍一个从机,但可应用于具有多个兼容的1-Wire从器件。
  在我们这个Android例子中,某个ROM命令只要选定,主机即可向每个具体的从设发送该命令。将诸如Thermochron这样的温度记录器作为从设备,主机的命令可能包括读/写其暂存器、存储器、或转换温度。
  1-Wire接口没有时钟线,所以通信分为时隙(tslot),每个时隙承载一个信息位。在时隙开始,主机将总线短暂拉低,预示数据位将开始。当传输的是一个0时,主机或从机会使总线继续保持为低电平;传输是一个1时,主机或从机将释放总线。主机或从机将在主机指示时隙开始后的规定时间(tsample)读取总线。


   USB与1-Wire适配器通信
  DS9490R为1-Wire至USB适配器,有四个USB端点:控制、中断、批输入(epIN)和批输出(epOUT)。通常,控制端用于向1-Wire适配器发送命令,以及配置传输类型;批输入/输出用于数据传输;中断端口接收实时敏感的信息,如状态寄存器的信息和返回的消息。
  用Android作为USB主设
  此处介绍的设计已有先例。Android API从3.1版开始支持USB主模式,Manuel Di Cerbo1曾通过USB将 Arduino?微控制器板与Android电话连接在一起。我们的应用在DiCerbo的设计上进行修改,将基本概念扩展至USB至1-Wire适配器,并且微控制器用1-Wire适配器和Termochron代替。
  本项目以DiCerbo的示例代码为基础。代码首先询问用户是否允许访问连接至Android智能手记的USB设备。然后程序查询制造商和设备ID,并设置用于通信的USB端点。代码提供给conn,用于批传输和控制传输的USB设备连接;配置用于批输入的USB端点epIN及epOUT。这和所有系统中USB初始化及向从机写底层USB命令使用的基本配置没什么区别。
  现在,我们演示如何利用Android去实现让Thermochron进行温度转换,并读取温度结果。每个步骤(表1)均以1-Wire复位开始,然后利用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[] bufer, int length, int timeout)
  传输控制用于启动1-Wire Reset、Match ROM或Block I/O。参数说明请参见数据资料。随后,我们将介绍如何使用该函数。
  批数据传输用于Match ROM以及读/写存储器。此处,端点应为epIN或epOUT,取决于我们读数据还是写数据。端点缓冲器储存要发送的数据,或者为空以储存要接收来的数据,长度为接收或发送的字节数。超时为USB的超时设置,单位为毫秒。   // Performs a bulk transaction on the given endpoint.
  int bulkTransfer(UsbEndpoint endpoint, byte[] buffer, int length, int timeout)
  以下为发送至Thermochron的转换温度命令(0x44)。在第1行中,如上所述(表1),首先由控制传输发送1-Wire复位。这是1-Wire Reset、Match ROM及转换温度序列。
  // 1-Wire Reset
  1 conn.controlTransfer(0x40, 0x01, 0x0C4B, 0x0001, null, 0x0000, 0);
  // Match ROM, where romid is the iButon’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行中,匹配访问传输控制发送一个1-Wire Reset,0x55,匹配访问ROM命令在1-Wire总线上,接着是相应从机的ROM编号2。检索参数设置为0x55。这个匹配访问命令希望用户把编号预装载至epOUT,如第2行和第3行代码所示。函数参数的说明请参考DS2490数据资料。
  Termochron的数据资料将0x44作为开始温度转换的代码。表2. 温度转换命令0x44的写通过I/O块操作来执行。I/O块功能是向epOUT写输出数据,如上面第6行代码所示。然后第7行为控制传输为执行I/O块命令。
  以下代码为利用USB的 I/O模块读取温度寄存器数据的步骤。Thermochron读存储器的命令码为0xF0(见表2)。在此之后为目标寄存器地址(TA) 为0x0211,只读,分为两个字节(第8行)。由于1-Wire总线只有单根数据线,所以总线上写及发送的数据将全部环回到主机。然后主机需要向总线写假数据(0xf)。如之前所述,由于1-Wire为开漏总线,所以从机将对0xff进行响应并修改该数据。最终效果就是数据和0xf的“与”的结果。
  这些命令被送至epOUT,传输控制函数将执行发送至1-Wire总线的命令 (第9行和第10行)。读回的数据将位于USB端点epIN,利用第12行的批传输命令复制到tempdata。然后在第13行中,将最终的原始温度编码转换为对应的温度值。
  // 1-Wire Reset and Match ROM
  // (omited) ...
  // Read Temperature Register/ Memory Command
  // Read Memory, TA2, TA1, dummy data
  8 command = new byte[]{(byte)0xf0, 0x11, 0x02, (byte)0xff,(byte)0xf};
  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 t e m p e r a t u r e = ( i n t )(tempdata[4] & 0xf)/2.0 – 40;
  结论
  本示例的应用程序代码采用Eclipse编写,可供下载。提供所有的文件,源代码查看和修改容易。这个程序的代码利用抽象函数间接使用底层的USB命令。本文最后的一般性参考有助于理解Android USB API和1-Wire命令。这些资源开发类似的产品广泛使用。经过适当的修改,可使该应用程序支持其它5V 1-Wire从设,例如存储器,或支持附加iButton特性。可定制的选项很多,最终取决于设计者的系统要求。
  参考文献:
  [1]Android API, Package Index, http://developer.android.com/ reference/packages.html
  [2]Using Android in Industrial Automation, Android USB Host+ Arduino, http://android.serverbox.ch/?p=549.
  [3]Maxim Integrated iButton:1-Wire Public Domain Kit, http:// www.maximintegrated.com/products/ibutton/software/1wire/ wirekit.cfm.
  [4]Maxim Integrated应用笔记187:《1-Wire Search Algorithm》,http://www.maximintegrated.com/an187。
  [5]DS2490 USB至1-Wire桥接芯片的数据资料:http://www. maximintegrated.com/ds2490。
  [6]DS9490R USB至1-Wire/iButton适配器的数据资料:http:// www.maximintegrated.com/ds9490r。
  [7]DS1921G Thermochron iButton的数据资料:http://www. maximintegrated.com/ds1921g。
  Android是Google Inc的注册商标。
  Arduino是Arduino, LLC的注册商标。
  1-Wire、iButton和Thermochron是Maxim Integrated Products, Inc的注册商标,Hygrochron是Maxim Integrated Products, Inc的商标。
其他文献
2014开年以来,AMD公司似乎屡屡引得业务侧目。不仅APU和GPU新品不断,还有HSA异构计算模式的创新,特别是其对64位ARM架构服务器处理器的支持与开发,形成了X86+ARM+GPU三驾马车的业务平台,而以嵌入式为代表的高增长市场将成为AMD的未来,因此业界认为在物联网时代这家老牌半导体公司迎来了重生并超越对手的机会。  首创“双架构计算”路线图  就是不久前,AMD正式获得了ARM公司的架
期刊
迎接物联网时代  记者:利尔达公司成立十多年来,从一家分销企业转变为一个物联网解决方案供应商,请问根本原因是什么?成功的核心因素是什么?  陈贤兴:十多年前的利尔达从电子元器件代理贸易销售、技术增值销售做起,逐步发展成为现在的物联网嵌入式解决方案提供和技术服务商,中间经历了一系列的变革与创新过程,企业随着时代和市场环境进行变革,才能不被市场所抛弃,实现不断进步。  2009年,利尔达敏锐地观察到移
期刊
日前,中国QT开发者大会在北京召开,在此期间DIGIA正式发布了新的Qt嵌入式企业版。该版本提供了一个完全整合的解决方案,它能够使用户将嵌入式设备的创建和用户体验的定制结合起来,用于适应物联网连接设备的发展趋势。  多年来,随着用户在快节奏的行业中要求60fps的漂亮界面运行要求,这就需要平稳过渡,动画和缩放的性能,因而关于嵌入式设备创造的用户体验的要求发生了巨大的变化。用户界面不仅需要展现新颖和
期刊
Gartner副总裁兼分析师Thilo Koslowski预测,汽车最终将比智能手机更具创新和时尚,将激发驾驶者和乘客沉浸在舒适的驾乘体验中,将终结“我们怎么还没到!”的乏味冗长的乘车感觉。  可见,汽车将包含更多的电子元素,“集成”成为重要话题。为此,4月初,Maxim汽车解决方案事业部在美国总部举办了“汽车媒体日”,介绍其在汽车“模拟集成”方面的成就。  管理总监Kent Robinett称,
期刊
网络创造机遇  记者:网络改变了整个供应链的格局,您认为网络给电子供应链带来的改变是什么?  Kevin Hess:对电子元器件采购而言,网络无疑创造了一个更为开放与便捷的平台,对贸泽电子这样的小批量分销商而言,我们的用户本身就是对网络亲和力更高的工程师,另一个方面,贸泽电子拥有广阔的产品线和强大库存,可以满足客户一站式的购物需求,这是网络带给我们相比于传统授权分销商的优势所在,我们需要利用这一优
期刊
Mentor Graphics(明导)公司宣布推出Xpedition Path Finder产品套件,具有为设计人员提供组装和优化复杂电子系统的功能,进而改进设计、增强芯片性能和提高成本效率。作为Xpedition platform最新产品,它支持利用来自IC和电路板设计团队的布局数据对IC封装选择和优化进行指导和自动化  Xpedition Path Finder套件提供了一个单一的环境,在这个
期刊
摘要:燃料电池正成为未来电能一种非常高效、清洁的能源。与今天的传统能源相比,燃料电池具有许多值得关注的优点。燃料电池的动力来源于一种能够从许多再生资源中提取的元素:氢。从氢到电能的转化不产生污染,而传统发电方法不仅需要使用不可再生燃料,还会造成污染。这些特性是燃料电池成为未来汽车、商业、居住、移动及其他许多电气应用的可行能源的诸多原因中最重要的两个。本文网络版地址:http://www.eepw.
期刊
摘要:新一代微处理器和DSP需要以更低的工作电压提供更大的电流,因此电流检测元件的电阻需要尽可能小,以最大限度地降低电源传导损耗。然而,低电阻电流检测元件产生的斜坡电压较低,这在使用电流模式控制器时,不利于稳定运行。低斜坡电压导致采用电流模式控制方法的开关电源有显著抖动,在很多应用中,开关电源可能变得不稳定。因此,通常由电压模式控制器取而代之,尽管电压模式控制器也有不足之处,并可能出现可靠性问题。
期刊
温湿度传感器是几十年来的传统元器件,一家瑞士公司把它们小型化,并通过精确的计算,赋予了新的应用生命力。  在2014年上海慕尼黑电子展上,瑞士盛思锐(Sensirion)公司展示了MEMS温湿度传感器,采用了CMOSens技术,把温度、湿度和通讯协议等电路集成在同一硅片上。“我们把小型化做到了极致。在技术上,我们比最接近的竞争对手至少领先两三年。”盛思锐大中华区的总经理李锦华(Echo Li)如是
期刊
随着信产部4G牌照的发放, 2014年有望成为中国无线通信市场爆发式增长的一年,即将引爆4G移动宽带新时代,各大运营商将大规模的建设LTE网络,大量的4G终端投入商用,对整个移动通信产业链带来可观的经济效益。无论是运营商还是芯片、终端、系统设备、认证测试等产业链各个环节都将从融合的LTE时代中找到巨大商机。  机遇和挑战总相伴  随着4G的到来,电子产品的生产和研发面临新的挑战如带宽高,速率高,多
期刊