完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
我在主机模式下使用FX3 DVK。
当我在GPARIN中创建GPIF(P端口)套接字和CPU之间的DMA通道时, (GPIF插座是生产者,CPU插座是消费者) 回调例程被调用。 但是, 当我在GPIF(P端口)套接字和主机模式端点(U-PART)之间创建DMA通道时, (GPIF插座是生产者,端点插座是消费者) 不调用回调例程。 /*添加IN端点。*/CYU3PMESET((Uti8*T**)和EPCFG,0,SiEZOF(EPCFG));EpCFGType=CyuU3PySubBEPultBulax;EpCF.Mult=1;EpCF.Max pktStase:GLMSCEPPESIZE;EpCF.PrLeGrRATE=0;/*,因为DMA缓冲区大小只能是16字节的倍数,*也因为这是一个中断端点,其中最大数据*PA。CKET大小与MpPKTStand字段相同,FulpPKTSIZE *必须是16字节的倍数。* /大小=((GLMSCEPPESIZE +0x0F)和~0x0F);EpCF.FulpPKTSimple=大小;EpCFG.ISSMOSTMODE=CyFLY; /*添加EP。* /状态= CYU3PUSBHSTEPADD(GLMSCUTTEP,和EPCFG);如果(状态)!= CyuU3pIn成功){Goto枚举错误;} /*创建一个DMA通道转发EP。*/CYU3PMESET((UTI8*T**)和;DMACFG,0,SIZEOF(DMACFG));DMACFG大小=GLMSCEPESIZE;DMACFG计数=2;// 0; DMACFG.PRODHead=0;DMACFG.PRODHOPETER=0;DMACGF.CONSEADADER=0;DMACFG.PRODUDSCOUNT计数=0; DMACFG.dMAMODE=CyuU3PyDMAYMDEDEB字节;DMACFG通知=CyuU3PyDMAYBCBYPRODIAL事件CYU-U3PY-DMAYBCBY COXION事件; /*为外部EP创建DMA通道。*///DMACGF.PRODSCKID=CyuU3PyCpUCKEKYOPRD;DMACFG.PRODSCKID=CyuU3PYPIB SOCKETY5;DMACFG.CasSCHID=(CYU3PDMasOcKeTyTyt)(CyuU3PuuBiSoCKION COXIO0+(0x0F&GLMSCUTTEP));DMACFG.CB=CYFXMASPUTDMACARBACK; 状态= CYU3PDMACHANNEL CREATE(和;GLMSCUTCH,CYU-U3PYDMAX Type手册,和DMACFG);如果(状态)!= CyuU3pIn成功){Goto AppHealError;} /*启用EP传输。在流模式下,传输大小应该为零。* /状态= CYU3PUSBHOSTSTATSEXFER(GLMSCUUTTEP,CYU-U3PUSBHOSTAL EXFEFILL正常,0);如果(状态)= CyuU3pIn成功){Goto AppHealError;} 状态= CYU3PDMACHANNEL SETXFER(和;GLMSCUTCH,0);如果(状态)!{CYU3U3PY成功){CYU3pDebug(4),[错误] CYU3PDMACHANNEL SETXFER(GLMSCOUTCH)失败,错误代码= %DN“,状态”;Goto AppHealError;} 以上来自于百度翻译 以下为原文 I use FX3 DVK on host mode. When i create a dma channel between GPIF(P port) socket and CPU in MANUAL-IN, (GPIF socket is Producer, CPU socket is Consumer) a Callback routine is called. but, When i create a dma channel between GPIF(P port) socket and Host mode Endpoint(U-port) in MANUAL, (GPIF socket is Producer, Endpoint socket is Consumer) a Callback routine is not called. /* Add the IN endpoint. */ CyU3PMemSet ((uint8_t *)&epCfg, 0, sizeof(epCfg)); epCfg.type = CY_U3P_USB_EP_BULK; epCfg.mult = 1; epCfg.maxPktSize = glMscEpSize; epCfg.pollingRate = 0; /* Since DMA buffer sizes can only be multiple of 16 bytes and * also since this is an interrupt endpoint where the max data * packet size is same as the maxPktSize field, the fullPktSize * has to be a multiple of 16 bytes. */ size = ((glMscEpSize + 0x0F) & ~0x0F); epCfg.fullPktSize = size; epCfg.isStreamMode = CyFalse; /* Add the OUT EP. */ status = CyU3PU***HostEpAdd (glMscOutEp, &epCfg); if (status != CY_U3P_SUCCESS) { goto enum_error; } /* Create a DMA channel for OUT EP. */ CyU3PMemSet ((uint8_t *)&dmaCfg, 0, sizeof(dmaCfg)); dmaCfg.size = glMscEpSize; dmaCfg.count = 2; // 0; dmaCfg.prodHeader = 0; dmaCfg.prodFooter = 0; dmaCfg.consHeader = 0; dmaCfg.prodAvailCount = 0; dmaCfg.dmaMode = CY_U3P_DMA_MODE_BYTE; dmaCfg.notification = CY_U3P_DMA_CB_PROD_EVENT | CY_U3P_DMA_CB_CONS_EVENT; /* Create a DMA channel for OUT EP. */ //dmaCfg.prodSckId = CY_U3P_CPU_SOCKET_PROD; dmaCfg.prodSckId = CY_U3P_PIB_SOCKET_5; dmaCfg.consSckId = (CyU3PDmaSocketId_t)(CY_U3P_UIB_SOCKET_CONS_0 + (0x0F & glMscOutEp)); dmaCfg.cb = CyFxMassOutDmaCallback; status = CyU3PDmaChannelCreate (&glMscOutCh, CY_U3P_DMA_TYPE_MANUAL, &dmaCfg); if (status != CY_U3P_SUCCESS) { goto app_error; } /* Enable EP transfer. In stream mode, the transfer size should be zero. */ status = CyU3PU***HostEpSetXfer (glMscOutEp, CY_U3P_USB_HOST_EPXFER_NORMAL, 0); if (status != CY_U3P_SUCCESS) { goto app_error; } status = CyU3PDmaChannelSetXfer (&glMscOutCh, 0); if (status != CY_U3P_SUCCESS) { CyU3PDebugPrint (4, "[Error] CyU3PDmaChannelSetXfer(glMscOutCh) Failed, Error code = %dn", status); goto app_error; } |
|
相关推荐
1个回答
|
|
你好,
对。可以在GPIFIISCocket和主机模式端点套接字之间创建DMA通道。 请创建一个技术支持的情况下,您的项目附加到它,使我们的工程师之一将帮助您解决您的问题。 谢谢, 西克里希纳。 以上来自于百度翻译 以下为原文 Hi, Yes. It is possible to create a DMA channel between GPIF II sockets and Host mode endpoint socket. Please create a tech support case with your project attached to it so that one of our engineer will help you in solving your problem. Thanks, sai krishna. |
|
|
|
只有小组成员才能发言,加入小组>>
740个成员聚集在这个小组
加入小组1981 浏览 1 评论
1744 浏览 1 评论
3521 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1674 浏览 6 评论
1451 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
232浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
136浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
328浏览 2评论
275浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
459浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-8-26 21:07 , Processed in 0.897804 second(s), Total 77, Slave 60 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191