分享一个软件模拟USB,支持HID


在这里插入图片描述

一、特性

  1. 完全符合 USB 1.1 标准的低速设备,但处理通信错误和电气规格除外。
  2. 支持多个端点:一个控制端点、两个中断/批量输入端点和多达 7 个中断/批量输出端点。(请注意,USB 规范禁止低速设备的批量端点,但 V-USB 在一定程度上支持它们。
  3. 默认情况下,传输大小最大为 254 字节,更多作为配置选项。
  4. 带有可自由使用的 USB 标识符(供应商 ID 和产品 ID 对)
  5. 可在任何具有至少 2 kB 闪存、128 字节 RAM 和至少 12 MHz 时钟速率的 AVR 微控制器上运行。
  6. 无需UART、定时器、输入捕获单元或其他特殊硬件(一个边沿触发中断除外)。
  7. 可采用12 MHz、15 MHz、16 MHz、18 MHz或20 MHz晶振或12.8 MHz或16.5 MHz内部RC振荡器进行时钟。
  8. 高级功能是用 C 语言编写的,并且有很好的注释。
  9. 只有大约 1150 到 1400 字节的代码大小。
  10. 许可证:开源或商业。

二、相对于替代解决方案的优势

(1) 为什么不选择内置USB硬件的微控制器呢?

其中有几个可用()。或者将您选择的微控制器与 USB 芯片相结合?

(2) 与带 USB 硬件的微控制器相比的优势

  1. 标准 AVR 控制器通常更容易获得。
  2. 大多数支持 USB 的控制器仅提供 SMD 格式,这对于业余爱好者来说几乎是不可能的。
  3. V-USB 带有一个免费的共享供应商/产品 ID 对。
  4. 一个好的免费 ANSI-C 编译器 (GNU gcc) 和 Windows 的免费开发系统 (WinAVR) 可用于 AVR。
  5. AVR 控制器比大多数集成 USB 的控制器更快,而且成本更低。
  6. 独立操作:某些 USB 控制器将其固件从主机下载到 RAM 中。如果没有与主机的连接,它们就无法工作。
  7. AVR 控制器具有片上 EEPROM。

(3) 与单独的 USB 外设相比的优势

  1. 无需额外费用。
  2. 没有额外的硬件复杂性:更简单的PCB,更少的故障。
  3. 断开 USB 连接时不会额外消耗电量。这可能与电池供电的设备有关。
  4. 在选择 USB 描述符方面有更大的自由度。
  5. V-USB 带有一个免费的共享供应商/产品 ID 对。
  6. 使用的硬件资源很少:只有两到三个 I/O 引脚。

(4) 与其他纯固件实现相比的优势

Igor Češko 为 AVR 系列微控制器提供了类似的驱动程序。与 Igor 的驱动程序相比,我们的 USB 驱动程序具有以下优点:

  1. 所有可定制的代码都用 ANSI-C 编写,因此更易于维护。
  2. 模块化概念:更易于集成到现有设计中。
  3. 尽管有高级语言模块,但代码大小略小。
  4. 更快:所有编码/解码(USB 需要 NRZI 编码和位填充)都是实时完成的,而不是在存储原始数据流后的主循环中完成的。
  5. 可以更好地自定义更多端点、USB 描述符。
  6. V-USB 带有一个免费的共享供应商/产品 ID 对。
  7. 记录标准符合性水平(限制和潜在问题的描述)。
  8. 根据 GNU 通用公共许可证的条款或商业许可证获得许可。

迪克·斯特里夫兰(Dick Streefland)将旧版本的V-USB剥离到最基本的部分。他的代码更易于阅读和理解,但缺少 V-USB 中的一些功能:

  1. V-USB 最多支持 4 个端点。这允许实现符合 HID 或 CDC 设备类的设备。
  2. V-USB 通过了 usb.org 测试实用程序中的测试。
  3. V-USB 支持许多不同的时钟速率,有些甚至带有内部 RC 振荡器。

三、链接

官方

gitee

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

jianqiang.xue

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值