EZ-USB 程序举例
- 格式:pdf
- 大小:38.65 KB
- 文档页数:3
EZ-USB程序设计应用举例
1. 块传输测试
这是一个用汇编语言编写的快传输测试的例子,使用端点2 IN和OUT来进行快传输。
有关用C语言编写的快传输测试的例程请参阅14.2.5节和14.5.6节。
该程序中首先用64至1的递减计数器的值填充端点2 IN缓冲区,保持对端点2 IN和OUT传输的计数,对端点2 OUT接受到的数据不作任何处理,但只改变端点2 IN缓冲区的前俩个字节,其中第一个字节(0)用端点2 IN传输次数的计数值代替,第二个字节(1)用端点2 OUT传输次数的计数值代替。
使用控制面板进行测试的步骤如下:
1 下装程序。
既可以Keil的集成环境,也可以用控制面板的Download按钮来下载 ..\Cypress\USB\Examples\EzUsb\ EzBulk_asm\ezbulk.hex文件。
2 设置Interface o, alternate aetting 1。
确定EP2端点使用最大包长度64字节,按Get Pipes来更新设置。
3 在块传输按钮条中选择端点2 IN,单击块传输按钮,可看见64到1递减计数的64个字节。
4 再次单击块传输按钮以执行另一个EP2 IN传输,现在除了字节0的数值发生了变化外,其它的数值均相同。
字节0用来指示IN传输的次数,每发生一次IN传输,其计数值加1。
5 在块传输按钮条中选择端点2 OUT,单击块传输按钮,发送64个字节到EP2OUT,该数据被忽略。
6 选择端点2IN,单击块传输按钮,发现第二个字节的数值发生了变化,字节1用来指示OUT传输的次数,每发生一次OUT传输,其计数值加1。
该程序使用查询法,不断地对端点忙位进行查询。
比较好的方法是中断向量法。
程序清单如下。
2. 利用块端点对进行环路测试
该程序使用端点2和端点3组成端点对,并将主机发送到端点2 OUT缓冲区的一组数据传输到端点2 IN缓冲区,在由主机读回。
程序采用C语言编写,并使用EZ-USB的固件函数库和程序框架。
通过控制面板可下载ep-pair.hex文件到EZ-USB 8501的内部RAM中并运行。
FW.C的程序清单间14.2.5节的(1)部分,ep-pair.c程序清单如下。
3. USB同步传输
这是一个很简单的同步传输的例子,用汇编语言编写。
程序从端口A,B和C读取数据,
通过EP8IN连续发送5个字节的包:
;字节0:帧计算器H
;字节1:帧计算器L
;字节2:端口A引脚
;字节3:端口B引脚
;字节4:端口C引脚
通过该程序,可以学会如何传输I/O端口的数据到同步端点缓冲区EP8IN,以及如何采用自动地址指针。
为了便于理解,程序未使用中断系统,代替以查询SOF位来探测是否有SOF令牌到达。
使用控制面板的步骤如下:
(1) 下载 \cypress\usb\examples\ezusb\eziso_asm\eziso.hex文件;
(2) 在Iso Trans栏设置:
PiPe=7: Endpoint 8 IN
PktCount=1
PktSize=5
BuffCount=1
FrmPerBuff=1
(3) 单击Iso Trans按钮多次,帧计数器值和24个输入引脚的值将显示在数据窗口。
4.存储器测试
该程序主要测试8501的外部RAM存储器是否完好。
程序运行基于EZ-USB开发板,若测试成功,则在7段LED上分时循环显示“good”4个英文字母;若测试不成功,则在7段LED上分时循环显示出错RAM单元所在的地址。
RAM测试避开oxc000~oxcfff之间的区域。
RAM测试避开ox4000~ox5100之间的区域,因为测试程序被装入此处。
测试程序将被测的8501外部数据存储器空间分成6个区域。
它们分别是: MEM00=0x0060-0x1EFF, MEM01=0x2000-0x3FFF, MEM02=ox8000- 0xBFFF, MEM03=0xD000-0xFFFF, MEM04=0x2000-0x27FF, MEM05= 0x5100 -0x77FF. 其中MEM04是ISO缓冲区映射的RAM区,当不使用同步传输时,这2KB的ISORAM可用作一般的数据RAM。
测试RAM的过程是:分别用数字0x00,0xFF,oxAA和0x55写入外部存储单元,然后再读出进行比较。
根据比较的结果来决定7段LED上显示的内容。
5.Vendor 专用命令程序
通过EZ-USB控制面板的download按钮可下载该程序到EZ-USB开发板上运行。
它主要解释执行vendor的几个命令:
A0下载:
A2读取EEPROM;
A3读取外部RAM;
A4设置IC地址;
A5读取IIC的类型(1字节或2字节);
A6读取芯片版本信息;
A8重枚举。
该固件程序是基于EZ-UEB固件框架开发的。
EZ-USB程序框架源文件fw.c见14.2.5节的第一部分“固件框架的任务调度和设备请求分析的源程序(文件fw.c)”,执行vendor专用命令的语言源程序清单如下。
6、ISO流传输程序
该程序由3个部分组成:基于wendows的test应用程序(isostrm.exe)、EZ-USB通用目的驱动程序GPD(ezusb.sys)和执行简单的同步传输的EZ-USB固件(isostrm.hex)。
主要目的是验证使用GPD执行ISO流的能力。
ISO流使用下面的IOCTL:
IOCTL_EZUSB_START_ISO_STREAM
IOCTL_EZUSB_STOP_ISO_STREAM
IOCTL_EZUSB_READ_ISO_BUFFER
test应用程序用来启动或停止ISO流,Start Read Thread按钮启动流传输,调用IOCTL_EZUSB_READ_ISO_BUFFER,并保持对读出包的计数,因为ISO包的第一个字节是递增计数的,所以可以判断出是否有包丢失,记录丢失的包。
Isostrm.exe使用控制面板装入isostrm.hex到USB外设,然后单击Start Iso Stream 按钮,启动ISO流,再单击Start Read Thread按钮,开始连续读一个ISO流,等待一会儿,最后单击Stop Iso Stream按钮来停止ISO流的传输。
通过Start Read Thread按钮,将会看到数据传输的几个缓冲区,可用来观看丢失的帧。
Isostrm固件是基于固件框架编写的,使用单个ISO IN端点。
在每一个SOF帧,复制64个字节到ISO8IN缓冲区,缓冲区的前2个字节是当前USB传输的帧号,其余的是增量计数值。
USB固件的程序清单如下。