您好:
374S在做設(shè)備時,備置成功,收發(fā)數(shù)據(jù)正常,用CH372軟件調(diào)試時數(shù)據(jù)一切正常,但就是第24腳 ACT輸出不正常,如果只收數(shù)據(jù)時 ACT是一個脈沖,肉眼看LED燈亮,低電平占時間長。如果收到數(shù)據(jù)再返回上傳時,ACT是一個20US的低脈沖,肉眼看LED燈滅。如果收到數(shù)據(jù)不讀,但上傳數(shù)時,有時候LED燈亮,有時候閃爍,有時候滅,程序是貴公司提供的,如果只收數(shù)據(jù)不上傳數(shù)據(jù)用CH272調(diào)試軟件在連續(xù)單點下傳時,燈不亮,只有在選中自動后,燈才會亮 Write374Byte( REG_USB_ADDR, 0x00 ); Write374Byte( REG_USB_ENDP0, M_SET_EP0_TRAN_NAK( 0 ) ); Write374Byte( REG_USB_ENDP1, M_SET_EP1_TRAN_NAK( 0 ) ); Write374Byte( REG_USB_ENDP2, M_SET_EP2_TRAN_NAK( 0 ) ); Write374Byte( REG_INTER_FLAG, BIT_IF_USB_PAUSE | BIT_IF_INTER_FLAG ); // 清所有中斷標(biāo)志 Write374Byte( REG_INTER_EN, BIT_IE_TRANSFER | BIT_IE_BUS_RESET | BIT_IE_USB_SUSPEND ); // 允許傳輸完成中斷和USB總線復(fù)位中斷以及USB總線掛起中斷,芯片喚醒完成中斷 Write374Byte( REG_SYS_CTRL, BIT_CTRL_OE_POLAR ); // 對于CH374T或者UEN引腳懸空的CH374S必須置BIT_CTRL_OE_POLAR為1 Write374Byte( REG_USB_SETUP, BIT_SETP_TRANS_EN | BIT_SETP_PULLUP_EN ); // 啟動USB設(shè)備
端點2傳數(shù)據(jù)程序: switch( s & BIT_STAT_PID_ENDP ) { // USB設(shè)備中斷狀態(tài) case USB_INT_EP2_OUT: { // 批量端點下傳成功 if ( s & BIT_STAT_TOG_MATCH ) { // 僅同步 l = Read374Byte( REG_USB_LENGTH ); Read374Block( RAM_ENDP2_RECV, l, rd_Buf ); Write374Block( RAM_ENDP2_TRAN, 16, rd_Buf ); // 演示回傳 Write374Byte( REG_USB_LENGTH, 16 ); Write374Index( REG_USB_ENDP2 ); // 對于并口連接可以用本行及下面一行代替上一行的程序,減少寫一次index的時間,提高效率 Write374Data( M_SET_EP2_TRAN_ACK( Read374Data0( ) ) ^ BIT_EP2_RECV_TOG ); } break; } case USB_INT_EP2_IN: { // 批量端點上傳成功,未處理 Write374Index( REG_USB_ENDP2 ); // 對于并口連接可以用本行及下面一行代替上一行的程序,減少寫一次index的時間,提高效率 Write374Data( M_SET_EP2_TRAN_NAK( Read374Data0( ) ) ^ BIT_EP2_TRAN_TOG ); break; }