Cypress技术论坛
直播中

李海龙

8年用户 154经验值
私信 关注
[问答]

CyU3PDmaChannelCreate()失败,错误代码=64

你好。
我想利用GPIF批量流到USB批量端点与DMA自动数据传输。
但是,cyu3pdmachannelcreate() API返回错误代码64(0x40)流值为1。
错误代码64意味着错误的参数。我的代码有什么错误??
我--------------------------------------------------------------------- -----------代码
对于(流= 0;流& lt;cy_fx_ep_max_streams;流+ +){ /*创建一个转移* / cyu3pmemset auto_signal P2U DMA通道((uint8_t *)&;dmacfg,0,sizeof(dmacfg));
dmacfg.dmamode = cy_u3p_dma_mode_byte;dmacfg.notification = 0;dmacfg.prodheader = 0;dmacfg.prodfooter = 0;dmacfg.consheader = 0;dmacfg.prodavailcount = 0;
dmacfg.size =(1024×cy_fx_ep_burst_length);dmacfg.count = 4;
dmacfg.prodsckid = cy_fx_producer_pport_socket;dmacfg.conssckid =(cyu3pdmasocketid_t)(cy_fx_consumer_u***_socket +流);dmacfg.notification =(cy_u3p_dma_cb_cons_event);dmacfg.cb = cyfxdmagpifcallback;
apiretstatus = cyu3pdmachannelcreate(&;glchhandlebulklpptou [流],cy_u3p_dma_type_auto,&;dmacfg);如果(apiretstatus!= cy_u3p_success){ cyu3pdebugprint(4,“cyu3pdmachannelcreate(%d)失败,错误代码= %dn“R”,流,apiretstatus);CyFxAppErrorHandler(apiretstatus);}
/*将流映射到套接字。*/IF(流)!= 0){/*实际流ID是流+ 1。* / apiretstatus = cyu3pu***mapstream(cy_fx_ep_consumer,cyu3pdmagetscknum(dmacfg。conssckid),(流+ 1));如果(apiretstatus!= cy_u3p_success){ cyu3pdebugprint(4,“cyu3pu***mapstream失败,错误代码= %dn”,apiretstatus);CyFxAppErrorHandler(apiretstatus);} }
/*设置DMA通道传输大小* / apiretstatus = cyu3pdmachannelsetxfer(&;glchhandlebulklpptou [流],cy_fx_dma_tx_size);如果(apiretstatus!= cy_u3p_success){ cyu3pdebugprint(4,“cyu3pdmachannelsetxfer失败,错误代码= %dn”,apiretstatus);CyFxAppErrorHandler(apiretstatus);}
/*这个循环将只运行一次FS和HS配置。*(如果)!GLISFISH){中断;}

回帖(1)

刘辉

2019-9-24 07:52:59
你好,
我看到你在for循环中创建了许多DMA通道。但是,对于所有的通道(CyfxxPixelyPpPosiSocket),生产者套接字都是相同的。所以,你要bad_argument参数流时是1,因为你已经用生产插座流时0。
请把它变成ascFixfxPultRePpPosiSosik+流
当做,
- Madhu Sudhan
举报

更多回帖

发帖
×
20
完善资料,
赚取积分