
EZ-USB 程序举例.pdf
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读取数据,1上海思越电子科技有限公司 网址: 通过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的几个命令: 2上海思越电子科技有限公司 网址: 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固件的程序清单如下。
