完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我有一个基于VANDYAX样本的应用程序。我有一个命令,不会发送回复。我加载EP0,但它从不发送。
如果我注释了1和2,那么我得到了一个响应,但是在控制“头”之后,我没有得到两个字节的数据。 实例VRYXXFFI命令:如果1 //JAD-EnablE-FPGAG编程EP0BCH=0;//lt;& lt;& lt;lt;1 EP0bCl=0;/ /清除字节数据以允许新数据进入;也停止nAc//lt;& lt;& lt;lt;2。 (EP0CS和BMEP繁忙); 对于(i=0;i & lt;BllkCln;I++){FiestestRe[I]=*(EP0Buf+i);}如果0(/xJaveStords==1){XVFFIFSTSTAtiON=0);XSvFieliTaleIZE();} * EP0BUF=XSvFrUnE();γ} //JAD*EP0BUF=0xFF;α-Eclipse *EP0BUF=0xFF;α-Endof//EnabLeY-FPGAX编程EP0BCH=0;EP0BCL=1;//ARM端点,用字节传送EP0CS=BMHSNAK;/ /确认设备请求中断的握手阶段; PC代码是(CMD[]=0x07 0x00): 如果 (迈德夫!=空) { //JAD实现发送到板 { MyDe.FieldEntP.ReqType = MyDe.FieldEntP.方向= MyDe.FieldEntP.ReqCald=( MyDe.FieldEntP.Value= MyDe.FieldEntP.Que= 如果(MyDe.FieldEntPt)!= null)cyconst。req_vendor;cyconst。dir_from_device;字节)的命令。vr_xsvf_command;UShort)cmd.length;UShort)0;int len = CMD。长度;如果(mydev。controlendpt。xferdata(REF cmd,REF Len))返回(xsvferrorcodes)CMD [0 ];其他 } } 返回xsvferrorcodes。xsvf_u***_command_failed;xsvferrorcodes xsvf_no_device返回; 以上来自于百度翻译 以下为原文 I have an application based on the Vend_ax sample. I have one command that will not send a response back. I load EP0, but it is never sent. If I comment out #1 and #2, then I get a response back, but I do not get my two bytes of data after the control "header". case VR_XSVF_COMMAND: #if 1 //jad ENABLE_FPGA_PROGRAMMING EP0BCH = 0; //<<<<<#1 EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing //<<<<<#2 while(EP0CS & bmEPBUSY); blockLen = EP0BCL; for(i=0; i fileStorage = *(EP0BUF+i); } #if 0 //jad if (xsvfFirstCommand == 1) { xsvfFirstCommand = 0; xsvfInitialize(); } *EP0BUF = xsvfRun(); #endif //jad*EP0BUF = 0xFF; #else *EP0BUF = 0xFF; #endif // ENABLE_FPGA_PROGRAMMING EP0BCH = 0; EP0BCL = 1; // Arm endpoint with # bytes to transfer EP0CS |= bmHSNAK; // Acknowledge handshake phase of device request break; The PC code is (cmd[] = 0x07 0x00) : if (myDev != null) { //jad implement sending to board { myDev.ControlEndPt.ReqType = myDev.ControlEndPt.Direction = myDev.ControlEndPt.ReqCode = ( myDev.ControlEndPt.Value = ( myDev.ControlEndPt.Index = ( if (myDev.ControlEndPt != null ) CyConst .REQ_VENDOR; CyConst .DIR_FROM_DEVICE; byte ) Commands .VR_XSVF_COMMAND; ushort )cmd.Length; ushort )0; int len = cmd.Length; if (myDev.ControlEndPt.XferData( ref cmd, ref len)) return ( XSVFErrorCodes )cmd[0]; else } } return XSVFErrorCodes .XSVF_USB_COMMAND_FAILED; return XSVFErrorCodes .XSVF_NO_DEVICE; |
|
相关推荐
1个回答
|
|
海德里茨
这是预期的,因为你是在分配的EP0BCL寄存器开始在供应商的命令, EP0BCH=0;//lt;& lt;& lt;<1 EP0bCl=0;/ /清除字节数以允许新的数据;也停止nAc//lt;& lt;& lt;& lt;2。 这将用0字节提交EP0缓冲区,而您将不会接收任何数据。您应该首先初始化缓冲区,然后在代码中的末尾写入这些寄存器。 -SUB 以上来自于百度翻译 以下为原文 Hi dreitz, This is expected as you are assigning the EP0BCL register at the begining of the vendor command , EP0BCH = 0; //<<<<<#1 EP0BCL = 0; // Clear bytecount to allow new data in; also stops NAKing //<<<<<#2 This will commit the EP0 buffer with 0 bytes and you would not receive any data.You should first initialize the buffer and then write to these registers as you are doing at the end in your code. -shub |
|
|
|
只有小组成员才能发言,加入小组>>
754个成员聚集在这个小组
加入小组2106 浏览 1 评论
1853 浏览 1 评论
3671 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1788 浏览 6 评论
1536 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
572浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
424浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
438浏览 2评论
386浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
916浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-25 16:05 , Processed in 3.025755 second(s), Total 48, Slave 41 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号