數(shù)據(jù)無法IN到上位機,求CH567批量傳輸?shù)睦?

前期通過客服拿到了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ā)送至上位機

}


在單片機執(zhí)行xxx()函數(shù)之后,CTRL寄存器中TX的狀態(tài)就變成ACK了,這個時候只要主機下發(fā)IN令牌,芯片就會將數(shù)據(jù)包上傳。但是要注意一點,首先BUSHOUND是差不多在協(xié)議層的,有些包不顯示,包括錯誤的包,其次有一些錯誤狀態(tài)也無法顯示。如果有條件用硬件抓包工具進行抓包.


只有登錄才能回復,可以選擇微信賬號登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频