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包 就可以了? 我尝试了一下,因为最上面的问题没得以解决,所以连续发数据也不成功,不知道问题所在