CH582M HOST发送数到设备后,提交IN一直是2A是什么问题?
// 发送CNXN包头到ADB OUT端点
uint8_t ep_out = g_adb_info.adb_ep_out & 0x0F; // 低4位为端点号
memcpy(pU2HOST_TX_RAM_Addr, cnxn_packet, 24);
R8_U2H_TX_LEN = 24;
uint8_t ret = USB2HostTransact((USB_PID_OUT << 4) | ep_out, R8_U2H_TX_CTRL, 200000 / 20);
PRINT("Send CNXN header ret=%d\n", ret);
// 提交IN端点接收回复
uint8_t ep_in = g_adb_info.adb_ep_in & 0x0F;
ret = USB2HostTransact((USB_PID_IN << 4) | ep_in, R8_U2H_RX_CTRL, 200000 / 20);
PRINT("Recv ADB IN ret=%d, len=%d\n", ret, R8_USB2_RX_LEN);
if (ret == ERR_SUCCESS && R8_USB2_RX_LEN > 0) {
PRINT("ADB IN data: ");
for (uint8_t i = 0; i < R8_USB2_RX_LEN; i++) {
PRINT("%02X ", pU2HOST_RX_RAM_Addr[i]);
}
PRINT("\n");
}
// 发送CNXN数据到ADB OUT端点
memcpy(pU2HOST_TX_RAM_Addr, cnxn_data, cnxn_data_len);
R8_U2H_TX_LEN = cnxn_data_len;
ret = USB2HostTransact((USB_PID_OUT << 4) | ep_out, R8_U2H_TX_CTRL, 200000 / 20);
PRINT("Send CNXN data ret=%d\n", ret);
ep_in = g_adb_info.adb_ep_in & 0x0F;
ret = USB2HostTransact((USB_PID_IN << 4) | ep_in, R8_U2H_RX_CTRL, 200000 / 20);
PRINT("Recv ADB IN ret=%d, len=%d\n", ret, R8_USB2_RX_LEN);
if (ret == ERR_SUCCESS && R8_USB2_RX_LEN > 0) {
PRINT("ADB IN data: ");
for (uint8_t i = 0; i < R8_USB2_RX_LEN; i++) {
PRINT("%02X ", pU2HOST_RX_RAM_Addr[i]);
}
PRINT("\n");
}
日志 header (24 bytes): 43 4E 58 4E 01 00 00 01 00 00 10 00 0D 00 00 00 85 04 00 00 BC B1 A7 B1
Send CNXN header ret=0
Send CNXN data ret=0
Recv ADB IN ret=42, len=126
更多回帖