前期通過客服拿到了CH567的例程,但是由于內(nèi)容不完整,只有SETUP控制傳輸?shù)牟糠謨?nèi)容,并有一些寫法存在問題。目前經(jīng)過查閱文檔,依然無法實現(xiàn)設備端的端點批量傳輸、IN數(shù)據(jù)至上位機(上位機OUT數(shù)據(jù)能夠正常接收)。希望能夠提供批量傳輸較為完整的例程,謝謝。個人信息保護,已隱藏
主要的代碼如下:
__attribute__?((aligned(4)))UINT8 ??Ep1Buffer[512*2] ; ? ? ? ? ? ? ? ? ?// EP1 IN+OUT, must 4字節(jié)對齊
#define?UsbEp1OUTBuf?? ? ? ?((PUINT8)&Ep1Buffer[0])
#define?UsbEp1INBuf?? ? ? ? ((PUINT8)&Ep1Buffer[512])
void?USB1DeviceInit( ){
????R8_USB1_CTRL?? =?bUC_CLR_ALL; ? ? ??//清空中斷標志和FIFO
????R8_USB1_CTRL?? =?UCST_HS?|?bUC_INT_BUSY?|bUC_DMA_EN; ?//設備模式,高速,
????R8_USB1_SUSPEND?=?0; ? ? ? ? ? ? ? ?//不掛起
????R8_USB1_DEV_AD?=?0x00; ? ? ? ? ? ? ?//設備地址0
????R8_USB1_INT_FG?=?0xff; ? ? ? ? ? ? ?//清除中斷標志
????R8_USB1_INT_EN?=?bUIE_FIFO_OV?|?bUIE_SUSPEND?|?bUIE_TRANSFER?|?bUIE_BUS_RST; ? ? ? ?//中斷使能
????R8_UEP1_TX_CTRL1?=?UEP_T_RES_NAK?|?bUEP_AUTO_TOG;
????R8_UEP1_RX_CTRL1?=?UEP_R_RES_ACK|?bUEP_AUTO_TOG;
????R8_UEP4_1_MOD1?|=?bUEP1_TX_EN?|?bUEP1_RX_EN;
????R16_UEP1_MAX_LEN1?=?512;
????R16_UEP1_DMA1?= (UINT16)(UINT32)Ep1Buffer;
}
void xxxx(){
????..........
????R16_UEP1_DMA1?= (UINT16)(UINT32)UsbEp1INBuf;
????R16_UEP1_T_LEN1?=?len;
????R8_UEP1_TX_CTRL1?= (R8_UEP1_TX_CTRL1?& ~?MASK_UEP_T_RES) |?UEP_T_RES_ACK;
????//通過HUS HOUND發(fā)現(xiàn),UsbEp1INBuf數(shù)據(jù)未能發(fā)送至上位機
}