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
每月下载量 7,217
在 13 个crate中(直接使用10个)中使用
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