这个帖子是测试例程cyfxbulklpauto的,工程在C:\Cypress\FX3 SDK\firmware\basic_examples\cyfxbulklpauto下,见下图。(这个例子是我详细分析的第三个例程,也是最后一个例程。主要目的是通过详细的编绎、下载、调试等过程,让广大网友对CYUSB3014的开发有一个直观的认识,走进USB3.0开发的大世界。第四个例程就不会这么详细了,有些基础的内容会一笔带过。)
用ECLIPSE开发环境导入cyfxbulklpauto例程,编绎生成IMG文件,请查看以前的帖子。
用控制面板将前一个过程生成的IMG文件,下载到CYUSB3014的RAM中,也请查看以前的帖子。
一、先看程序测试。
1、发送数据过程
用控制面板下载IMG文件后,按下图进行操作,
第1步是选择块输出端点;第2步是输入要发送的字符,这里输入1;第3步是单击发送按钮“Transfer”;第4是显示信息如下:
BULK OUT transfer
0000 31
BULK OUT transfer completed
提示数据发送成功。重复同样的操作,只是第2步输入的字符不同,依次是2,再是3,,,最好一次是8,共计发送8个字符,发送完8个字符后,所有信息如上个图片中的标记4。
2、接收数据过程
用控制面板操作如下,
第1步是选择块输入端点;第2步是单击“Transfer Data-IN”按钮接收数据,第3步就是察看接收到的数据。以上过程可以重复8次,这与上一个过程共发送8个数据相对应。当然,你也可以发送小于8批数据,每批数据最多可以是1024个,具体可以在程序分析里面得到证据。
二、程序分析
这是一个块循环传输数据的例子,就是常见的Bulkloop,用的是自动(AUTO)传输的方式,CPU在传输过程中,并不参与数据的读取,因此,自动传输方式能获得较高的传输率。
关于固件程序的框架结构,这里不作分析,可以查看我以前的帖子。
程序主要部分是创建一个自动传输的DMA通道,主要的程序代码如下,
/* Create a DMA Auto Channel between two sockets of the U port */
/* DMA size is set above based on the USB Bus Speed */
dmaBulkLpConfig.count = CY_FX_BULKLP_DMA_BUF_COUNT;
dmaBulkLpConfig.prodSckId = (CyU3PDmaSocketId_t)(CY_U3P_UIB_SOCKET_PROD_0 | CY_FX_EP_PRODUCER_SOCKET);
dmaBulkLpConfig.consSckId = (CyU3PDmaSocketId_t)(CY_U3P_UIB_SOCKET_CONS_0 | CY_FX_EP_CONSUMER_SOCKET);
dmaBulkLpConfig.dmaMode = CY_U3P_DMA_MODE_BYTE;
dmaBulkLpConfig.notification = 0;
dmaBulkLpConfig.cb = NULL;
dmaBulkLpConfig.prodHeader = 0;
dmaBulkLpConfig.prodFooter = 0;
dmaBulkLpConfig.consHeader = 0;
dmaBulkLpConfig.prodAvailCount = 0;
/* Create the channel */
apiRetStatus = CyU3PDmaChannelCreate (&glChHandleBulkLp,
CY_U3P_DMA_TYPE_AUTO,
&dmaBulkLpConfig);
其中dmaBulkLpConfig是一个CyU3PDmaChannelConfig_t类型的结构体,关于CyU3PDmaChannelConfig_t类型的定义只可以到文件cyu3dma.h中看个仔细,作用就是配置DMA通道的各种相关信息,如DMA通道的缓冲区的大小、缓冲区的数量、The producer socket ID、The consumer socket ID等作息。
其中CY_U3P_UIB_SOCKET_PROD_0代表U-port input socket number 0;
其中CY_U3P_UIB_SOCKET_CONS_0代表U-port output socket number 0。上面两项也就是说数据从USB口输入,马上又传输给USB口,完成了Bulkloop功能。
这个例子使用的USB3.0开发板是LZ3014 USB3.0开发板,是官方的第一代开发板,官方的第二代开发板正在生产中,年前就应该能够调试完毕,有兴趣的朋友可以查看我的淘宝。
更多文章请访问:
我的博客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:2687652834
文章评论(0条评论)
登录后参与讨论