从CH32F103操作CH340代码移植到CH32V103C8T6,目前可以接受到CH340上传的数据,但是数据发送不过去,程序标志是显示发送成功。
/*发送数据长度*/
UINT8 TXDU***CH341BulkOut( PUINT8 pBuf,UINT8 len ) // 341批量发送
{
UINT8 TxCnt,s,endp = ThisU***Dev.GpVar[1];
printf("CH341 Out data: rn");
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;
printf("x%02X ",TxBuffer[ TxCnt ]);
pBuf ++;
}
s = USBHostTransact( USB_PID_OUT << 4 | (endp & 0x7F), endp & 0x80 ? RB_UH_R_TOG | RB_UH_T_TOG : 0, 0 ); // OUT数据
if ( s == ERR_SUCCESS ){
len -= R8_UH_TX_LEN;
endp ^= 0x80; // 同步标志翻转
ThisU***Dev.GpVar[1] = endp; // 保存同步标志位
}
else
{
return( s );
printf("rn");
}
}
printf("rn");
return ERR_SUCCESS;
}
/*返回数据接收长度,数据存放RxBuffer*/
UINT8 RXDU***CH341BulkIn( void ) // 341批量接收
{
UINT8 i,s,len,endp = ThisU***Dev.GpVar[0];
// CH559传输事务,获取数据,NAK不重试
s = USBHostTransact( USB_PID_IN << 4 | (endp & 0x7F), endp & 0x80 ? RB_UH_R_TOG | RB_UH_T_TOG : 0, 0 );
if ( s == ERR_SUCCESS )
{
endp ^= 0x80; // 同步标志翻转
ThisU***Dev.GpVar[0] = endp; // 保存同步标志位
len = R8_USB_RX_LEN; // 接收到的数据长度
if ( len )
{
printf("CH341 In data: rn");
for ( i = 0; i < len; i ++ )
printf("x%02X ",(UINT16)(RxBuffer[i]) );
printf("rn");
}
return len;
}
else if ( s != ( USB_PID_NAK | ERR_USB_TRANSFER ) )
printf("CH341 error %02xrn",(UINT16)s);// 可能是断开了
return 0;
}
2022-5-23 10:52:15
和CH341T可以实现发送接受,但和CH340N只能接受发送不了
和CH341T可以实现发送接受,但和CH340N只能接受发送不了
举报
2022-5-23 10:52:22
您好,这边用你的例程与CH340N通信测试没有问题。你可以检查一下是否是你的CH340N出了问题或者引脚接错
您好,这边用你的例程与CH340N通信测试没有问题。你可以检查一下是否是你的CH340N出了问题或者引脚接错
举报
2022-5-23 10:52:38
您好,单看电路感觉没什么问题,主要要确保做主机时那个R11K5要删除掉。
您好,单看电路感觉没什么问题,主要要确保做主机时那个R11K5要删除掉。
举报