文章目录
- 一、特性
- 二、相对于替代解决方案的优势
- (1) 为什么不选择内置USB硬件的微控制器呢?
- (2) 与带 USB 硬件的微控制器相比的优势
- (3) 与单独的 USB 外设相比的优势
- (4) 与其他纯固件实现相比的优势
- 三、链接
一、特性
- 完全符合 USB 1.1 标准的低速设备,但处理通信错误和电气规格除外。
- 支持多个端点:一个控制端点、两个中断/批量输入端点和多达 7 个中断/批量输出端点。(请注意,USB 规范禁止低速设备的批量端点,但 V-USB 在一定程度上支持它们。
- 默认情况下,传输大小最大为 254 字节,更多作为配置选项。
- 带有可自由使用的 USB 标识符(供应商 ID 和产品 ID 对)
- 可在任何具有至少 2 kB 闪存、128 字节 RAM 和至少 12 MHz 时钟速率的 AVR 微控制器上运行。
- 无需UART、定时器、输入捕获单元或其他特殊硬件(一个边沿触发中断除外)。
- 可采用12 MHz、15 MHz、16 MHz、18 MHz或20 MHz晶振或12.8 MHz或16.5 MHz内部RC振荡器进行时钟。
- 高级功能是用 C 语言编写的,并且有很好的注释。
- 只有大约 1150 到 1400 字节的代码大小。
- 许可证:开源或商业。
二、相对于替代解决方案的优势
(1) 为什么不选择内置USB硬件的微控制器呢?
其中有几个可用(见)。或者将您选择的微控制器与 USB 芯片相结合?
(2) 与带 USB 硬件的微控制器相比的优势
- 标准 AVR 控制器通常更容易获得。
- 大多数支持 USB 的控制器仅提供 SMD 格式,这对于业余爱好者来说几乎是不可能的。
- V-USB 带有一个免费的共享供应商/产品 ID 对。
- 一个好的免费 ANSI-C 编译器 (GNU gcc) 和 Windows 的免费开发系统 (WinAVR) 可用于 AVR。
- AVR 控制器比大多数集成 USB 的控制器更快,而且成本更低。
- 独立操作:某些 USB 控制器将其固件从主机下载到 RAM 中。如果没有与主机的连接,它们就无法工作。
- AVR 控制器具有片上 EEPROM。
(3) 与单独的 USB 外设相比的优势
- 无需额外费用。
- 没有额外的硬件复杂性:更简单的PCB,更少的故障。
- 断开 USB 连接时不会额外消耗电量。这可能与电池供电的设备有关。
- 在选择 USB 描述符方面有更大的自由度。
- V-USB 带有一个免费的共享供应商/产品 ID 对。
- 使用的硬件资源很少:只有两到三个 I/O 引脚。
(4) 与其他纯固件实现相比的优势
Igor Češko 为 AVR 系列微控制器提供了类似的驱动程序。与 Igor 的驱动程序相比,我们的 USB 驱动程序具有以下优点:
- 所有可定制的代码都用 ANSI-C 编写,因此更易于维护。
- 模块化概念:更易于集成到现有设计中。
- 尽管有高级语言模块,但代码大小略小。
- 更快:所有编码/解码(USB 需要 NRZI 编码和位填充)都是实时完成的,而不是在存储原始数据流后的主循环中完成的。
- 可以更好地自定义更多端点、USB 描述符。
- V-USB 带有一个免费的共享供应商/产品 ID 对。
- 记录标准符合性水平(限制和潜在问题的描述)。
- 根据 GNU 通用公共许可证的条款或商业许可证获得许可。
迪克·斯特里夫兰(Dick Streefland)将旧版本的V-USB剥离到最基本的部分。他的代码更易于阅读和理解,但缺少 V-USB 中的一些功能:
- V-USB 最多支持 4 个端点。这允许实现符合 HID 或 CDC 设备类的设备。
- V-USB 通过了 usb.org 测试实用程序中的测试。
- V-USB 支持许多不同的时钟速率,有些甚至带有内部 RC 振荡器。
三、链接
官方
gitee