在使用CH374 作为HOST 于HID设备进行通信时,前面获取描述符都是正常的,但是读写数据却是异常的。
uint8_t write_buff[64]={
0x3F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF ,0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF
};
HostSetBusFree();
while(!Query374DeviceIn());
delay_ms(250);
HostSetBusReset( );
while(!Query374DeviceIn());
delay_ms(250);
if ( Query374DevFullSpeed( ) )
{
HostSetFullSpeed( );
}
else
{
HostSetLowSpeed( );
}
delay_ms(50);
s = GetDeviceDescr( buf );//获取设备描述符
s = SetUsbAddress( 0x02 );//设置地址
s = GetConfigDescr( buf );//获取配置描述符
s = SetUsbConfig( ( (PUSB_CFG_DESCR)buf ) -> bConfigurationValue );//设置参数
以上所有初始化返回值都是USB_INT_SUCCESS,没有任何异常,并检查获取的描述符内容均正确
//HID读写异常
Write374Byte( REG_USB_LENGTH, 64 );
Write374Block( RAM_HOST_TRAN, 64, write_buff );
s = WaitHostTransact374( 0x02, DEF_USB_PID_OUT, FALSE, 1000 );
s = WaitHostTransact374( 0x02, DEF_USB_PID_IN, FALSE, 1000 );
len = Read374Byte( REG_USB_LENGTH );
Read374Block( RAM_HOST_RECV, len, read_buff );
返回的s为0x20 ,数据写不进去,也读不出来
下面是我用PC软件助手取代CH374读取数据均有数据返回
请教程序哪里有不合理或者不对的地方,非常感谢!