完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
电子发烧友论坛|
由于在现有固件示例中需要响应转移(CyfFXYRQTJI2CYEEPROMYORD WORD),所以在PC应用软件中使用CyAPI库接口类中的“CyCuffEngestEndoPoT”的写()函数进行传输,如下所示的代码已被AD德德。
GLAP0缓冲器〔0〕=状态;状态=CYU3PUBSENEDEND0DATA(1,GLAP0缓冲器); 然而,超时错误(65)发生在CYU3PUBSENDEP0DATA数据中。我想知道是否有办法解决这个问题。 /*回调以处理USB安装请求。* / CyBooLyt CyfxUsBuSUTPUCB(UInt32×StUpDAT0,UInt32×StUpDAT1){UInt8It t AtTr,RQT,I2CADDR=0;UInt16t t值,索引,长度;CybOLLyt iSthangLED=CyTrand;Cyu3PrEntStutsUst状态=CyuU3pl成功; /*解析控制请求参数。*/Atf=(uTn8It)(StuuDAT0&AMP;0x000 000 FF);RQT=(Unt8It)((StudiDAT0&AMP;0x00 000 FF00)& gt;8);value=(uTun160t)(StuuDAT0 0和gt;16);index=(Uti1616T)(SETUPDAT1和0x00 00 FFFF);长度=(UIT1616T)(SETUPDAT1和GT;GT;16); *使用快速枚举。这里只处理供应商。*/IF((Atf&CyuU3PuSbBype Type面具)!= CyuU3PySubjValordRyrqt){CurryCyFalman;} 开关(RQT){ Cyfxfrqrqt2i2cEEEEPROMIX写:I2CADDR=0xA0}((值和0x00 07)& lt;1);状态= CYU3PUBGETEP0DATA(长度,GLUB0缓冲器,NULL);IF(状态=CyuU3Py成功){CyfxFlash Pro G2cTrue(索引,I2CADDR,长度,GLAP0缓冲器,CyFalse);} GLUB0缓冲器〔0〕=状态;状态=CYU3PUBSSENDABD0DATA(1,GLAP0缓冲器); 默认值:/*这是未知的请求。*/ISHANDELID= CyFalm;S断裂;} /*如果有任何错误,返回未处理,以便库将停止请求。替代地,EP0可以停滞在这里并返回*Cytru.*/IF(状态)!= CyuU3pl成功){ISHANDLED=CyFalm;} 返回归宿; 以上来自于百度翻译 以下为原文 since response transfer is additionally needed from the existing firmware example when Control OUT (CY_FX_RQT_I2C_EEPROM_WRITE) transfer using write() function of "CCyControlEndpoint" among CyAPI library interface classes at PC application software occurs, following code as shown below have been added. glEp0Buffer[0] = status; status = CyU3PU***SendEP0Data(1, glEp0Buffer); However, timeout error (65) occured in CyU3PU***SendEP0Data. I would like to know if there is some way to get this problem solved. /* Callback to handle the USB setup requests. */ CyBool_t CyFxUSBSetuPCB ( uint32_t setupdat0, uint32_t setupdat1 ) { uint8_t attr, rqt, i2cAddr = 0; uint16_t value, index, length; CyBool_t isHandled = CyTrue; CyU3PReturnStatus_t status = CY_U3P_SUCCESS; /* Parse the control request parameters. */ attr = (uint8_t) (setupdat0 & 0x000000FF); rqt = (uint8_t)((setupdat0 & 0x0000FF00) >> 8); value = (uint16_t) (setupdat0 >> 16); index = (uint16_t) (setupdat1 & 0x0000FFFF); length = (uint16_t) (setupdat1 >> 16); /* Fast enumeration is used. Only vendor is handled here. */ if ((attr & CY_U3P_USB_TYPE_MASK) != CY_U3P_USB_VENDOR_RQT) { return CyFalse; } switch (rqt) { case CY_FX_RQT_I2C_EEPROM_WRITE: i2cAddr = 0xA0 | ((value & 0x0007) << 1); status = CyU3PU***GetEP0Data(length, glEp0Buffer, NULL); if (status == CY_U3P_SUCCESS) { CyFxFlashProgI2cTransfer (index, i2cAddr, length, glEp0Buffer, CyFalse); } glEp0Buffer[0] = status; status = CyU3PU***SendEP0Data(1, glEp0Buffer); break; default: /* This is unknown request. */ isHandled = CyFalse; break; } /* If there was any error, return not handled so that the library will * stall the request. Alternatively EP0 can be stalled here and return * CyTrue. */ if (status != CY_U3P_SUCCESS) { isHandled = CyFalse; } return isHandled; } |
|
相关推荐
1个回答
|
|
|
CyCuffEngEnter的Wrand()是用于OUT传输,CYU3PUBSENDECOD0DATA()用于对包进行响应。看来你把转会的方向弄糊涂了。
当做, 阿南德 以上来自于百度翻译 以下为原文 Write() of CCyControlEndpoint is for OUT transfer and CyU3PU***SendEP0Data() is used to respond to IN packet. Looks you're confusing the direction of transfers. Regards, Anand |
|
|
|
|
只有小组成员才能发言,加入小组>>
786个成员聚集在这个小组
加入小组cyUSB3014一直显示2.1,不能到3.0情况,谁遇到过
7088 浏览 0 评论
2474 浏览 1 评论
2166 浏览 1 评论
4031 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
2073 浏览 6 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
7566浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
6114浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
742浏览 2评论
709浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
7961浏览 2评论
/9
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-12-1 19:55 , Processed in 0.591400 second(s), Total 74, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191

淘帖
17621