1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用CH552芯片,希望模拟键鼠设备与PC建立通信。
使用例程运行正常,所以希望拓展一下模拟设备功能。 现在想在USB初始化开始,进行SETUP事务时,先接受PC的设备描述符请求,进入USB中断。此时假设不提前准备好描述符数据,而是先向其他设备请求,一段时间后通过其他通道接受到描述符数据,再将数据发往PC。 尝试了将描述符的处理过程从例程的USB中断处理中提取出来,作为一个独立的函数,另设标志位,在请求到来时,对标志位变更,然后根据标志位变化,在主循环实现对相关描述符数据的发送准备。 测试结果无法完成SETUP事务。 请问这个过程如何修改CH552例程实现?目前的例程只能在一个中断内完成数据的传输,要求提前准备好数据。若是设备主动发送数据,才有键鼠点击移动事件的例程。那么如何在不是设备主动发起数据发送的情况下, 不在请求到来的当次中断内返回数据,而在数据准备完成后再发送呢? |
|
相关推荐
5个回答
|
|
您好,根据您的描述。您可以在CH552获取并准备好描述符数据后,再以此为条件开始初始化并使能USB外设。USB通讯时,如果主机在一段时间内没有收到设备的响应,会认为设备失效,并断开与设备的链接。
|
|
|
|
超时的话应该有一个判定的时间吧,请问如果我在超时时间内能获取完整数据,这时应该如何从设备向PC发送刚刚收集到的数据呢?
|
|
|
|
您好,在数据准备好之前,枚举失败可以先将USB关闭,再重新打开USB,当数据准备好,枚举就能正常通过了。
|
|
|
|
我其实是希望模拟一个类似透传的过程。因为CH552芯片的XDATA空间并不足够让我存储一些特殊设备的完整的各类描述符。
有没有边和USB建立SETUP事务,一边从另一个设备处获取描述符,从而实现中转的方式呢?流程如:收到请求-转发请求-收到描述符-转发描述符。 CH552/554示例代码内有在中断外发送键鼠按键移动数据的方式。但没有提供中断外对PC的请求进行回复的示例,请问这种方式有什么可以实现的方式嘛? |
|
|
|
USB2.0中本身就有类似流控的NAK、ACK响应应答机制。
建议可以参考相关资料了解一下USB2.0底层包应答机制。 另外USB2.0,所有数据收发,设备都是被动的,不存在所谓“中断外对PC的请求进行回复”这种概念。 “收到请求-转发请求-收到描述符-转发描述符”这种功能的开发较为复杂,建议先将只做设备、只做主机研究透彻再进行后续开发,否则遇到问题将很难处理。 |
|
|
|
只有小组成员才能发言,加入小组>>
518 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2901 浏览 2 评论
2397 浏览 1 评论
862浏览 2评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
403浏览 1评论
681浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
413浏览 1评论
516浏览 1评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-21 22:02 , Processed in 0.991644 second(s), Total 84, Slave 68 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号