使用CH32F103 USB HOST 驱动CH340的源程序,可以正常操作。驱动CP2102程序显示能正常连接,但发不出数据. 请教!!!USB新手, 有没有大佬教下如何修改?
您好,您工程中主机获得的端点是固定的(端点2),但实际cp2102的端点是端点1或其他端点导致枚举过程获得的端点信息与实际收发数据的端点信息不符。修改方法如下,
张工,您好!感谢帮忙! 程序测试CP2102 端点是端点1。 第一次发送数据s==ERR_SUCCESS, 但TXD端还是检测不到数据。之后发送数据全部返回s==0x2A. 将USBHostTransact函数timeout 加大也没有作用。CH340测试正常。请再帮忙看看还有什么问题?谢谢!
/*发送数据长度*/
UINT8TXDUsbCH341BulkOut( PUINT8 pBuf,UINT8 len ) // 341批量发送
{
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数据
if ( s == ERR_SUCCESS ){
len -= R8_UH_TX_LEN;
endp ^= 0x80; // 同步标志翻转
ThisUsbDev.GpVar[1] = endp; // 保存同步标志位
}
else return( s );
}
return ERR_SUCCESS;
}
您好,请将您目前的调试进度通过微信发我,这边给您看一下。V:19951759326
解决了吗?能把例程发出来吗?