请问CH375主机/设备自动切换的问题。

各位高手,请教个问题。现在我用CH375做主机/设备两种用途。一方面我可以设置CH375为主机模式,和CH372通信;另外一方面,我又能把CH372做设备方式,做一个U盘,存储器用CF卡,能通过PC机读写CF卡上的文件。现在这两个功能我都调试出来了,现在我遇到的问题是如何在CH375连接到PC机的时候,自动切换为启用的设备模式,而让它和CH372连接的时候,自动设置为主机模式。CH375支持这种自动切换的功能吗?还是需要自己想办法来实现? 另外问个问题就是,在往CH372缓冲区写入数据的时候,是否要等到头个字节指定的长度那么多个后续的字节都写入以后,CH372才发送数据,还是只要收到了IN令牌就发送数据。我指的是BULK端点。

那位大侠知道,请回答一下,万分感谢。

你可以通过一个按键来判断是工作在主机方式下还是工作在设备方式下,你可以参考CH375EVT。ZIP的例子程序的EXAM0的例子程序。 应该是将数据写到375之后在发OUT令牌,一次写给375的数据最多只能是64字节,当写成功之后,在发出DISK-WRITE-GO的命令之后就有可以往375写数据了


哦,意思不能自动实现切换,只有手动设置了?

还有我说的是CH375和CH372通讯的时候。假如CH372收到了CH375请求数据传送的命令,这是我自己规定的,如果CH372需要发送40个字节给CH375,那么这个传输是在当往CH372的端点缓冲区写满40个字节后,CH372才会把数据传送给CH75呢,还是等到CH375发送IN_PID令牌之后才发送数据给CH375?因为单片机在往CH372缓冲区写数据的时候,可能会被中断打断,所以我是想问能否保证CH372数据传送的完整性。意思就是在只往CH372缓冲区写了20个字节的时候,(本来该写40个字节,即第一个长度字节数据为40)如果这时候被中断打断,而恰在这时CH375发送了PIN_IN的令派给CH372,那么CH375能否马上收到USB_INT_SUCCESS中断(即读到20个字节),即CH372只发送了20个字节给CH375,还是说等单片机处理完中断后,再次向CH372完整写满40个字节之后,CH372才会把数据发送给CH375,CH375会等待一会收到USB_INT_SUCCESS中断(即读到40个字节)。


USB协议规范中没有提供自动切换的方法,不过在规范外有一些可供参考的方法,例如,默认为主机以检测设备插入,空闲时定期切换自身为设备试一下,以检查另一主机是否存在。 CH372在收到你所声明的长度全部共64字节后,内部只是先设置允许发送,而真正的物理传输是在等到主机发来IN请求时才进行,你声明要写入64字节,少了CH372会等待,此时有IN请求则返回NAK, 数据长度满足和主机来请求是设备上传的两个必要条件。


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