前期通過客服拿到了CH567的例程,但是由于內(nèi)容不完整,只有SETUP控制傳輸?shù)牟糠謨?nèi)容,并有一些寫法存在問題。目前經(jīng)過查閱文檔,依然無法實(shí)現(xiàn)設(shè)備端的端點(diǎn)批量傳輸、IN數(shù)據(jù)至上位機(jī)(上位機(jī)OUT數(shù)據(jù)能夠正常接收)。希望能夠提供批量傳輸較為完整的例程,謝謝。個(gè)人信息保護(hù),已隱藏


__attribute__ ((aligned(4)))UINT8 ? Ep1Buffer[512*2] ; ? ? ? ? ? ? ? ? ?// EP1 IN+OUT, must 4字節(jié)對齊

#defineUsbEp1OUTBuf ? ? ? ?((PUINT8)&Ep1Buffer[0])

#defineUsbEp1INBuf ? ? ? ? ((PUINT8)&Ep1Buffer[512])


void USB1DeviceInit( ){

????R8_USB1_CTRL ? = bUC_CLR_ALL; ? ? ? //清空中斷標(biāo)志和FIFO

????R8_USB1_CTRL ? = UCST_HS | bUC_INT_BUSY |bUC_DMA_EN; ?//設(shè)備模式,高速,

????R8_USB1_SUSPEND = 0; ? ? ? ? ? ? ? ?//不掛起

????R8_USB1_DEV_AD = 0x00; ? ? ? ? ? ? ?//設(shè)備地址0

????R8_USB1_INT_FG = 0xff; ? ? ? ? ? ? ?//清除中斷標(biāo)志

????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ā)送至上位機(jī)

}


熱門產(chǎn)品 : USB3.0 HUB控制器:CH634