[求助]ch374上传数据

case USB_INT_EP2_OUT: { // 如果USB传输的目的端点号为端点2,//批量端点下传成功 if ( s & BIT_STAT_TOG_MATCH ) { // 如果USB总线正在复位 //仅同步包 h = Read374Byte( REG_USB_LENGTH ); //USB长度寄存器,只读/只写, //读为当前USB传输的接收长度, //在设备方式下,写为USB端点2发送长度,现在是读 Read374Block( RAM_ENDP2_RECV, h, buff ); //在设备方式下,读出USB端点2缓冲区的值, //放入buf缓冲区中 USB_UpData(0, 7, updatatest); Write374Block( RAM_ENDP2_TRAN, 64, buff ); // USB回传 Write374Byte( REG_USB_LENGTH, h ); Write374Byte( REG_USB_ENDP2, M_SET_EP2_TRAN_ACK( Read374Byte( REG_USB_ENDP2 ) ) ^ BIT_EP2_RECV_TOG ); } break;

这个是官方的例程,是正确的,pc发送命令回传回去 我把Write374Byte( REG_USB_LENGTH, h ); 里的h变量改为64以后,上位机软件就收不到东西了,但是从总线分析仪里可以读到一次数据(发多少命令都只有一次数据可以读到)请问这是为什么啊?按说和h无关的

还有就是我如何连续发数据? 是否 1)在上传中断里,向端点发送缓冲区里写数据 2)写明数据长度 3)回一个ack包 就可以了? 我尝试了一下,因为最上面的问题没得以解决,所以连续发数据也不成功,不知道问题所在

楼主,你这官方的程序是在哪下的?哪个文件夹里?我也遇到数据大于64的情况了,不知道怎么办。在64之内数据读写都没错,超过了64就变成重复的了,重复了之前的数据。


方便留个QQ吧 964022811 QQ交流


另外请问贵公司技术支持 Write374Byte( REG_USB_ENDP2, M_SET_EP2_TRAN_NAK( Read374Byte( REG_USB_ENDP2 ) ) ^ BIT_EP2_TRAN_TOG );是什么意思 没太能看明白


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