基于USB的家电自动化 - 数模混合 -
几年前,用个人电脑(Personal computer,PC)实现家电自动化是一件令人望而却步的事——它要求配置中断请求(Interrupt Request,IRQ)、向PC 机添加额外的控制卡,以及对跳线组态进行恰当的设置。每当在家电网络上添加/ 删除某个设备或家电时,都需要重复这种冗长乏味的过程。
近来,通用串行总线(Universal Serial Bus,USB)的使用,为家电自动化引入了一种更为简单的实现途径。采用称为“即插即用”(plug-n-play)的简单操作,当家电插入PC 上的USB 端口,就会与PC 交换USB 家电参数,从而消除了对家电接口进行设置的繁琐工作。根据经由USB 端口传送至PC 的家电描述符,自动把家电配置为“就绪”状态。此外,在家电网络上添加或删除新家电,只要将它们简单地插拔即可。
本文介绍了建立在USB 基础之上的、创新的家电自动化应用,包括USB 自动洗衣机、烘干机、咖啡机、安保系统以及家电控制台,如图1 所示。此外,本文还以基于USB 的照明控制为例,讲解了基于USB 的家电自动化的基础知识。最后,本文比较了USB 和其他用于家电自动化的主流无线技术(如,ZigBee. 通信协议和Bluetooth. 无线通信协议等)的异同。
背景
随着功能丰富的新型半导体器件的高速发展,同时其价格也随之达到消费者可以承受的水平,我们正在见证一场家电行业中的自动化风暴。在这些技术进步中就包括了PC 上USB 的演化。
现在,我们的日常生活中方方面面都会用到PC 机。我们与周围环境的互动,很大程度上是通过PC 机进行控制的。类似地,如果没有PC 机作为其中心,未来的家电自动化根本无法想象。
此外,从PC 的角度看,USB 使外围设备初始化方面发生了巨大的变化,不再需要用户与PC 机进行交互或关注PC 机。USB 协议非常智能,它能自动检测并驱动多达127 个连接在其总线上的设备。可以预见,USB 将能够最终控制和驱动绝大部分家电。
由于USB 能实现家电自动化,它对于最终用户是有用的。不仅如此,对于家电制造商而言,在新产品测试方面,USB 也非常有用。
USB 的演化发展,使得家电的即插即用成为现实,而这促使了操作系统供应商对标准USB 驱动程序提供支持。
比如说,Microsoft. 在其Windows. 操作系统(OS)的各版本中,提供了USB 驱动程序支持,支持诸如人机接口设备(Human Interface Device,HID)、通信设备类(Communication Device Class,CDC)和大容量存储设备(Mass Storage Device,MSD)驱动程序。
USB 的另一项重要用途与预付费设施有关。比如说,
自动洗衣店可以向客户发行洗衣卡,洗衣卡可以通过USB端口进行读取,从而通过USB 总线对洗衣机进行控制。USB 总线提供了充足的数据率,用于记录设施数据和记录家电用电量明细。对于具有USB 总线的家电而言,这类大容量存储USB 特别适用于数据记录与控制。
USB 还可以用在家电的安全使用上。例如,父母能够通过USB 端口对家电锁定和解锁,防止孩子自己开启某些家电。这样能让人放心许多,在没有监护人的情况下,孩子无法去操作有潜在危险的家电。
现在已经为您介绍了USB 及其可能的应用,下面让我们来探索一下USB 协议的细节。
USB总线架构
USB 是每条总线支持一个主机的一种主机控制架构。大部分的PC 上都有多个USB 主机。设备能用集线器以菊花链方式连接到主机上。多个集线器能够以菊花链方式连接起来,支持多达127 个不同设备,每个菊花链段长度不能超过五英尺。
这种菊花链式连接,形成了称为层式星状(tiered star)的拓扑结构, 它与 10-Base T 以太网类似。与以太网拓扑结构相比,USB 有一些优点,因为USB 集线器能为连接在其上的设备供电,并在发生过流现象时关闭设备。USB 集线器还能适当过滤主机和设备间的数据,实现低速(LS)、全速(FS)和高速(HS)设备的无缝集成。
USB 是即插即用型协议,能动态加载和卸载USB 驱动程序。要加载USB 驱动程序,必须有USB 提供商标识符(VID)和产品标识符(PID)。这两个标识信息记录在USB 设备的设备描述符中。
VID 用来识别USB 总线的制造商。通常,VID 由名为“通用串行总线开发者论坛”(USB Implementers’ Forum,USB-IF,www.usb.org)组织分配。申请者需要支付注册VID 费用。
与VID 类似, PID 是一个16 位数字。PID 标识的是产品。设备制造商提供PID 号。不同于VID,对于PID 来说,USB-IF 对其没有任何管理上的限制。
USB 的另一个重要特性是它支持不同类型的数据传输方式。例如,USB V2.0 支持四种不同类型的数据传输:
1. 控制传输方式。控制传输在设备插入时对其进行配置,并能用于其他的设备特定用途,诸如对设备上的其他通道进行控制等。
2. 批量传输方式。在数据的产生和使用量相对较大时采用批量传输方式。
3. 中断传输方式。中断传输用于及时且可靠的数据传送。例如,具有人类可感知反应或反馈响应特征的字符或坐标,等等。
4. 同步传输方式。同步传输方式在预先约定的传输延迟时间占用预定的USB 带宽。同步传输也称为“流实时传输”。
A 型USB 连接器专用于数据下行传输,即,数据从设备传输到主机。所以,A 型连接器位于设备上。
B 型USB 连接器专用于数据上行传输,即,数据从USB 主机传输到设备或从集线器传输到设备。B 型连接器位于主机和集线器上,如图2 所示。
有时为了使占用空间更小,可以使用微型USB 连接器。
USB 设备通过拉高D+ 或D-端线电平来指示其速度,最高为3.3 伏。全速设备在D+ 端接一个上拉电阻表明它是全速设备,如图3 所示。
如果没有上拉电阻, USB 就假定总线上没有连接任何东西。有些设备中,上拉电阻是内置的,能通过固件开启和关闭。另一些设备则需要外部上拉电阻。在这种情况下,通过固件进行速度控制会受到限制,并且要求另外对外部中继服务进行实现与编码。
低速设备在D-端连接上拉电阻,表明其为低速设备,如图4 所示。
最开始,高速设备被当作全速设备进行连接(D+ →1.5k 至3.3V)。初始连接之后,设备在复位时将发出高速的啁啾声,然后与主机建立高速连接。一旦设备经初始化进入高速模式,上拉电阻就被禁用。
USB数据流模式:枚举在设备可以与应用进行通信前,USB 主机需要了解设备状态并给它分配设备驱动程序。实现这一初始信息交换的过程就叫作枚举。在枚举过程中,根据USB V2.0 规范的定义,设备将经历以下设备状态:
1. 上电状态(Powered)
2. 缺省状态(Default)
3. 地址状态(Address)
4. 配置状态(Configured)
另外还有两个USB 设备状态,“连接状态”(attached)和“挂起状态”(suspended)。枚举过程的具体细节超出了本文的范围;不过,在设备配置中使用的命令与结构是相关的。
描述符是让USB 主机能获取设备信息的数据结构。在枚举过程中,主机请求描述符,从最上层设备描述符开始,一直到最低层端点描述符,顺序如图5 所示。
枚举过程
下面概述一下USB 设备的枚举过程所包含的步骤,并讲解设备在枚举过程如何经历从上电到缺省、地址以及配置这几个状态。
1. 用户将一个USB 设备插入USB 端口。主机为端口供电,设备此时处于上电状态。
2. 主机检测设备。
3. 集线器使用中断通道将事件报告给主机。
4. 主机发送Get_Port_Status(读端口状态)请求,以获取更多的设备信息。
5. 集线器检测设备是低速运行还是高速运行,并将此信息送给主机,这是对Get_Port_Status 请求的响应。
6. 主机发送Set_Port_Feature(写端口状态)请求给集线器,要求它复位端口。
7. 集线器对设备复位。
8. 主机使用Chirp K 信号来了解全速设备是否支持高速运行。
9. 主机发送另一个Get_Port_Status 请求,确定设备是否已经从复位状态退出。
10. 设备此时处于缺省状态,且已准备好在零端点通过缺省通道响应主机控制传输。缺省地址为00h,设备能从总线获取高达100mA 的电流。
11. 主机发送Get_Descriptor(读设备描述符)报文,以便确定最大数据包大小。设备描述符的八个字节是bMaxPacketSize。
12. 通过发送Set_Address(写地址)请求,主机分配地址,设备此时处于地址状态。
13. 主机发送Get_Descriptor 报文,以获取更多的设备信息。主机通过发送描述符响应设备请求,随后发送全部的次级描述符。
14. 主机分配并加载设备驱动程序。
15. 通过发送Set_Configuration(写配置)请求,主机的设备驱动程序选择一个有效配置。设备此时处于配置状态。
16. 主机为复合设备接口分配驱动程序。
17. 如果集线器检测到有过流现象,或者主机要求集线器关闭电源,则USB 总线切断设备供电电源。在这种情况下,设备与主机无法通信,但设备处于连接状态。
18. 如果在3 毫秒内设备在总线上未见任何动作,则它将进入挂起状态,在挂起状态设备消耗的总线电能最少。
USB 协议层
控制传输使主机和设备之间可以交换设备配置信息和其他控制信息。控制传输在低速和
查看评论 回复