4 个版本 (重大更新)

0.3.0 2024年8月5日
0.2.0 2024年5月20日
0.1.0 2024年1月11日
0.0.0 2021年4月21日

嵌入式开发 中排名第 392

Download history 960/week @ 2024-05-04 1260/week @ 2024-05-11 2361/week @ 2024-05-18 1981/week @ 2024-05-25 1471/week @ 2024-06-01 1255/week @ 2024-06-08 1061/week @ 2024-06-15 1688/week @ 2024-06-22 1774/week @ 2024-06-29 1579/week @ 2024-07-06 2189/week @ 2024-07-13 1657/week @ 2024-07-20 1494/week @ 2024-07-27 1717/week @ 2024-08-03 2237/week @ 2024-08-10 1607/week @ 2024-08-17

每月下载量 7,217
13 个crate中(直接使用10个)中使用

MIT/Apache

440KB
9K SLoC

embassy-usb

Rust中嵌入式设备的异步USB设备栈。

特性

  • 原生异步。
  • 完全无锁:端点是独立的对象,可以独立使用,无需中央互斥锁。如果驱动程序支持,它们甚至可以用于不同的优先级。
  • 挂起/恢复,远程唤醒。
  • USB复合设备。
  • 人体工程学描述符构建器。
  • 为一些USB类提供现成的实现(注意您仍然可以在crate外部实现任何类)。
    • 串行端口(CDC ACM)
    • 以太网(CDC NCM)
    • 人机界面设备(HID)
    • MIDI

添加对新硬件的支持

要为新的硬件(即新的MCU芯片)添加 embassy-usb 支持,您必须编写一个实现 embassy-usb-driver 特性的驱动程序。

驱动程序crate应仅依赖于 embassy-usb-driver,而不是主 embassy-usb crate。这允许现有驱动程序在不需要更新的情况下继续在新版本的 embassy-usb 上工作,前提是驱动程序特性和没有重大更改。

配置

embassy-usb 有一些配置设置,它们在编译时设置,影响缓冲区的大小和数量。

它们可以通过两种方式设置

  • 通过货物功能:启用类似以下功能 <name>-<value>name 必须是小写,并使用破折号代替下划线。例如,max-interface-count-3。只有一组值可供选择,请检查 Cargo.toml 获取列表。
  • 在构建时通过环境变量:设置名为 EMBASSY_USB_<value> 的变量。例如 EMBASSY_USB_MAX_INTERFACE_COUNT=3 cargo build。您也可以在 [env] 部分中设置它们,位于 .cargo/config.toml。与 Cargo 功能不同,可以设置任何值。

环境变量优先于 Cargo 功能。如果为同一设置启用了两个具有不同值的 Cargo 功能,则编译会失败。

MAX_INTERFACE_COUNT

一个设备中可以创建的最大接口数量。默认值:4。

互操作性

这个包可以在任何执行器上运行。

依赖项

~6MB
~111K SLoC