使用CH374 HOST HID模式下写数据异常

在使用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读取数据均有数据返回

微信截图_20190509212251.png



请教程序哪里有不合理或者不对的地方,非常感谢!

你好:


PC端的软件是不是你做的?

你前面的枚举其实没有完成,对于HID设备,在“SetUsbConfig”后,还有类命令需要交互。(这个其实不确定,看设备是怎么做的,常规都是类命令之后才是数据传输。)

你前面发送数据都发不下去就不用测试了,0x20 表示数据超时,如果设备不接受数据应该是0x2A

建议你电脑上装bushound软件抓取pc端调试助手和当前设备通讯的过程,然后在374操作流程上看看步骤是否有问题。


如果你还有其他问题,可以来电 025-52638376。


你好!

PC软件是网上找到的USB工具,是可以正常通信的,通过bus Hound 进行抓包发现数据如下

微信截图_20190511154932.png

在发送数据前并没有发现一些操作?


你好:

你bushound软件抓包没有从开头抓取,枚举阶段都没有抓到。

请来电咨询关于CH374的问题, 025-52638376


只有登录才能回复,可以选择微信账号登录