新闻中心

EEPW首页 > 网络与存储 > 设计应用 > 利用Android智能手机及USB接口与1-Wire从设备通信

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

—— (5月刊)利用Android智能手机及USB接口与1-Wire从设备通信
作者:Wilson Tang时间:2014-05-04来源:电子产品世界收藏

  以下为发送至的转换温度命令(0x44)。在第1行中,如上所述(表1),首先由控制传输发送复位。这是 Reset、Match ROM及转换温度序列。

本文引用地址:http://www.eepw.com.cn/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行中,匹配访问传输控制发送一个1-Wire Reset,0x55,匹配访问ROM命令在1-Wire总线上,接着是相应从机的ROM编号2。检索参数设置为0x55。这个匹配访问命令希望用户把编号预装载至epOUT,如第2行和第3行代码所示。函数参数的说明请参考DS2490数据资料。

  的数据资料将0x44作为开始温度转换的代码。表2. 温度转换命令0x44的写通过I/O块操作来执行。I/O块功能是向epOUT写输出数据,如上面第6行代码所示。然后第7行为控制传输为执行I/O块命令。

  以下代码为利用USB的 I/O模块读取温度寄存器数据的步骤。读存储器的命令码为0xF0 (见表2)。在此之后为目标寄存器地址(TA) 为0x0211,只读,分为两个字节(第8行)。由于1-Wire总线只有单根数据线,所以总线上写及发送的数据将全部环回到主机。然后主机需要向总线写假数据(0xff)。如之前所述,由于1-Wire为开漏总线,所以从机将对0xff进行响应并修改该数据。最终效果就是数据和0xff的“与”的结果。

  这些命令被送至epOUT,传输控制函数将执行发送至1-Wire总线的命令 (第9行和第10行)。读回的数据将位于USB端点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编写,可供下载。提供所有的文件,源代码查看和修改容易。这个程序的代码利用抽象函数间接使用底层的USB命令。本文最后的一般性参考有助于理解 USB API和1-Wire命令。这些资源开发类似的产品广泛使用。经过适当的修改,可使该应用程序支持其它5V 1-Wire从设,例如存储器,或支持附加iButton特性。可定制的选项很多,最终取决于设计者的系统要求。

数字通信相关文章:数字通信原理


通信相关文章:通信原理


上拉电阻相关文章:上拉电阻原理

上一页 1 2 下一页

评论


相关推荐

技术专区

关闭