1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
使用STM32串口控制376S当USB host,在发送完数据给USB设备后能正常的收到设备返回的前64个字节数据,再次启动接收,设备就返回NAK了,具体的代码实现如下:
//设置重试次数-不重试,NAK状态返回 Write_CH376_Cmd(CMD_SET_RETRY); Write_CH376_Data(0x25); Write_CH376_Data(0x00); endp6_mode = endp7_mode=0x80; //DATA0发送器 sta = 0; WR_USB_Data(4,(unsigned char *)"001?"); //USB host 发送此命令给USB 设备,设备会返回200个字节的数据 Toggle_send(); sta = Issue_token(Out_Num,DEF_USB_PID_OUT); if(sta == USB_INT_SUCCESS) { Uart3_Rx = 0; for(i=0;i<0xFF;i++) { sta = 0; Toggle_recv(); sta = Issue_token(In_Num,DEF_USB_PID_IN); if(sta == USB_INT_SUCCESS) //前面两次可以返回)0X14,之后就之一返回NAK { memset(Uart3.RX_BUF,0,BUFF_LEN); //Uart3.RX_BUF:串口接收数据缓冲区 Uart3_Rx = 0; //Uart3_Rx:串口中断次数 Write_CH376_Cmd(CMD_RD_USB_DATA0); USB_Delay_us(380000); //由于使用的时串口中断接收,所以在发送完命令后 延时一段时间,等待串口接收完设备DATA0或者DATA1的数据。 sta = 0; } } } void Toggle_recv(void) { Write_CH376_Cmd(CMD_SET_ENDP6);//向CH375的端点缓冲区写入准备接收的数据 Write_CH376_Data(endp6_mode); endp6_mode^=0x40; USB_Delay_us(20); } uint8_t Issue_token(uint8_t endpnum, uint8_t pid) { Write_CH376_Cmd(CMD_ISSUE_TOKEN); //向CH375的端点缓冲区写入准备发送的数据 Write_CH376_Data((endpnum<<4)|pid);//高4位目的端点号, 低4位令牌PID return (Wait_interrupt()); } 该如何修改一下或者哪里有问题才能解决此问题把设备返回来的数据正常全部接收下来?谢谢了。 |
|
相关推荐
3个回答
|
|
你好,当主机发IN包接收到数据后需要切换同步标志实现数据同步,你可以在if(sta == USB_INT_SUCCESS) 下添加toggle_recv()函数切换同步标志。
|
|
|
|
有切换同步标志啊,那个for循环里面就是有切换同步标志的,for循环里面就只能接收到前两个32字节数据的接收,第三次切换完同步标志Toggle_recv();,发送完Issue_token(In_Num,DEF_USB_PID_IN)命令后中断就一直返回NAK了
|
|
|
|
您好,看代码初步判断流程出问题的概率不大,如果是一直返回NAK,有可能是设备确实没有准备好数据返回。可以在电脑端用Bus Hound软件看一下在正常通讯下数据交互的情况,对比一下两种情况下是不是少做了什么操作。
|
|
|
|
只有小组成员才能发言,加入小组>>
521 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2902 浏览 2 评论
2398 浏览 1 评论
867浏览 2评论
687浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
417浏览 1评论
522浏览 1评论
请教一下,Mounriver 编译不成功:找不到库文件,怎么整
812浏览 1评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-23 00:13 , Processed in 1.282751 second(s), Total 80, Slave 64 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号