TeenyUSB
TeenyUSB copied to clipboard
Lightweight USB device and host stack for STM32 and other MCUs. Ready for USB 3.0 device.
如和编译ch569的demo?是需要用官方那个什么river的开发环境么?
Hi, You have mentioned Hub support on project front page but I cannot find any indication of that support on your code. After executing the program I saw that hub...
首先感谢楼主付出的努力! 看楼主做了多款开发板的兼容,能否基于cubemx做个移植的说明呢?看了下《USB设备开发指南》还是不清楚怎么把tusb移植到自己的目标板上,真心希望楼主能出个说明资料,谢谢
由于52840没有USB主机功能,近期某项目用到MAX3421E来做USB Host,NRF52840通过SPI与MAX3421E通讯,但是没有USB Host协议栈.
默认的USB_REQ_SET_INTERFACE处理中,在最后向主机响应了一个字节的数据: `tusb_control_send(dev, &dev->temp_buffer, 1);` 而USB_REQ_SET_INTERFACE的请求报文为01 0b 00 00,最后的长度域为00,就是不需要设备向主机响应数据的。 所以,默认的USB_REQ_SET_INTERFACE处理中,最后的响应应修改为: `tusb_send_status(dev);`
(1)针对STM32F1系列处理器,一个端点的缓冲区配置表项里,每个成员之间有2个字节的填充占位,所以,每个端点的缓冲区配置表项大小应该为16字节。代码中tusb_dev_drv_setup_endpoint函数里面,bt_start的计算中,固定将端点数乘以8,显然是无法兼容F1系列处理器的。考虑到stm32_fs_platform.h中为不同处理器定义了不同的pma_ep_desc结构体来描述一个缓冲区配置表项。所以,bt_start的算式中将*8修改为*sizeof(pma_ep_desc)更合理。 (2)tusb_dev_drv_setup_endpoint函数里面采用的自动端点配置策略,是依据现行激活的Interface来按需配置端点的。在bt_start的计算中,引用到的局部变量max_ep_id是已激活的Interface中最大的端点编号。注意其中,当端点号为0,且is_reset为假时,端点0的pma项并不会得到更新。在代码中,默认的SetInterface处理代码调用了tusb_init_endpoint_by_config用于配置新Interface的端点,tusb_init_endpoint_by_config调用tusb_dev_drv_setup_endpoint时,is_reset参数传递了0。也就是说,SetInterface时是不会重新配置端点0的pma的。所以,如果我们实现的设备有两个Interface,且非默认的Interface(1)使用到了更大的端点编号时,当设备初启动的时候,端点0的pma并没有考虑给Interface(1)端点预留空间,当切换到Interface(1)时,端点0的pma也没有更新,那么端点0的缓冲就会和Interface(1)的端点pma配置项相互冲突。我采用了一个简单的修改,将bt_start计算时的缓冲区配置表项的保留数量,固定按照TUSB_MAX_EP_PAIR_COUNT来计算。 最终修改代码如下: ` int tusb_dev_drv_setup_endpoint(...) { ... uint32_t bt_start = TUSB_MAX_EP_PAIR_COUNT * sizeof(pma_ep_desc); ... } ` 该问题在我实现UVC设备时发现。若不做以上修改,则要么UVC会发送出不可预期的数据,要么程序会陷入HardFault异常。经过以上修改后,UVC设备方可正常工作。
需要通过电脑读取SD卡中的文件,MCU里面已经挂载了一个fat的文件系统,msc类不再适合。 需要一个mtp的类从文件层面进行文件读写,而不是msc类直接操作SD卡。
## buffer overflow and out of bound in tusb_rndis_device_request ``` static int tusb_rndis_device_request(tusb_rndis_device_t* cdc, tusb_setup_packet* setup_req) { tusb_device_t* dev = cdc->dev; ....................... ....................... }else if(setup_req->bRequest == CDC_SEND_ENCAPSULATED_COMMAND){ dev->ep0_rx_done = rndis_dataout_request;...
**对应提交:** 当前最新提交 9cd8bda1518068d3fbd1e6173ce4e3c76d8e787a (Nov 27, 2020) **对应项目:** sample/composite/composite.uvprojx **问题描述:** composite 示例项目的原始程序可正常工作,但修改为只有一个 HID 设备后,在 PC 向设备发送 suspend 和 resume 请求后,第二次 SET_IDLE 请求设备端响应不正常。如果设备插入到了 USB Hub 而不是 Root Hub 上,后续 PC 发送 HID...
 F5 时提示这错误,有人遇到过吗?谢谢