參考官方的demo HID+UDISK的的程序。 CH374U工作在HOST模式下, 插入自定義的HID的設(shè)備 已經(jīng)枚舉成功,并且可以正常的接收數(shù)據(jù), 但是發(fā)送數(shù)據(jù)失敗, 程序代碼(具體見附件.c .h文件
), 下面的實(shí)際代碼 在hid的 device設(shè)備上進(jìn)行仿真 有進(jìn)入OUT中斷, 但是,收到的數(shù)據(jù)不對。
//發(fā)送HID的數(shù)據(jù)
UINT8 HID_Send_Data(uint8_t ch, UINT8 HubIndex,UINT8 **Edp,UINT8 *DataBuffer, UINT32 len? )
{
? ? UINT8 s;
? ? /* 設(shè)置待操作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);//等發(fā)送完成
? ? }
? ? else
? ? ? ? return s;
? ? return Success;
}
其中ch 是 (設(shè)備IC的cs的片選號 )
上述函數(shù) 是參考 get HID data 函數(shù)編寫的,