串行编程/USB
串行编程: 介绍和 OSI 网络模型 -- RS-232 接线和连接 -- 典型的 RS232 硬件配置 -- 8250 UART -- DOS -- MAX232 驱动器/接收器系列 -- Windows 中的 TAPI 通信 -- Linux 和 Unix -- Java -- Hayes 兼容调制解调器和 AT 命令 -- 通用串行总线 (USB) -- 形成数据包 -- 纠错方法 -- 双向通信 -- 数据包恢复方法 -- 串行数据网络 -- 实际应用开发 -- 串行连接上的 IP
USB 代表“通用串行总线”。它是一个在 1990 年代中期开发的行业标准,定义了用于连接、通信和为计算机和电子设备之间建立总线供电的电缆、连接器和通信协议。USB 的目的是标准化计算机外围设备(包括键盘、指示设备、数码相机、打印机、便携式媒体播放器、磁盘驱动器和网络适配器)与个人计算机的连接,既用于通信,也用于提供电力。它也已成为其他设备上的常见功能,例如智能手机、PDA 和视频游戏机。USB 有效地取代了各种早期的接口,例如串行和并行端口。
USB 闪存驱动器是通过 USB 端口插入和供电的存储设备。它们存储需要轻松访问的信息和数据。这些设备便携且方便外出人员使用。USB 端口是学生以及商务雇员或人员的常见需求。除了便利性外,它们的存储容量范围从 1GB 到 64GB,因此最终用户能够存储与小型计算机一样多的信息。
USB 通过一系列集线器将多个设备连接到主机控制器。在 USB 术语中,设备被称为功能,因为每个独立的物理设备实际上可能包含多个功能,例如带有内置麦克风的网络摄像头。集线器是专用设备,在官方上不被视为功能。始终存在一个被称为根集线器的集线器,它直接连接到主机控制器。
这些设备/功能(和集线器)具有关联的管道(逻辑通道)。管道与 Unix 中管道中的字节流同义。管道是从主机控制器到设备上名为端点的逻辑实体的连接。术语端点有时也用于指代整个管道。
这些端点(及其各自的管道)在每个方向上编号为 0-15,因此一个设备/功能最多可以有 32 个活动管道,16 个进入主机控制器,16 个离开控制器。
每个端点只能在一个方向上传输数据,要么进入设备/功能,要么离开设备/功能,因此每个管道都是单向的。然而,端点 0 是为双向总线管理保留的,因此占用 32 个端点中的两个 - 所有 USB 设备都需要实现端点 0,因此在任何给定设备上始终存在一个编号为 0 的入向和出向管道。
在这些管道中,数据以不同长度的数据包形式传输。每个管道都有一个最大数据包长度,通常为 字节,因此 USB 数据包通常包含大约 8、16、32、64、128、256 到 512 字节的数据。
管道也通过它们的传输类型分为四类
- 控制传输 - 通常用于发送到设备的简短、简单的命令和状态响应,例如由总线控制管道编号 0 使用
- 等时传输 - 以某种保证的速度(通常但不一定是尽可能快)但可能会丢失数据,例如实时音频或视频
- 中断传输 - 需要保证快速响应(有限延迟)的设备,例如指示设备和键盘
- 批量传输 - 使用所有剩余可用带宽的大型零星传输(但不能保证吞吐量或延迟),例如文件传输
当设备(功能)或集线器通过总线上的任何集线器连接到主机控制器时,主机控制器会为其在总线上分配一个唯一的 7 位地址。
然后,主机控制器轮询总线以获取流量,通常以循环的方式,因此没有设备可以在没有主机控制器的明确请求的情况下在总线上传输任何数据。中断传输在相应端点上实际上不会中断总线上的任何流量:它们只是被安排更频繁地查询,并在任何其他大型传输之间查询,因此 USB 总线上的“中断流量”实际上只是高优先级流量。
要访问端点,必须获取分层配置。连接到总线的设备有一个(且只有一个)设备描述符,该描述符反过来又有一个或多个配置描述符。这些配置通常对应于状态,例如活动模式与低功耗模式。每个配置描述符反过来又有一个或多个接口描述符,这些描述符描述了设备的某些方面,以便它可以用于不同的目的:例如,摄像头可能同时具有音频和视频接口。这些接口描述符反过来又有一个默认接口设置和可能更多个备用接口设置,这些设置反过来又具有端点描述符,如上所述。但是,端点可以在多个接口和备用接口设置之间重复使用。
包含主机控制器和根集线器的硬件有一个面向程序员的接口,称为主机控制器设备 (HCD),由硬件实现者定义。在实践中,这些是计算机中的硬件寄存器(端口)。
在 1.0 版和 1.1 版中,存在两种竞争的 HCD 实现。康柏的开放主机控制器接口 (OHCI) 被 USB-IF 采用为标准。然而,英特尔随后创建了一个他们称之为通用主机控制器接口 (UHCI) 的规范,并坚持要求其他实现者付费许可和实施 UHCI。威盛科技从英特尔获得了 UHCI 标准的许可;所有其他芯片组实现者都使用 OHCI。OHCI 和 UHCI 之间的最大区别是 UHCI 比 OHCI 更受软件驱动,这使得 UHCI 的处理器占用量略高,但实施成本更低。由于存在两种实现方式,迫使操作系统供应商和硬件供应商在两种实现方式上进行开发和测试,这增加了成本。在 USB 2.0 的设计阶段,USB-IF 坚持只使用一种实现。USB 2.0 HCD 实现被称为扩展主机控制器接口 (EHCI)。只有 EHCI 支持高速传输。每个 EHCI 控制器包含四个虚拟 HCD 实现,以支持全速和低速设备。英特尔和威盛 EHCI 控制器上的虚拟 HCD 是 UHCI。所有其他供应商都使用虚拟 OHCI 控制器。
USB 设备的设备描述符具有一个签名,该签名指示已连接到总线的设备类型。此签名由类代码、子类代码和协议字段组成。这些字段共同标识了应使用哪个操作系统驱动程序来与该设备进行通信。此外,每个 USB 设备接口描述符都包含相同的签名字段。接口签名允许多个操作系统驱动程序同时与单个 USB 设备进行通信(例如具有音频和视频接口的 USB 设备),并且它们还允许相同驱动程序的多个实例与同一 USB 设备的不同接口进行通信(例如具有多个以太网端口的 USB 以太网适配器)。
连接到总线的设备可以是需要使用自定义设备驱动程序的完全自定义设备,或者可能属于设备类别。这些类别定义了设备和接口描述符方面的预期行为,以便相同的设备驱动程序可以用于声称属于特定类别的任何设备。操作系统应该实现所有设备类别,以便为任何 USB 设备提供通用驱动程序。
设备类别代码由 USB 实现者论坛的设备工作组决定。如果类别适用于整个设备,则类别代码将分配给设备描述符的bDeviceClass字段,如果要为设备上的单个接口设置类别代码,则将其分配给接口描述符的bInterfaceClass字段。也可以通过使用接口关联描述符将设备的多个接口分组,在这种情况下,类别代码将分配给描述符的bFunctionClass字段。类别代码是一个字节,因此最多可以有 254 个不同的设备类别(值 0x00 和 0xFF 保留)。如果bDeviceClass设置为 0x00,则操作系统将查看bFunctionClass以获取接口关联描述符,并查看每个接口的bInterfaceClass以确定设备类别。每个类别还可选地支持子类别和协议子定义。这些可以在不断修订主要设备类别时使用。
最常用的类别代码(按分配的类别 ID 分组)为:[1]
- 0x00 - 未指定类别(设备描述符)
- USB 设备没有分配的类别代码。应使用设备接口描述符的类别代码来识别设备支持哪些驱动程序。
- 0x01 - 音频类别(接口描述符)
- 接口遵循 USB 音频设备类别规范。此类别代码由类似声卡的设备使用。
- 0x02 - CDC / 通信设备类别(设备或接口描述符)
- USB 通信设备类别 ("CDC"),用于调制解调器、网卡、ISDN 连接、传真。
- 0x03 - HID 类别 / 人机界面设备类别(接口描述符)
- USB 人机界面设备类别 ("HID"),键盘、鼠标等。
- 0x05 - 物理设备类别(接口描述符)
- ?
- 0x06 - 静态图像类别(接口描述符)
- 静态图像捕获设备类别,与 USB 中使用的图片传输协议相同。
- 0x07 - 打印机类别(接口描述符)
- USB 打印机设备类别,类似打印机的设备。
- 0x08 - 大容量存储类别(接口描述符)
- 用于闪存驱动器、便携式硬盘驱动器、存储卡读卡器、数码相机、数字音频播放器等的 USB 大容量存储设备类别。此设备类别将设备呈现为块设备(几乎总是用于存储文件系统)。
- 0x09 - 集线器(设备描述符)
- USB 集线器。
- 0x0A - CDC 数据 / 通信设备类别数据(接口描述符)
- CDC-数据(通信类别设备)。
- 0x0B - 智能卡类别(接口描述符)
- 智能卡读卡器。
- 0x0D - 内容安全类别(接口描述符)
- 内容安全。
- 0x0E - 视频类别(接口描述符)
- USB 视频设备类别,类似网络摄像头的设备,动态图像捕获设备。
- 0xDC - 诊断设备类别(设备或接口描述符)
- 用于诊断设备的类别。此类别有一个用于 USB 2.0 合规性测试设备的子类别。
- 0xE0 - 无线控制器类别(设备或接口描述符)
- 无线控制器,例如蓝牙适配器。此类别代码通常仅在接口描述符中使用,仅蓝牙子类别允许在设备描述符中使用。
- 0xEF - 杂项类别(设备或接口描述符)
- ?
- 0xFE - 应用程序特定类别(接口描述符)
- ?
- 0xFF - 供应商特定类别(设备或接口描述符)
- 自定义设备类别 - 用于确定设备或接口不支持任何标准设备类别,需要自定义驱动程序。
USB 信号
[edit | edit source]引脚 | 功能 | |
---|---|---|
1 | VBUS (4.01–5.25 volts) | |
2 | D− | |
3 | D+ | |
4 | GND | |
外壳 | 屏蔽 |
助记符:维克多冲过地面零点 (Vbus , - , + , GND , Shield/Blank)
USB 信号通过标记为 D+ 和 D− 的一对绞线传输。这些信号共同使用半双工差分信号来对抗长线上电磁噪声的影响。D+ 和 D− 通常一起运行;它们不是独立的单向连接。传输的信号电平为 0.0–0.3 伏特(低电平)和 2.8–3.6 伏特(高电平)。
传输模式
[edit | edit source]USB 支持四种传输模式
- 控制
- 中断
- 块
- 等时
传输速度
[edit | edit source]USB 支持三种数据速率
- 低速速率高达 1.5 Mbit/s (187.5 kB/s),主要用于人机界面设备 (HID),如键盘、鼠标和操纵杆。
- 全速速率高达 12 Mbit/s (1.5 [MB/s)。在 USB 2.0 规范之前,全速是最高速率,许多设备会回退到全速。全速设备在先到先得的基础上分配 USB 带宽,并且在使用多个等时设备时,带宽不足是常见的现象。所有 USB 集线器都支持全速。
- 高速速率高达 480 Mbit/s (60 MB/s)。
即使是高速集线器,如果为多个非高速设备提供服务,也可能为这些设备分配总计 12 Mbit/s 的带宽,这将减慢它们的速度,除非集线器为每个端口都有事务转换器。[3]
虽然高速设备通常被称为“USB 2.0”并宣传为“高达 480 Mbit/s”,但并非所有 USB 2.0 设备都是高速的。高速设备通常仅以理论最大值 (60 MB/s) 数据吞吐量的一半运行。目前 (2006) 使用真实设备获得的最大速率约为一半,即 30 MB/s。[4] 大多数高速 USB 设备通常以更低的速度运行,通常总体约为 3 MB/s,有时高达 10-20 MB/s。USB-IF 对设备进行认证,并提供许可,以便在通过合规性测试并支付许可费后使用“基本速度”(低速和全速)或高速的特殊营销徽标。所有设备都根据最新的规范进行测试,因此最近符合规范的低速设备也是 2.0。
高速设备旨在当插入全速集线器时回退到全速的较慢数据速率。高速集线器有一个名为事务转换器的特殊功能,可以将全速和低速总线流量与高速流量分离。高速集线器中的事务转换器(或者可能取决于电路设计,每个端口都有一个)将充当一个完全独立的全速总线,为连接到它的全速和低速设备提供服务。这种分离仅针对带宽;有关电源和集线器深度的总线规则仍然适用。
一个集线器将有一个或多个事务转换器,并且没有标准方法来确定集线器可能具有的事务转换器数量。连接到一个事务转换器的所有低速和全速设备将共享低速/全速带宽。这意味着集线器的性能可能会大不相同,具体取决于事务转换器的数量以及连接到其端口的设备。例如,一个只有一个事务转换器、连接了 7 个低速/全速设备的高速 7 端口集线器,与 USB 1.1 集线器没有区别,所有设备都竞争相同的低速/全速带宽。如果集线器为七个端口中的每一个都有一个事务转换器,那么每个设备将拥有可用的所有全速/低速带宽,并且只会竞争高速带宽,而高速带宽要大得多。[5]
数据编码
[edit | edit source]USB 标准使用 NRZI 系统来编码数据,并使用比特填充来传输长度为六位的逻辑 1(在六位逻辑 1 后面放一个逻辑 0;接收器会忽略跟随六个逻辑 1 的 0)。此外,接收一个连续七位的逻辑 1 块,将在接收器处被信号为比特填充错误。NRZI(非归零反转)编码方法在传输逻辑1时不会改变信号,但在传输每个逻辑0时会反转信号电平。
迷你 USB 信号
[edit | edit source]引脚 | 功能 |
---|---|
1 | VBUS (4.4–5.25 V) |
2 | D− |
3 | D+ |
4 | ID |
5 | 接地 |
迷你 USB 连接器的大多数引脚与标准 USB 连接器中的引脚相同,除了引脚 4。引脚 4 被称为“ID”,在迷你 A 插头中连接到接地,但在迷你 B 插头中未连接。这会导致支持 USB On-The-Go(带有迷你 AB 插座)的设备在连接到 USB 迷你 A 插头(迷你 A - 迷你 B 电缆的“A”端)时最初充当主机。迷你 A 连接器还包含额外的塑料部件,以防止插入仅从属设备 (B 仅) 设备。
USB 连接器有多种类型,随着规范的发展,又增加了一些类型。从最初的 USB 规范开始
- 标准-A 插头
- 标准-A 插座
- 标准-B 插头
- 标准-B 插座
在 USB 2.0 规范的第一个工程变更通知中添加
- Mini-B 插头
- Mini-B 插座
在《通用串行总线 Micro-USB 电缆和连接器规范》中添加
- Micro-A 插头(白色)
- Micro-AB 插座(灰色)
- Micro-B 插头(黑色)
- Micro-B 插座(黑色)
适配器,也来自《通用串行总线 Micro-USB 电缆和连接器规范》(注意:不允许使用其他适配器)
- 标准-A 插座到 Micro-A 插头
- “Micro 系列 USB 技术将在 OTG 产品中取代 Mini 系列 USB”[1]“比弗顿,俄勒冈州,2007 年 1 月 4 日 - 通用串行总线实施者论坛公司(USB-IF)今天宣布完成 Micro-USB 规范的制定,这项新的连接器技术将取代目前便携式产品中使用的许多 Mini 系列插头和插座。”Micro-USB 插头额定连接和断开循环次数为 10,000 次。它的高度大约是目前广泛使用的 mini-USB 连接器的二分之一,但宽度相似。
电缆只有插头,主机和设备只有插座。主机具有 A 型插座;设备如果具有插座,则具有 B 型插座。A 型插头只能与 A 型插座匹配,B 型插头只能与 B 型插座匹配。
On-the-Go 补充允许产品既是主机又是设备,具有 Micro-AB 插座,可接受 Micro-A 插头或 Micro-B 插头。Micro-A、Micro-B 和 Micro-AB 连接器通过颜色轻松识别。Micro-A 插头和插座内部的塑料始终为白色,Micro-B 连接器内部的塑料为黑色,Micro-AB 插座内部的塑料为灰色。
USB 规范允许使用一组有限的电缆。电缆分为两类 - “可拆卸”和“固定”。所有允许的 USB 电缆都具有一个 A 型插头,无论是标准-A 还是 Micro-A。固定电缆的另一端要么不可拆卸,要么在设备端具有自定义连接器。如果电缆是“可拆卸”的,则电缆的另一端必须具有 B 型插头。还存在一根特殊的适配器电缆,它具有 Micro-A 插头和标准-A 插座。
固定 USB 电缆类型
- 标准-A 插头到设备。
该电缆在设备端可能具有自定义连接器。 - Micro-A 插头到设备。
该电缆并非旨在由设备的最终用户拆卸。
可拆卸 USB 电缆类型
- 标准-A 插头到标准-B 插头。
这是将 USB 设备连接到主机的最流行的电缆。 - 标准-A 插头到 Mini-B 插头。
用于将较旧的移动设备连接到主机。 - 标准-A 插头到 Micro-B 插头。
用于将较新的移动设备连接到主机。 - Micro-A 插头到 Micro-B 插头。
用于将移动设备相互连接。 - Micro-A 插头到标准-A 插座。
这是一根特殊的适配器电缆,允许其最长为 150 毫米。需要它才能让移动设备充当 USB 主机,用于那些没有使用 Micro-USB 连接器的设备。
任何带有插座(上述特殊情况除外)或带有两个“A”或两个“B”连接器的电缆,根据定义,都不是 USB。[6]但是,许多电缆制造商生产并销售与 USB 兼容(但不是严格符合规范)的延长线,一端带有标准-A 插头,另一端带有标准-A 插座。请注意,这些不符合规范的延长线不应与包含小型总线供电集线器的符合规范的电缆混用。带有两个 A 型插头甚至两个 B 型插头的电缆可从更专业的供应商处获得。
请注意,只有“全速”和“高速”设备使用可拆卸电缆。符合规范的“低速”设备仅使用固定电缆,因为低速规范不允许标准可拆卸 USB 电缆的电气特性。
Mini-B、Micro-A、Micro-B 和 Micro-AB 连接器用于较小的设备,例如 PDA、手机或数码相机。标准-A 插头大约为 4 毫米 × 12 毫米,标准-B 大约为 7 毫米 × 8 毫米,Micro-A 和 Micro-B 插头大约为 2 毫米 × 7 毫米。
USB 委员会指定的连接器旨在支持 USB 的许多底层目标,并反映从当时正在使用的各种连接器中吸取的教训。特别是
- 连接器设计为坚固耐用。许多以前的连接器设计都很脆弱,引脚或其他精细部件容易弯曲或断裂,即使只施加了非常小的力。USB 连接器中的电气触点由相邻的塑料舌头保护,整个连接组件进一步由封闭的金属套保护。因此,USB 连接器可以安全地处理、插入和拔出,即使是小孩也可以操作。外壳套和坚固的模制插头主体意味着连接器可以掉落、踩踏、甚至压碎或敲击,而不会损坏;需要相当大的力才能严重损坏 USB 连接器。
- 很难错误地连接 USB 连接器。连接器不能倒置插入,当插头和插座正确匹配时,从外观和运动感觉上可以清楚地看出是否连接成功。然而,对于经验不足的用户(或没有看到安装过程的用户)来说,乍一看并不明显连接器应该朝哪个方向,因此通常需要尝试两种方式。
- 连接器制造成本特别低。
- 连接器强制执行 USB 网络的定向拓扑。USB 不支持循环网络,因此来自不兼容 USB 设备的连接器本身也不兼容。与其他通信系统(例如 RJ-45 电缆)不同,性别转换器几乎从不使用,这使得创建循环 USB 网络变得很困难。
- 指定了适度的插入/拔出力。USB 电缆和小型 USB 设备由插座的夹持力固定(无需其他连接器需要的螺钉、夹子或旋钮)。连接或断开连接所需的力很小,允许在笨拙的情况下或由有运动障碍的人进行连接。
- 连接器构造始终确保插头上的外部套管先与其在插座中的对应套管接触,然后再连接内部的四个连接器。该套管通常连接到系统接地,允许其他可能造成损坏的静电通过此路径安全地放电(而不是通过精密的电子元件)。这种外壳方式还意味着 USB 信号在穿过匹配的连接器对(这是否则必须平行行驶的扭绞数据对必须行驶一定距离的唯一位置)时具有一定的(适度)抗电磁干扰能力。此外,电源和公共连接是在系统接地之后但数据连接之前进行的。这种分阶段的连接断开时间安排允许安全热插拔,并且长期以来一直是航空航天工业连接器设计中的常见做法。
- USB 标准为符合规范的 USB 连接器指定了较低的公差,旨在最大限度地减少不同供应商生产的连接器之间的不兼容性(这一目标已经非常成功地实现)。与大多数其他连接器标准不同,USB 规范还定义了连接设备在其插头周围区域的尺寸限制。这样做是为了避免设备符合连接器规范,但其尺寸过大导致相邻端口被堵塞的情况。符合规范的设备必须要么符合尺寸限制,要么支持符合规范的延长线。
但是,在一些示例中,物理层发生了变化。例如,IBM UltraPort 是一个专有的 USB 连接器,位于 IBM 笔记本电脑 LCD 的顶部。它使用不同的机械连接器,同时保留 USB 信号和协议。其他小型物品制造商也开发了自己的小型连接器,并且出现了各种各样的连接器。出于规范目的,这些设备被视为具有固定电缆。
USB 的扩展名为 USB On-The-Go,它允许单个端口充当主机或设备 - 由电缆的哪一端插入设备上的插座决定。即使在电缆连接好且设备开始通信之后,这两个设备也可能在程序控制下“交换”端点。这项功能针对诸如 PDA 之类的设备,其中 USB 链接可能在一种情况下连接到 PC 的主机端口作为设备,而在另一种情况下则作为主机连接到键盘和鼠标设备。因此,USB On-The-Go 定义了两个小型连接器,Mini-A 和 Mini-B,以及一个通用插座(Mini-AB),这应该阻止专有设计的激增。
无线 USB 是一种正在开发的标准,旨在扩展 USB 标准,同时在协议级别上保持与 USB 1.1 和 USB 2.0 的向后兼容性。
USB 电缆的最大长度为 5 米;更长的长度需要集线器 [2]。USB 连接可以通过使用由各种制造商开发的专用 USB 扩展产品,通过 CAT5 线缆扩展到 50 米,或通过光纤扩展到 10 公里。
USB 规范提供了一条单线上 5 伏 (伏特) 的电源,连接的 USB 设备可以从该电源获取电源。该规范规定正负总线电源线之间的电压不超过 5.25 伏,不低于 4.35 伏。
最初,设备只允许汲取 100 mA 电流。它可以从上游设备以 100 mA 为单位请求更多电流,最高可达 500 mA。实际上,大多数端口会在关闭电源之前提供 500 mA 或更多电流,即使设备没有请求或识别自身也是如此。如果(符合规范的)设备需要的电源超过可用电源,则设备无法运行,直到用户更改网络(通过重新排列 USB 连接或添加外部电源)以提供所需的电源。
如果 USB 设备检测到 USB 总线的数据线处于空闲状态 3 毫秒,则设备必须进入挂起状态。挂起的设备允许汲取 500 μA 电流。如果设备在挂起之前被配置为使用超过 100 mA 的电流,并且设备被配置为远程唤醒源,则设备在挂起期间允许汲取 2.5 mA 电流。挂起期间的电流限制为一秒钟的平均值。
请注意,即插即用 和 电池充电规范 都在 USB 规范中添加了新的供电模式。
如果使用总线供电的集线器,下游设备的总电流只能使用四个单位——400 mA。这限制了符合规范的总线供电集线器只能有 4 个端口,除此之外还有其他限制。需要超过 500 mA 电流的设备、端口数超过 4 个的集线器以及下游设备总共使用超过四个 100 mA 单位电流的集线器必须提供自己的电源。主机操作系统通常会跟踪 USB 网络的电源需求,并在特定段的电源需求超过可用电源时向计算机操作员发出警告。
- http://www.usb.org/ 是 USB 实现者论坛的网站,该论坛是一个由开发 USB 规范的公司成立的非营利性组织。
- USB 3.0 规范 是 USB 标准的正式定义。第 9 章涵盖 USB 设备。
- http://www.beyondlogic.org/index.html#USB 关于一些来自不同公司的 USB 微控制器和 IC 的实用信息。
- USB 设计人员链接 http://homepage.hispeed.ch/ibhdoran/usb_link.html 关于来自许多不同公司的 USB 芯片的大量信息。
- USB 开发人员指南,包含总线分析器示例,包括关于低级协议 的重要信息
- 如果您正在为 USB 设备开发固件,USB 协议分析器是必不可少的
- http://www.micrel.com/product-info/USB.shtml
- USB 接口
- Linux USB http://linux-usb.org/
- Sycard Technology http://sycard.com/usb.html 出售 USB 开发工具。
- "USB 芯片:USB 主机和设备控制器芯片",Jan Axelson 编辑
- Java RxTx 类(在 串行编程:串行 Java 中解释)也可以与某些 USB 设备通信[3]。
- MATLAB 编程/写入 USB 端口
- LPI Linux 认证/配置 USB 设备
- 嵌入式系统/特定微处理器 简要提到了可以与 USB 通信的微控制器
- "Open USB FXS" 博客描述了一个使用 Microchip 18F2550 与 USB 通信的开源项目
- ↑ USB 类代码
- ↑ 通用串行总线规范修订版 2.0 - 6.5.2 USB 连接器端接数据
- ↑ 多 TT 集线器与单 TT 集线器正面交锋 在 Tom's Hardware Guide
- ↑ http://www.barefeats.com/usb2.html
- ↑ http://www.tomshardware.com/2003/09/09/usb_technology/index.html
- ↑ 参见 http://www.usb.org/developers/whitepapers/cablew~1.pdf 和 http://www.usb.org/developers/docs/ecn1.pdf
串行编程: 介绍和 OSI 网络模型 -- RS-232 接线和连接 -- 典型的 RS232 硬件配置 -- 8250 UART -- DOS -- MAX232 驱动器/接收器系列 -- Windows 中的 TAPI 通信 -- Linux 和 Unix -- Java -- Hayes 兼容调制解调器和 AT 命令 -- 通用串行总线 (USB) -- 形成数据包 -- 纠错方法 -- 双向通信 -- 数据包恢复方法 -- 串行数据网络 -- 实际应用开发 -- 串行连接上的 IP