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

2010-12-26 14:12 1293 5 5 分类: 通信
这个例子主要通过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 


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


371b5bf0-9c1c-4bc8-9d6b-0c3365dc0951.jpg


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


ce2510c5-2347-48dd-a936-c20ed7712697.jpg


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


 ec6870ed-9e9e-4314-98f2-f4922980adc0.jpg


  重复以上的过程,只是在“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”,这一点与固件实现的功能不一样,我还再查证之中。
 


 


 


 


良子.2010年


欢迎交流:liangziusb@163.com


QQ:392425239

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
5
关闭 站长推荐上一条 /3 下一条