各位前辈好
标题不知道该怎麽下才好, 故先用USB to I2C当标题
第一次写USB to other interface的需求, 很多方面都不了解
规划上, 不知道该选择何种protocol会比较好开發
故想求助一些方向,如果有现成的原代码可以参考更好
目前的问题如下
MCU上有下列多组interface
I2C (4组)
SPI (4组)
UART (3组)
PWM (原生2组+2组GPIO模拟)
SDIO (一组 for SD card)
想利用USB 2.0 interface串接起来 (USB to I2C/SPI/UART/PWM/SD)
USB2.0 endpoints 5 in /5 out
目前研究了几种方式
1. 使用IAD 複合式 的方式,但發现光是 CDC endpoints 数目会不够用
IAD -> CDC-ACM -> UART (3 endpoints * 4)
-> ...
2. Vendor-Specific
参考市面上的USB to UART
它们的作法是使用 Vendor-Specific
以Interrupt IN / Bulk in/out 三个endpoints 来作
但该传哪些资料/哪些Byte代表什么意思 , 需全部自定义
但 有一个疑问点为
如果在 USB to I2C/SPI/UART/PWM 之下
需要更多的endpoints 吗?
3. 使用HID
目前于网路上有查询到 MS 有定义过 USB HID I2C的 spec
但着墨不多, 范例也少
直觉上 USB to I2C/SPI/UART/PWM
也需自定义, 但是基于自定义Report descriptor的架构上 去实现
关于2跟3,如日后driver和application 会在linux 上开發
会建议使用哪种方式较佳呢?
关于这类USB to XXX interface的部分 有网站或文件可以推荐参考吗?
|