完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
大家好
IAM设计一个使用CY7C68013A的应用程序,它必须支持高带宽同步传输。数据应该从CY7C68013A移出FPGA。我已经实现了设备描述符,主机识别CY7C68013A和加载驱动程序(USB音频),当Irun在主机(音频播放器)上的应用时,它似乎只是发送数据而已。CY7C68013A和FPGAIS之间的接口仍然是TBD,所以在这个早期阶段,我只想确保正确的数据到达端点。有人会发布一个简约的例子,说明如何注册寄存器,检查到达的数据包,然后丢弃它们吗? 以上来自于百度翻译 以下为原文 Hi all I am designing an application using CY7C68013A that must support high-bandwidth isochronous OUT transfers. Data should be moved out of CY7C68013A to a FPGA. I have implemented device descriptors, the host recognizes the CY7C68013A and loads driver (USB audio), and when I run an application on host (audio player), it seems to send out the data just. The interface between CY7C68013A and FPGA is still TBD, so on this early stage I just want to make sure that the correct data arrives to endpoint. Can someone post a minimalistic example of how I setup the registers, and check the arrived data packets and then discard them? |
|
相关推荐
3个回答
|
|
我这样做了。
这些例子不是很有帮助。它们似乎“一成不变”,很难找出每一段代码在做什么(即使是TRMhelp)。 我想一步一步地学习FX2LPFEP,从简单的事情开始——首先不要做任何外部I/OAT。仍然无法确定如何做非常简单的事情-一旦一个数据包到达,切换一个输出线。我已经尝试了不同的寄存器设置,但是我只在EP2468 STAT中获得EP2的空位,或者不断地或不断地关闭。 以上来自于百度翻译 以下为原文 I did so. The examples are not very helpful. They seem to have "all in one", and it is hard to find out what each piece of code is doing (even with TRM help). I am trying to learn Fx2LP step-by-step, starting from simple things - first do not do any external I/O at all. Still cannot figure out how to do very simple thing - once a packet arrives, toggle an output line. I have tried different register settings, but I only get EMPTY bit for EP2 in EP2468STAT either constantly on, or constantly off. |
|
|
|
下面是iAM使用的相关代码片段:
初始化: 空主机()//Debug引脚OED=0x02;P3Y1=1;RIFCTL=3;IFCONFIGG=0x00;SycDelayy(;)/ /仅使用端点2,在所有其他EP1OUTCFG=EP1CIFG= EP4CFG=EP6CFG=EP8CFG= 0x00;SycDelaye();Ep2FIFOFFG=0x00;SycDelay-();Prtuf(“初始化”完成)。n);} 当主机选择接口时称为: Boo-HANDLY-SETIO接口(字节IFC,字节ALTYIFC){接口=IFC;ALT= ALTYIFC;IF(!)CFG=0;} {//有效的ISO 1024双Bufff EP2CFG=(1和lt;和7;)(0和lt;和6;)(1和lt;4))(1和lt;和3)(2和lt;& 0;0);SycDelay-(;)//Outlook端点没有出现武装EP2BCL=0x80;//ARM第一缓冲器通过写入BC W/Skip=Auto SycDelayy();EP2BCL=0x80;{ EP2)/BARM第二缓冲器,通过写入BC W/SKIP=1 }返回true;} 当没有EP0请求服务时,从主循环()循环调用: 空主环():{if(alt){if(!)!(EP2468 STAT和BME2BULL){P3Y1^=1;EP2BCL=0x80;}} 使用此代码,EP2468 STAT中的空位总是被清除,而不管是否有任何数据被发送到EP2。 如果ICHANGE EP2FIFOFFG到0x10,EP2468 STAT中的空位总是被设置,不管是否有任何数据被发送到EP2。 以上来自于百度翻译 以下为原文 Here are the relevant pieces of code I am using: Initialization: void main_init() { //debug pin OED = 0x02; P3_1 = 1; REVCTL = 3; IFCONFIG = 0x00; SYNCDELAY(); // Only using endpoint 2, zero the valid bit on all others EP1OUTCFG = EP1INCFG = EP4CFG = EP6CFG = EP8CFG = 0x00; SYNCDELAY(); EP2FIFOCFG = 0x00; SYNCDELAY(); printf("Initialization Done.n"); } This is called when host selects an interface: BOOL handle_set_interface(BYTE ifc, BYTE alt_ifc) { interface = ifc; alt = alt_ifc; if (!alt) { EP2CFG = 0; } else { // Valid Out ISO 1024 DoubleBuf EP2CFG = (1 << 7) | (0 << 6) | (1 << 4) | (1 << 3) | (2 << 0); SYNCDELAY(); // OUT endpoints do NOT come up armed EP2BCL = 0x80; // arm first buffer by writing BC w/skip=1 SYNCDELAY(); EP2BCL = 0x80; // arm second buffer by writing BC w/skip=1 } return TRUE; } This is called from main() endless loop, when there are no EP0 requests to service: void main_loop() { if (alt) { if(!(EP2468STAT & bmEP2EMPTY)) { P3_1 ^= 1; EP2BCL = 0x80; } } } With this code, EMPTY bit in EP2468STAT is always cleared, regardless of if any data is sent to EP2. If I change EP2FIFOCFG to 0x10, EMPTY bit in EP2468STAT is always set, regardless of if any data is sent to EP2. |
|
|
|
更正:
使用此代码,EP2468 STAT中的空位总是被设置,而不管是否有任何数据被发送到EP2。 如果ICHANGE EP2FIFOFFG到0x10,EP2468 STAT中的空位总是被清除,不管是否有任何数据被发送到EP2。 以上来自于百度翻译 以下为原文 Correction: With this code, EMPTY bit in EP2468STAT is always set, regardless of if any data is sent to EP2. If I change EP2FIFOCFG to 0x10, EMPTY bit in EP2468STAT is always cleared, regardless of if any data is sent to EP2. |
|
|
|
只有小组成员才能发言,加入小组>>
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 19:19 , Processed in 0.919659 second(s), Total 81, Slave 64 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191