完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
u8 length;
u8 i; #define AUTO #ifndef AUTO //自动获取 xWriteCH376Cmd(CMD1H_GET_DESCR); //0x46 xWriteCH376Data(1); xEndCH376Cmd(); #else // 手动传输 xWriteCH376Cmd(CMD10_WR_USB_DATA7); //0x2B xWriteCH376Data(0x08); //写入数据长度 xWriteCH376Data(0x80); // bmRequestType 主机向设备发送 xWriteCH376Data(0x06); // bRequest GET_DESCRIPTOR xWriteCH376Data(0x00); // wValueL xWriteCH376Data(0x01); // wValueH xWriteCH376Data(0x00); // wIndexL xWriteCH376Data(0x00); // wIndexH xWriteCH376Data(0x12); // wLengthL xWriteCH376Data(0x00); // wLengthH xWriteCH376Cmd(CMD2H_ISSUE_TKN_X); //0x4E xWriteCH376Data(0x00); // 同步标志 xWriteCH376Data(0x0D); // 发起控制传输 #endif if(Wait376Interrupt() == USB_INT_SUCCESS) { xWriteCH376Cmd(CMD01_RD_USB_DATA); //0x28 length = xReadCH376Data(); printf("length = %.2xn", length); for(i=0; i < length; ++i) { printf("%.2x ", xReadCH376Data()); } printf("n"); xEndCH376Cmd(); } 使用CMD1H_GET_DESCR指令获取设备描述符正确获取了设备描述符。 但尝试使用控制传输手动获取时,出现了异常,返回的数据长度为0x7E(十进制126),并且可以读出长度为0x7E的垃圾数据。 根据手册,RD_USB_DATA返回的数据块长度的有效值是0~64。 USART与SPI连接模式都有此问题。 什么原因导致响应数据异常?请各位大佬解惑。 |
|
相关推荐
1个回答
|
|
您好,看您的这个代码,不知道您是否为1字节1字节的发送的?(主要不清楚您xWrite376Data函数)。您可以发送邮件至mj@wch.cn。这边可以给您提供376手动拼包的例程。
|
|
|
|
只有小组成员才能发言,加入小组>>
463 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2868 浏览 2 评论
2357 浏览 1 评论
808浏览 2评论
CH569通过HSPI实现USB3.0和FPGA高速双向通讯
630浏览 1评论
492浏览 1评论
CH32F103C8T6使用当前官网上的CDC例程会出现设备描述符请求失败
356浏览 1评论
630浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 03:15 , Processed in 1.446113 second(s), Total 79, Slave 62 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号