case USB_INT_EP2_OUT: { // 如果USB傳輸?shù)哪康亩它c(diǎn)號(hào)為端點(diǎn)2,//批量端點(diǎn)下傳成功 if ( s & BIT_STAT_TOG_MATCH ) { // 如果USB總線正在復(fù)位 //僅同步包 h = Read374Byte( REG_USB_LENGTH ); //USB長度寄存器,只讀/只寫, //讀為當(dāng)前USB傳輸?shù)慕邮臻L度, //在設(shè)備方式下,寫為USB端點(diǎn)2發(fā)送長度,現(xiàn)在是讀 Read374Block( RAM_ENDP2_RECV, h, buff ); //在設(shè)備方式下,讀出USB端點(diǎn)2緩沖區(qū)的值, //放入buf緩沖區(qū)中 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;
這個(gè)是官方的例程,是正確的,pc發(fā)送命令回傳回去 我把Write374Byte( REG_USB_LENGTH, h ); 里的h變量改為64以后,上位機(jī)軟件就收不到東西了,但是從總線分析儀里可以讀到一次數(shù)據(jù)(發(fā)多少命令都只有一次數(shù)據(jù)可以讀到)請(qǐng)問這是為什么啊?按說和h無關(guān)的
還有就是我如何連續(xù)發(fā)數(shù)據(jù)? 是否 1)在上傳中斷里,向端點(diǎn)發(fā)送緩沖區(qū)里寫數(shù)據(jù) 2)寫明數(shù)據(jù)長度 3)回一個(gè)ack包 就可以了? 我嘗試了一下,因?yàn)樽钌厦娴膯栴}沒得以解決,所以連續(xù)發(fā)數(shù)據(jù)也不成功,不知道問題所在