
我的研究背景是将USB OTG接口初始化成USB转串口,USB模块定义CDC时用了两个接口,CDC通信类接口和data类接口,接在Windows上在设备管理器中也能识别为“Communications Port(COM5)”。。。用串口工具对COM5串口进行传输数据测试,并用Bus Hound进行抓包和获取速率。。。问问:1、上位机和我的USB接口进行数据传输时,枚举时是通过通信类接口的0端点和中断端点进行通信,枚举之后进行的数据收发应该就是通过data类接口自定义的两个批量端点来进行的,是吗?因为我这个是USB OTG接口,所以与上位机通信是直接与USB模块来通信的,和圈圈讲的上位机发来的数据需要先通过串口再与USB进行数据交互的过程不一样吧??? 2、Bus Hound测试出来的速率可信吗?因为计时发现完全不对。。。 希望能得到大家的帮助 |
stm32哪个系列芯片支持2个USB,主设备,且usb可以支持标准的uvc协议,哪里可以下载usb开发库
新手小白,SMT32 TP Tool Windows无法安装驱动怎么处理
如何用c#使用ST25R3911DISCOComm.dll来读取和写入NDEF区的数据,需要相关例程,感谢各位大佬拯救一下我啊!????
USBx配置有哪些小的需要注意的细节?
H743ZIT6 USB虚拟串口 CDC电脑无法识别(获取描述符失败)
STM32F407的高速USB,采用的是虚拟串口方式,VCP驱动有linux系统的吗
STM32H533的USB使用问题
stlink 串口驱动安装前面有叹号软件里无法找到
STM32 usb传输的时延和丢帧问题
STM32H743+USB3300传输采集的数据前几次会丢包问题
2、Bus Hound测试出来的速率可信吗?因为计时发现完全不对,对于这个问题就不太了解了,你可以拿一个现成的usb转串口线来测试,看下可不可信
评分
查看全部评分
有疑问想请教一下,两个高速批量端点的FIFO大小是512字节:
_ux_dcd_otg_register_write(dcd_otg, UX_DCD_OTG_FS_DOEPDMA0, 0x40000000)设置OUT端点DMA的目的地址,目的地址是share memory的首地址;
_ux_dcd_otg_register_write(dcd_otg, UX_DCD_OTG_FS_DIEPDMA0, 0x40001000)设置IN端点DMA的目的地址;
_ux_device_class_cdc_acm_read(cdc , usbx_buffer, UX_DEMO_BUFFER_SIZE, &actual_read_length)是cdc设备接收host发来的数据的函数,usbx_buffer是应用程序定义的数组,UX_DEMO_BUFFER_SIZE是数据的大小;
_ux_device_class_cdc_acm_write(cdc , usbx_buffer, actual_read_length, &actual_write_length)是cdc设备向host发送数据的函数,参数同上;
1、当host向device发数据到out端点FIFO后,填满FIFO后触发out端点中断,然后通知CPU到OUT端点的目的地址去处理数据,如果是setup事务,需要将数据搬送到usbx_buffer数组空间里去解析吗?
2、还有,看OUT端点和IN端点之间是相差0x1000,这意思是OUT端点的DMA目的地址能存8个wMaxPacketSize吗?那这个OUT端点中断的触发是当发送一个512字节的包给out端点就触发呢,还是当DMA目的地址存满8个512才触发呢?同理IN。。。
3、如果只是测试device接收数据,那device接收的数据存在usbx_buffer数组中无法传输出去,就会被覆盖吗?
这样的理解能帮忙分析下吗?
点评
不是很明白。。。
1、setup事务是针对端点0而言的,所以不涉及到你批量端点的DMA操作。
2、OUT/IN端点的DMA地址问题,我觉得得看下stm32参考手册中usb的内存分配知识,otg我还不太了解。
3、数据应该是会被覆盖的
评分
查看全部评分