参考官方的demo HID+UDISK的的程序。 CH374U工作在HOST模式下, 插入自定义的HID的设备 已经枚举成功,并且可以正常的接收数据, 但是发送数据失败, 程序代码(具体见附件.c .h文件
), 下面的实际代码 在hid的 device设备上进行仿真 有进入OUT中断, 但是,收到的数据不对。
//发送HID的数据
UINT8 HID_Send_Data(uint8_t ch, UINT8 HubIndex,UINT8 **Edp,UINT8 *DataBuffer, UINT32 len )
{
UINT8 s;
/* 设置待操作Hub口 */
SelectHub(ch, HubIndex );
if(len>((PEDP_INFO)*Edp)->MaxPacket)
{
len=((PEDP_INFO)*Edp)->MaxPacket;
}
// s = Issue_Token(ch, DEF_USB_PID_OUT, ((PEDP_INFO)*Edp)->EDPNum, ((PEDP_INFO)*Edp)->Tog, 0 ); //不重试
s = Issue_Token(ch, DEF_USB_PID_OUT, (((PEDP_INFO)*Edp)->EDPNum)&0x0F, ((PEDP_INFO)*Edp)->Tog, 1000);
if( s == DEF_USB_PID_ACK )
{
((PEDP_INFO)*Edp)->Tog ^= 1; //开启这后 接收就异常
CH374_WriteBlockData(ch, RAM_HOST_RECV, DataBuffer, len);
CH374_WriteRegData(ch, REG_USB_LENGTH,len);
Delay_Ms(200);//等发送完成
}
else
return s;
return Success;
}
其中ch 是 (设备IC的cs的片选号 )
上述函数 是参考 get HID data 函数编写的,