使用CH32F103 USB HOST 驅(qū)動(dòng)CH340的源程序,可以正常操作。驅(qū)動(dòng)CP2102程序顯示能正常連接,但發(fā)不出數(shù)據(jù). 請(qǐng)教!??!USB新手, 有沒有大佬教下如何修改?
您好,您工程中主機(jī)獲得的端點(diǎn)是固定的(端點(diǎn)2),但實(shí)際cp2102的端點(diǎn)是端點(diǎn)1或其他端點(diǎn)導(dǎo)致枚舉過程獲得的端點(diǎn)信息與實(shí)際收發(fā)數(shù)據(jù)的端點(diǎn)信息不符。修改方法如下,
張工,您好!感謝幫忙! 程序測(cè)試CP2102 端點(diǎn)是端點(diǎn)1。 第一次發(fā)送數(shù)據(jù)s==ERR_SUCCESS,? 但TXD端還是檢測(cè)不到數(shù)據(jù)。之后發(fā)送數(shù)據(jù)全部返回s==0x2A.?將USBHostTransact函數(shù)timeout?加大也沒有作用。CH340測(cè)試正常。請(qǐng)?jiān)賻兔纯催€有什么問題?謝謝!
/*發(fā)送數(shù)據(jù)長(zhǎng)度*/
UINT8TXDUsbCH341BulkOut( PUINT8 pBuf,UINT8 len )? // 341批量發(fā)送
{
? UINT8 TxCnt,s,endp;
? endp = ThisUsbDev.GpVar[1];
while ( len ) {
Delay_Us( 200 );
R8_UH_TX_LEN = len >= 32 ? 32 : len;
for ( TxCnt = 0; TxCnt != R8_UH_TX_LEN; TxCnt ++ ) {
TxBuffer[ TxCnt ] = *pBuf;
pBuf ++;
}
s = USBHostTransact( USB_PID_OUT << 4 | endp & 0x7F, endp & 0x80 ? RB_UH_R_TOG | RB_UH_T_TOG : 0, 3000 );? // OUT數(shù)據(jù)
if ( s == ERR_SUCCESS ){?
len -= R8_UH_TX_LEN;
endp ^= 0x80;? // 同步標(biāo)志翻轉(zhuǎn)
ThisUsbDev.GpVar[1] = endp;? // 保存同步標(biāo)志位
}
? ? else return( s );
}
? return ERR_SUCCESS;
}
您好,請(qǐng)將您目前的調(diào)試進(jìn)度通過微信發(fā)我,這邊給您看一下。V:19951759326
解決了嗎?能把例程發(fā)出來嗎?