现在使用STM32F103单片机进行USB通信,现在是做USB的Keyboard模式和Custom模式,下通过端点0进行命令通信和指令响应。现在通信正常了。但如何使用USB的端点0进行上位机指令的接收和发送。我使用UserToPMABufferCopy(DataBuffer, GetEPTxAddr(ENDP0), Length); 和PMAToUserBufferCopy(Buffer, GetEPRxAddr(ENDP0), Length);都无法进行数据的接收和发送,因为也没使用过USB的端点0进行数据的通信,所以使用这两个函数,也无法进行数据的收发。希望能够解答一下关于USB的端点0如何进行数据的收发。非常感谢
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
嗯 我有点不理解你说的意思 我说一下我的方法 首先就是关于set report和get report、set ldte这三个参数。不管USB是什么模式都好 这三个参数都是必须用到的。第一点主要是和PC端握手过程。第二点就是上位机会向下位机发送set report 、get report。并且我都做了响应,但在上位机给我发的02 52 7e 2d给我 我都收到了 但是回应给上位机的指令 上位机都没有收到 所以就是问题点就卡在这里 我整个通信都已经是正常的 包括普通数据上送 普通数据上送是其实其他端点
您的source code里面应该原本就有Get Protocol / Get Idle这类在control pipe回应资料给host的code吧.
可以采用同样方式回传资料试试看.
我这边看到他是用调用USBD_CtlSendData().
hhid->IsReportAvailable = 1U;
USBD_CtlPrepareRx (pdev, hhid->Report_buf, req->wLength);
break;
case CUSTOM_HID_REQ_GET_REPORT:
Get_Report = 1;
break;
main 中:
if(有命令)
{处理命令,保存结果到数据发送区}
if(有数据发送)
{ if(Get_Report == 1) {读取数据 USBD_CtlSendData 发送函数
Get_Report = 0;
}}
一周热门 更多>