关于CH565W单片机中USB3.0的开发

你好,请问一下,

1、在代码中加了打印,枚举过程中没有调用这个?为啥呢?

image.png
2、如你所说,如果有数据阶段,数据阶段的处理就在EP0_OUT_Callback中处理,也是endp0RTbuff[0]开始?


1、

常见的设备类型枚举过程没有"数据阶段为OUT的请求",尤其是CH372厂商设备,肯定没有此类请求,即例程必定不会进入"EP0_OUT_Callback()"。

如果有此类需求,需要电脑开发上位机程序,并自行调用相关控制传输API实现。或者修改CH569/565实现的设备类型(Class、Sub Class),某一些设备类型的枚举过程可能有"数据阶段为OUT的请求"。

使用16楼测试程序进行测试。


2、数据阶段方向是OUT的话,是这样的


你好,请问一下,枚举过程遇到如下情况是啥问题呢?

image.png


wireshark抓包内容如下:

icon_rar.gifusb枚举.rar


枚举部分代码如下:

icon_rar.gifusb30.rar




对比代码的修改,工具显示的差异,找规律。



你好,请问一下,我这边的要求是:EP0发送一个命令过来EP2in就连续不断发送数据给PC,按照我的理解void EP2_IN_Callback(void)这个函数是在EP2in发送结束的时候调用的,我应该调用那个函数来让EP2in开始从DmaBuff中去取数据发送呢?发送的长度(非1024对齐)如何指定呢?


上传数据逻辑参考:https://www.wch.cn/bbs/thread-86976-1.html中的上传部分。

作为设备强调“被动”属性,设备是去改变应答状态,然后等待主机启动收发数据。

"EP2_IN_Callback()"是传输完成后的通知。

通过配置"USB30_IN_Set()"和"USB30_Send_ERDY()",就能够将上传的应答状态改成ACK,此时根据USB协议,如果存在需要从设备取数据,则主机就会发起事务,随后程序就会进入"EP2_IN_Callback()",标志事务结束。

配置时注意"USB30_IN_Set()"和"USB30_Send_ERDY()"中包数量应一致,"USB30_IN_Set()"和电脑上位机软件配置的数据长度一致(字节长度)。


你好,我们在批量传输数据的最后一个burst过程中,含有一个非满包,通过USB30_IN_Set()设置最后一包的数据长度为数据总长度%1024。通过bushond测试没有办法读取非满包会有问题。请问该怎么解。




你好,请问下标准请求中的Clear/Set Feature中该如何处理?你们提供的实例代码也没有做处理。
image.png


根据请求具体内容,使能或禁止端点、接口的功能,简单说就是停止传输数据或者开始传输数据,停止设备本身功能。


你好,请问下,使能或者禁止端口调用什么API?使能或者禁止接口调用什么API?

image.png

我是这么写的,未达到预期效果,能否提供一下示例代码,ths。


您好,我按照这个帖子里的方式修改USB-DEVICE代码想做一个USB的消息轮回,如图修改代码,能收到bus hound下传的OUT包,但用bus hound抓不到MCU-》PC的IN包,MCU这边也没有进入到EP0_IN_Callback。咨询一下是代码修改哪有问题还是用bus hound没有去主动读取IN包呢?


1662017208176901.png

1662017208608791.png

1662017208619256.png



CH569例程中的CH372例程用的是批量传输,当主机从端点1下发四包成功后(即nump == 0),转换端点方向和接收数据长度(后面两个函数),此时需要上位机主动发出IN包去取设备准备好的数据(BUSHOUND体现为点击端点1的IN按钮)。

image.png


你好 usb3.0操作的库 能否提供一个 只包含usb3.0的,ext里面的库很大,把其他模块的驱动都包含进去了,而且他驱动模块是有源代码的,比如spi,如果我修改了 这个spi的代码,编译器就会提示重复定义;谢谢.


CH372DEVICE例程中的库只包含USB相关。如果编译时产生重定义错误,请检查工程的代码包含关系。


你好,请问下ISOC 模式下连续传输,ITP_CallBack()内部如何实现?麻烦提供一个示例。


只有登录才能回复,可以选择微信账号登录