原创 CY7C68013A开发板编程之八(Pingnak)

2011-11-21 14:44 2130 8 8 分类: 通信

  这个例子主要通过Ping Nak中断来示例块传输(Bulk),Ping Nak是USB2.0中的一个协议,FX2实现不了,只有最新的FX2LP才能实现,具体是怎么回事,需要查一下USB2.0协议。固件程序就是Example目录中的Pingnak,用Keil打开工程,可以看一下程序实现的功能:


  4个大端点配置成Bulk传输,两个输出端点,两个输入端点。从主机发出的数据存储在OUT endpoint,然后再从IN endpoint返回主机。以下是4个端点的配置,


EP2CFG = 0xA2;
SYNCDELAY;                    
EP4CFG = 0xA0;
SYNCDELAY;                    
EP6CFG = 0xE2;
SYNCDELAY;                    
EP8CFG = 0xE0;   


he key characteristics of each endpoint are as follows:   


Endpoint 2  OUT, Bulk, double buffered  


Endpoint 4  OUT, Bulk, double buffered  


Endpoint 6  IN, Bulk, double buffered  


Endpoint 8  IN, Bulk, double buffered 


  具体看程序。下面看一下调试过程,(待续,回东北回来后再写),打开控制面板,下载此程序,如下,



  单击控制面板中的“Pipe”,可以看到之前配置的4个端点,如下,



  下面看一下固件实现的功能:单击控制面扳的“Pipe”,选中其中的“0: Endpoint 2 OUT”,在“Hex Bytes”中输入“A”,在“Length”输入“512”,最后单击“Bulk Trans”,如下,


 


  重复以上的过程,只是在“Hex Bytes”中输入“B”,再单击“Bulk Trans”;第三次在“Hex Bytes”中输入“C”,再单击“Bulk Trans”,也就是说第一次发了512个A,第二次发了512个B,第三次发了512个C,按照固件的定义,端点2配置成2次缓冲,尽管依次了512个“A”、“B”、“C”,端点2的缓冲区应该保留最后两个值,但程序运行并不是这样,还需要我进一步查证如下,单击“Pipe”,选中“2: Endpoint 6 IN”,再单击三次“Bulk Trans”,发现读出了512个“A”,512个“ C”,这一点与固件实现的功能不一样,我还再查证之中。
 


 


 


 


 

更多文章请访问:

我的博客1:http://bbs.ednchina.com/BLOG_liangziusb_440752.HTM

我的博客2:   http://www.eefocus.com/liangziusb/blog/

EDN小组http://group.ednchina.com/GROUP_GRO_14600_3466.HTM

LZ3684 USB2.0开发板(CY7C68013A), 请访问我的淘宝http://shop64171919.taobao.com

LZ3014 USB3.0开发板(CYUSB3014),请访问我的淘宝http://shop64171919.taobao.com

实体店铺:北京新中发电子市场2557号

 

良子.2011年

沈阳市东陵区白塔街龙盛家园

欢迎交流:liangziusb@163.com

QQ:392425239

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
我要评论
0
8
关闭 站长推荐上一条 /3 下一条