AN4053,方舟手游代码怎么输入

方舟 3
在EZ-USB®FX2™和FX2LP™上测试同步或批量端点的数据流 AN4053 作者:RamaSaiKrishnaVakkantula相关项目:有 相关器件系列:CY7C68013A软件版本:无 相关应用笔记:AN65209、AN61345要想获得本应用笔记的最新版本或相关项目文件,请访问/go/AN4053。
使用音频、视频等数据类型的USB应用程序需要一个高速的连续数据流。
由于该类数据无中断被传输,因此将其定义为数据流。
本应用笔记介绍了支持流数据的USB高带宽传输机制,并且含有用于实现和运用FX2LP高带宽端点的代码。
它还提供了一个PC端应用程序,用于选择不同的传输类型和测量传输速率。
本应用笔记还提供了用于演示如何使用赛普拉斯USB框架实现备用USB设置以允许主机选择不同的传输率的示例代码。
要想获取USBHi-Speed代码示例的完整列表,请访问/?
rID=101782。
目录 简介...................................................................................1相关项目文件.....................................................................2数据流应用........................................................................2高带宽传输........................................................................3 数据PID序列(高速模式)..........................................3CypressSuiteUSB(赛普拉斯SuiteUSB).......................4流固件示例........................................................................4使用赛普拉斯USB框架....................................................5 fw.c...............................................................................6dscr.a51........................................................................6CyStream.c...................................................................7运行CyStreamer.hex........................................................8性能分析............................................................................9将FX2LP连接到图像传感器上........................................10参考.................................................................................10总结.................................................................................11全球销售和设计支持........................................................13 简介 USB为流数据提供了被命名为“同步”(ISO)的传输类型。
在拉丁语中,iso意为相等,chron意为时间:传送流数据的数据包时每个USB时间帧需要花费相同的时间。
USB同步传输类型具有两个重要特点:
1.与控制(CONTROL)、BULK(批量)或INTERRUPT(中断)传输类型不同,同步传输类型不为受损或丢失的数据提供握手或重新尝试服务。
此开销会影响到每个时间帧架中的核心ISO特性,即保证数据传输。

2.虽然USBISO传输机制提供了保证基础上的数据块,但是数据提供者和消费者需要快速填充和清空该块,保证不间断的数据流。
虽然不会重新发送受损或丢失ISO数据包,但接收方会检测它们的存在,从而采取纠正操作。
例如,可以通过内插法或重复以前的数据来替换丢失的数据块。
然而一个设计良好的应用程序应保证数据提供方(例如,照相机)和数据接收方(例如,PC)给数据流设计提供更高的优先级,以便不会错过加载或卸载数据包。
INTERRUPT(中断)端点也可以是Streamer。
USB规范,版本2.0为高速度模式(480Mbits/sec)操作定义了高带宽端点。
一个高带宽端点在一个微帧内可以提供或接受至少一个、最多3个数据包。
因此,INTERRUPT传输模式也可以使用于高速度设备中的流数据。
在全速度器件中,INTERRUPT传输并不适用于高带宽流应用,因为INTERRUPT端点的最大数据包大小为64字节,而ISO的最大数据包尺寸却为1023字节。
文档编号:001-75393版本*
C 1 本应用笔记说明了如何编程FX2LP,以用于高速USBISO流数据。
它还执行全速度传输示例进行对比。
还可以使用更早期的FX2(没有LP)器件,其差别较小(在本文档中进行了介绍)。
另外,还执行BULK传输操作,以便进行带宽比较。
相关项目文件 本应用手册所附带的zip文件(AN4053.zip)包括以下文件夹:
1.FX2LPStreamer源代码 Keil项目文件‘CYStream.Uv2’位于Firmware\CyStreamer文件夹内。
双击该文件,启动通过执行FX2LP固件提供并使用连续数据流的Keil项目。
KeilIDE将输出CyStream.hex文件,该文件适合被加载到FX2LP开发板上。

2.VS_Control_Center该MicrosoftVisualStudioC#应用程序用于将FX2LP十六进制代码(CyStream.hex)加载到FX2LP开发板上。
可执行文件位于\bin目录中,或您可以使用MicrosoftVisualStudio加载.sln(solution)文件来检查或修改源代码。

3.VS_Streamer该MicrosoftVisualStudioC++项目是主机方应用程序,它通过运行CyStream代码将PC内的数据加载到FX2LP开发板上。
该应用程序用于测试FX2LP流固件中的各种带宽设置。
可执行文件位于\bin目录中,或者您可以加载.sln文件来检查或修改源代码。
也可以通过安装CypressSuiteUSB获得该应用程序。
该应用程序位于:CypressSuiteUSB3.4.7\CyAPI\examples\Streamer 通过安装CypressSuiteUSB,您也可以得到基于C#streamer的应用程序。
C#版本位于下面路径:CypressSuiteUSB3.4.7\CyUSB.NET\examples\Streamer 下面各部分详细介绍了ISO流以及通过使用FX2LP执行ISO数据流时所需要的信息。
在EZ-USB®FX2™和FX2LP™上测试同步或批量端点的数据流 数据流应用 当您将USB器件插入一个PC上时,PC将通过运行被称为枚举的流程来获取器件的基本特性以及要求。
在枚举过程中,主机将通过询问该器件来获知器件详细信息(例如,器件所使用的驱动程序、器件编号、器件端点基本信息(数据源和数据库)等内容)。
对于ISO端点,主机将读取描述符,从而确定器件在ISO传输过程中预期得到的内容。
要求带宽是重要的ISO参数,它是ISO端点描述符中wMaxPacketSize字段。
ISO带宽限制如下: 对于全速传输,每1毫秒一帧中,主机可以处理一个ISO数据包(数据包大小最大为1023字节)。
如果每毫秒传输1023字节,最大传输速率为每秒1.023Mb。
对于高速传输,在每125微秒一帧中,主机可以处理最多三个ISO数据包(数据包大小最大为1024字节)。
如果每1/8毫秒传输3072字节,最大传输速率为每秒24.576Mb。
只有提供方和接收方将数据快速从端点FIFO内移入和移出以得到所需传输速率,才能无中断流动数据。
为了满足这种要求,将名称为通用可编程接口(GPIF)的硬件数据移动器配备在FX2/FX2LP中。
USB也提供了被称为备用设置的机制(AltenateSettings),用于允许主机选择流带宽。
例如,USB照相机可以提供备用设置,如表1所示。

1.三个用于USB照相机的带宽设置 备用设置 wMaxPacketSize
1 1023
2 512
3 256 由于该USB相机不一定是总线上唯一的器件,因此在存在连接器件的情况下,PC必须为它分配有限的USB带宽资源。
文档编号:001-75393版本*
C 2 要注意,在该带宽协商过程中,主机会确定在保证的基础上为给USB照相机提供每帧传输700字节数据的带宽。
如果照相机ISO端点描述符只包含一个1023字节的设置,则主机不会配置(使用)照相机,从而引起应用程序运行失败。
然而,由于照相机还提供了其它设置选项,因此主机可以选择2号备用设置。
主机(通过使用SET_INTERFACE)向照相机发送一条信息(该信息包含主机要求的备用设置信息)。
该信息告诉照相机要降低其带宽要求(可通过降低帧速率满足降低带宽要求)。
ISO带宽备用设置以1开始,这是因为默认设置(即为‘0’)绝不允许占用任何ISO带宽。
这些数据包大小为最大值;器件可能会通过所有数据包传输较少的字节数。
零长度的ISO数据包也有含义。
器件会发送该类型的数据包,以表明它不能提供数据来满足‘just-in-time’(实时)ISOIN请求。
外设设计人员可能选择传接更大的数据包大小(比如一个1024字节数据包而不是四个256字节数据包),以获得不同的效率。
通常,需要结合考虑外设中数据缓冲区的数量和大小来做出该决定。
为了满足灵活性要求,USB为高带宽端点定义了bInterval字段。
通过该值,主机可以确定各传输请求之间跳过了多少微帧。
对于大多高带宽应用(包括本应用笔记中所描述的应用)bInterval值被置为
1,以表示‘每个微帧安排执行一个传输操作’。
虽然BULK端点不是高带宽端点,但如果两方拥有足够的缓冲空间用于处理BULK端点的突发(不定期)特性,仍可以使用BULK端点流动数据。
不建议这样使用,是因为您的照相机可能在轻载USB系统上工作,但如果多个器件(如USB磁盘驱动程序)被插入,向照相机的BULK传输速率会变慢。
设计USB数据流应用时要注意下面几点: 传输吞吐量:每秒需要的字节数 FX2LP的速度是否足以转移使用已编程(MCU参与)传输的数据,或是否要使用GPIF来传输FIFO数据? 系统的缓冲要求:按照规范,ISO端点为双缓冲区,但IC(如FX2LP)最多可提供4个缓冲区(如果需要) 需要满足所需带宽和数据速率的合适端点类型 每微帧需要的数据包数量 PC驱动程序支持所选高带宽传输 在EZ-USB®FX2™和FX2LP™上测试同步或批量端点的数据流 高带宽传输 USB将总线时间分为各个命名为帧的长度固定段。
对于全速器件,主机每一毫秒将发送一个帧标志(SOF—帧的开始)。
对于高速器件,主机会每125微秒发送一个微帧。
每微帧需要多于1024个字节的高速端点被称为高带宽端点。
高带宽端点每个微帧最多可传输三个含1024字节的数据包。
每微帧传输次数由端点描述符的wMaxPacketSize字段定义。
由于它们使用微帧,因此高带宽端点只适用于高速度模式操作。
根据USB2.0规范,定期端点(ISO或Interrupt)必须指定它所需要的总线访问周期。
该操作通过设置端点描述符的bInterval字段来完成。
端点描述符的bInterval字段定义了主机对端点进行轮询的最大速率。
这样可提供一个机制,用于降低主机服务端点的速率。
为了在同一个微帧中跟踪数据包传输,高带宽同步传输使用了一个名为PacketID(数据包ID—PID)排序的机制。
要想设计高带宽ISO端点,需要了解数据PID排序,如下面各部分的介绍。
数据PID序列(高速模式) 全速USB器件采用了两个数据PID:DATA0和DATA1。
USB2.0规范为高速度操作添加了另外两个PID:MDATA和DATA2。
PID排序会检测一个微帧期间所发生的丢失或受损数据包。
表2针对不同大小加载数据的IN和OUTISO传输列出PID的顺序。

2.高带宽ISO传输的PID序列 可用数据包 321321 方向 INININOUTOUTOUT 数据PID序列 Pkt1 DATA2DATA1DATA0MDATAMDATADATA0 Pkt2 DATA1DATA0 –MDATADATA1 – Pkt3 DATA0–– DATA2–– 文档编号:001-75393版本*
C 3 在IN传输中,进行枚举期间,主机预期收到的每微帧数据包多少是器件wMaxPacketSize字段所指定的每微帧数据包数量。
器件向主机发送的第一个DATAPID通知器件在微帧发送的IN令牌数量:DATA2表示两个以上令牌、DATA1表示一个以上令牌,DATA0表示没有令牌。
如果器件没有数据,它将使用DATA0PID发送零长度的数据包(ZLP)。
在OUT传输中,除了最后的数据包,主机对全部数据包使用MDATA(MoreData—更多资料)PID;最后一个的数据包是DATAPID,它表示主机所发送的MDATAPID数量。
FX2(非LP)ISOIN传输的注意事项 在枚举过程中,高速ISO器件将通知主机它在一个微帧中预期使用的数据包额外数量。
器件通过端点描述符中的wMaxPacketSize字段来表示。
位12:11表示在每个微帧中含有0个,1个或2个额外数据包(或者additionaltransaction)。
在USB2.0规范中,这些位被称为数据传输条件,这是因为它们表示器件在所有微帧内不需要使用的数据包最大数量。
FX2负责发送正确的DATAPID,具体情况取决于第一个主机IN令牌在一个微帧到达后它填充并且提交给的USB传输的实际INFIFO缓冲区数量。
代码示例通过wMaxPacketSize字段报告一个微帧中存在三个IN数据包(最大值)。
然而,如果它在一个微帧只提交2个数据包,则必须使用DATA1PID(表2)送第一个数据包。
为了自动执行正确的ISO-INPID排序,FX2LP提供了四个EPnISOINPKTS寄存器;其中,n为2、4、6或
8,分别对应于大型、高带宽端点。
位7位位位位位位
1
0 65432 AADJ00000INPPF1INPPF0
0 00000
0 1 “INPacketsperFrame”(INPPF—每个帧的IN数据包数量)默认为
1,可将它设置为1、2或
3。
应将“AutoAdjust”(AADJ—自动调整)设置为
1,以便使能自动PID排序。
如果AADJ=
0,FX2LP会通过使用INPFF[1:0]指示的PID无条件启动一个ISOIN传输。
由于更早的FX2器件不具有这种自动机制(无AADJ位),所以编程员必须采取相应措施来确保在ISOIN传输过程中发送正确的DataPID排序。
请按照下面任一方法执行该操作:
1.确保在设计方面在每个微帧已加载和准备好所有INFIFO。
例如,如果INPPF字段被设置为
2,则需要确保两个缓冲器被加载和提交给USB以便执行传输操作。

2.如果在下一个微帧数据是较短的,请使能任何未用的FIFO来发送一个零长度的数据包(ZLP)。
该操作很 在EZ-USB®FX2™和FX2LP™上测试同步或批量端点的数据流 简单和快速;只需要将是‘0’值加载到FIFO的字节计数寄存器内即可。

3.如果一个外部源加载USBFIFO,则通过选择FIFOADR[1:0]指定的FIFO并激活PKTEND引脚,可准备好任何未用的INFIFO来发送一个ZLP。
使用PKTEND将部分填充(或空白)FIFO提交给USB传输。
主机驱动程序可能会也可能不会正常处理USBPID排序错误。
赛普拉斯提供了一个主机驱动程序,用以在器件发送一个错误PID排序的情况下通过将该指示传播到客户端应用解决问题这样,永远不会使用FX2LP,因为当AADJ=1时,将自动发送正确的DataPID排序。
通过同步OUT端点进行传输时,不需要设置任何寄存器。
器件固件必须报告在端点描述符中每个微帧需要的数据包数量。
CypressSuiteUSB(赛普拉斯SuiteUSB) 用于写入和测试本应用笔记的代码的文件夹附加在zip文件中。
为了提供更多的支持,赛普拉斯提供了CypressSuiteUSB,它包括用于VisualStudio的USB开发工具集以及示例Keil固件项目。
CypressSuiteUSB可用于创建.NETWindows应用程序,以用于所有赛普拉斯USB2.0系列。
该套件包含cyusb.sys,它是与开发工具相兼容的赛普拉斯Windows驱动程序。
可以通过下面网站下载CypressSuiteUSB:/?
rID=34870。
CypressSuiteUSB的默认安装路径为:C:\Cypress\CypressSuiteUSB3.4.7。
流固件示例 本笔记所包含的应用(CyStream)通过使用EZ-USBFX2/FX2LP开发板演示了USB同步流和BULK传输。
该代码示例执行了一个测试器件,该器件可为WindowsStreamer应用提供并使用数据流。
CyStream项目创建了一个单独的接口(编号0)(该接口含有两个不同的配置描述符:一个用于高速(HS)操作,另一个用于全速(FS)操作)。
表3显示了7个高速备用设置,表4显示了4个全速备用设置。
文档编号:001-75393版本*
C 4 表
3.用于接口0的FX2LP高速配置描述符备用设置 备用设置 01 端点数 11
2 2
3 1
4 1
5 1
6 2 端点数方向(类型) 2IN(批量)2OUT(批量) 2IN(批量)6OUT(批量) 2IN(同步)2OUT(同步) 2IN(同步)2IN(同步)6OUT(同步) 数据包最大大小(字节)5125125125123x10243x10241x10241x10241x1024 表
4.用于接口0的FX2LP全速配置描述符备用设置 备用设置 0123 端点数 1111 端点数方向(类型) 2IN(批量)2OUT(批量) 2IN(同步)2OUT(同步) 数据包最大大小(字节) 646410231023 主机应用(Streamer.exe)会选择不同的传输参数(备用设置)来测量其吞吐量速率。
要想测量可获得的最大吞吐量速率,请勿在FX2LP端发生任何延迟事件,例如将字节转入和转出端点FIFO所引起的延迟。
因此,本应用笔记中的FX2LP代码将以最小开销处理IN和OUT传输: IN传输—当一个INFIFO可用时,8051仅要重新待命INFIFO来执行1024字节高速传输或1023字节全速传输。
初始化期间将加载FIFO数据。
OUT传输—8051不会将任何字节从OUTFIFO中输出;它只需要将任意字节数量加载到字节计数低(EPxBCL)寄存器内来重新准备执行下一个OUT传输。
注意:由于实时应用确实管理着FIFO数据,因此FX2LP提供了两个硬件机制用于最小化其传输开销。
在EZ-USB®FX2™和FX2LP™上测试同步或批量端点的数据流
1.数据传输是由外部控制器处理的,该控制器直接与FX2LP端点FIFO相连。
这样会使8051不在数据路径范围内。
FIFO连接包括一个8位或16位数据总线、读和写选通以及FIFO状态标志。

2.可将FX2LPFIFO配置为自动运行模式。
既为:端点FIFO中的字节数与寄存器中所设置的值相匹配后,数据包会自动准备进行USB传输。
本应用笔记中所介绍的示例使用了端点FIFO的手动模式设置,其中,8051负责检查FIFO状态并提交端点数据。
使用赛普拉斯USB框架 本应用笔记中包括的代码示例说明了如何设置FX2LP端点以用于流数据。
本部分详细介绍了代码的主要程序。
该示例包含以下源文件:
1.赛普拉斯框架文件,fw.c
2.描述符文件,dscr.a513.CyStream.c文件 这些代码模块均是合适的,如下图所示。
这种结构适用于所有基于赛普拉斯固件框架的FX2LPUSB应用。

1.CyStream代码模块 fw.c CyStream.c main(){TD_init();EnableInterruptswhile
(1){if(GotSUD)if(sleep)TD_Poll();}} HandleEP0 GET_DESCRIPTOR dscr.a51 Descriptors TD_Init(){….}TD_Poll(){....} BOOLDR_SetConfiguration(void)BOOLDR_GetConfiguration(void)BOOLDR_Set_Interface(void)BOOLDR_Get_Interface(void) voidISR_Sudav(void)*voidISR_Sutok(void)*voidISR_Sof(void)*voidISR_Ures(void)*voidISR_Susp(void)*voidISR_Highspeed(void)voidISR_Ep2inout(void) *Boilerplate 文档编号:001-75393版本*
C 5 fw.c 这个赛普拉斯编写的固件(即Frameworks)用于处理低级USB详细信息。
该文件无需修改。
Fw.c包含了项目的main()函数,启动时它将调用TD_Init(),然后在操作过程中重复调用TD_Poll()。
该无限循环也会处理CONTROL端点(EP0)SETUP数据包。
对于GET_DESCRIPTOR请求,它使用dscr.a51中提供的描述符数据。
对于其它主机请求,将调用您的应用来执行各种操作,例如修改某个接口的备用设置。
该无限循环还会处理USB暂停和恢复事件(睡眠)。
dscr.a51 它是一个包含用于特定USB器件的描述符数据的8051汇编语言模块。
该文件含有‘.db’(definebyte—定义字节)语句,按下面的顺序列出了描述符表格数据:
1.器件描述符a.USB规范版本(2.0) b.器件标准类别(无) c.EP0MaxPacketSize(64) d.供应商ID=0x04B4=赛普拉斯 e.产品ID=0x1003=“EZ-USB示例Streamer器件”。
f.制造商和产品字符串索引 g.配置数量=1
2.器件限定符:对于能够在全速或高速两种模式下运行的器件,该选项为‘其它’(非当前)速度提供设置。

3.高速配置a.接口数量=1 b.选择该配置的索引=1 c.七个接口-端点描述符配对,同表3中的七个备用设置参数相对应。

4.全速配置a.接口数量=1 b.选择该配置的索引=1 c.四个接口-端点描述符配对,同表4中的四个备用设置参数相对应。

5.两个字符串描述符。
在EZ-USB®FX2™和FX2LP™上测试同步或批量端点的数据流 全速/快速操作概况当USB外设连接至主机时,主机上的内部USB集线器(或外部集线器,如果存在)将与外设进行协商,以确定其操作速度。
实际上,主机从未选择一个工作速度,而它将使用集线器报道的速度。
只要器件仍保持连接状态,集线器报道的工作速度便不发生变化。
仅在器件断开并重新连接的情况下,才重新开始确定速度的过程。
对于可在全速或高速模式下运行的器件,集线器报道的速度为‘当前’速度,而它可运行的速度是其他速度。
由于拥有两个配置描述符(每一个用于每一工作速度),主机可以在器件插入不同端口的情况下确定器件支持其它速度。
因此,如果您将高速器件插入到全速端口上,Windows将显示图2中所示的信息。

2.Windows检测到高速器件已插入到某个全速端口上 FX2LP固件负责检测当前工作速度,并指定适当的配置描述符(FS或HS)作为当前正在使用的速度,另一个作为与非选定(其它)速度相应的。
通过将正确的bDescriptorType值(CONFIG或OTHERSPEED)插入每个配置描述符的第二个字节,固件可以执行上述操作。

3.复位后的描述符类型 HighSpeedConfigDscr FullSpeedConfigDscr bDescriptorType=OTHERSPEED bDescriptorType=CONFIG USB总线RESET(复位)后,器件将恢复FS操作。
因此,在USB复位中断服务子程序中,固件标出了描述符(图3)。
它也设置指向每个描述符的指针(pConfigDscr和pOtherConfigDscr),供在枚举过程中使用。
如果器件被插入全速端口上,将保持此标号。
文档编号:001-75393版本*
C 6 每当USB内核为高速度模式成功协商时,FX2LP将接收一个中断(ISR_Highspeed)。
在该ISR中,固件将交换标号,如图4所示,并且要设置相应的描述符指针。

4.HS检测后的描述符类型 HighSpeedConfigDscr FullSpeedConfigDscr bDescriptorType=CONFIG bDescriptorType=OTHERSPEED wMaxPacketSize的概况 用于高带宽端点的wMaxPacketSize入口的格式不是很明显。
很有吸引力的一点是一个端点在每个微帧能够处理三个1024字节的数据包,该端点具有一个最大大小为3*1024或3072字节的数据包。
然而,这个内容不被定义在USB2.0规范中,因为一个物理数据包的最大大小为1024字节。
规范中的内容定义了位0-位10为maxPacketSize,最大大小为1024;位11-位12为每个微帧中的额外数据包:00表示没有额外的数据包、01表示一个额外数据包、10表示两个额外数据包。
因此,按低字节优先的原则,使用表5中的值填入高带宽端点描述符。

5.高带宽端点的有效maxPacketSize值 每个微帧中的数据包数量123 wMaxPacketSize0x04000x0C000x1400 CyStream.c 这是数据流程序。
该模块中的应用代码是通过USBFramework(USB框架)的帮助编写的:
1.根据应用的要求编写TD_Init()和TD_Poll函数。

2.由于Fw.c将多个器件请求传到端点
0,它将调用您的代码中的特定命名函数。
赛普拉斯代码模板(peripheral.c)通过提供包含了所有函数存根的代码帧架保存创建函数的工作。
只要对应用中需要使用的函数进行编码。

3.您需要提供中断服务子程序来处理您的应用所使用的中断。
大多数这些程序(用星号表示)是简单的确认内部工作;若不需要采取其他行为,不要修改它们。
本部分的剩下内容描述了CyStream.c代码。
在EZ-USB®FX2™和FX2LP™上测试同步或批量端点的数据流 TD_Init()初始化程序执行以下操作:
1.将IFCONFIG寄存器设置为0x40,以便选择805148MHz时钟频率,并将一组I/O引脚配置为端口(GPIO)引脚(这些引脚可以作为从设备FIFO,也可作为GPIF接口引脚)。

2.关闭四个开发板上的LED。
注意,通过读取预定的存储器位置可以打开和关闭开发板上的LED。

3.使能EP2,会禁用所有其他LED。
然后,如果主机将备用设置更改为使用EP6-OUT的设置,代码将在设置更改的同时使能该端点。

4.使能帧开始(SOF)中断。
SOFISR处理LED闪炼时序。

5.将1024数据字节填充到EP2-INFIFO内,并准备执行第一个IN传输。
在FIFO中带有特定数据将便于使用USB总线分析仪查看数据包,但是此数据与该应用无关。
因此,该步骤是可选的。
TD_Poll()USBFrameworks在无限循环中所调用的TD_Poll()是很简单的。
它只需通过检查FIFO标志来确定端点FIFO需要重新待命的时间点。
该操作发生在两个相同的代码段内,其中一个用于高速操作,另一个用于全速操作。
每个代码段将执行以下操作:
1.检查EP2-INFIFO的未满(notFULL)状态。
该状态表明主机已成功读取了FIFOIN数据,并且FX2LP逻辑将FIFO控制权转给8051。
如果它未满: a.打开INLED,并且设置SOF中断服务子程序(ISR)的时间常量(inblink)以便关闭它。
通过加载与当前备用设置相匹配的尺寸加载到EP2-IN字节计数寄存器内来重新准备执行下一个IN传输。
这些值与表3(HS)和表4(FS)中最右侧一列相应。

2.检查EP2-OUTFIFO的非空(notEMPTY)状态。
该状态表明主机已经成功将OUT数据发送到EP2-OUTFIFO内,并且FX2LP逻辑将FIFO控制权转交给了8051。
如果它为非空: a.打开OUTLED,并设置SOFISR的时间常量(outblink),以关闭它。
b.通过将字节计数加载到EP2BCL寄存器内来重新准备执行下一个OUT传输。
实际字节计数值并不重要,但必须将位7置位,以设置SKIP位。
SKIP位允许忽略刚收到的数据包,并且它的缓冲器立即可用于下一个OUT数据包。

3.(适用于HS)检查EP6-OUTFIFO的非空状态。
该状态表明主机已经成功将OUT数据发送到EP6-OUTFIFO,并且FX2LP逻辑将FIFO控制权转交给8051。
如果它为非空,需要执行步骤2a和2b,但是使用EP6BCL寄存器。
文档编号:001-75393版本*
C 7 处理器件请求和IRQ大多数简单的器件请求是很明显的,如设置本机变量为配置索引的DR_SetConfiguration以及返回索引的DR_GetConfiguration。
简单的ISR只清除IRQ标志。
CyStream.c函数CyStream.c执行其操作时要使用下面四个函数: ISR_UresISR_HighspeedDR_Set_InterfaceDR_SOF ISR_Ures在USB总线RESET事件完成后触发该ISR。
高速器件从全速模式中退出复位状态,所以ISR将FS配置描述符设置为主描述符,并将HS配置描述符设置为OTHERSPEED描述符(图3)。
然后,ISR将关闭HSLED(EVKIT板上的D2),并使用‘blinkmask’为LEDD5设置两秒周期。
ISR_HighspeedFX2LP进入高速模式时将触发该ISR。
配置描述符被替换(图4),高速LED2被打开,另外默认的EP2-IN被初始化。
设置变量‘blinkmask’以用于在高速模式下的1秒D2闪炼周期。
DR_SetInterfaceUSB主机使用Set_Interface请求来更改某个接口的备用设置。
由于该设计只使用一个接口,所以无必要检查接口索引。
该代码需要检索SETUP数据包中表示所请求的备用设置的第三个字节(SETUPDAT[2])。
两个‘switch’语句按照备用设置并使用表3(高速模式)和表4(全速模式)中的参数来配置端点。
‘case’语句将执行以下操作: 只使能设置项需要使用的端点对于IN端点,复位FIFO以便刷新任意过时数据。
对 于BULKIN端点,将端点的数据切换复位为
0 对于OUT端点,准备执行所需的FIFO数量更新7段显示屏,以便显示新的备用设置0-
6 DR_SOFSOF中断对时序事件(如LED闪炼频率)非常有用。
SOF中断在每1mSec(全速模式)和每125微秒(高速模式)发生一次。
SOFISR将计数关闭时间,并在合适场合下关闭活动LEDD5、INLEDD4以及OUTLEDD3。
在EZ-USB®FX2™和FX2LP™上测试同步或批量端点的数据流 运行CyStreamer.hex 与所有赛普拉斯EZ-USB芯片相同,FX2LP使用RAM来存储程序。
因此,它可作为USB装载机,将各种来源的程序代码转移到RAM内。
可以使用附带的EEPROM或当作能够从PC加载代码的USB器件。
本部分中的各个步骤介绍了如何通过USB下载和运行CyStream.hex文件。

1.按照表6准备FX2LP电路板的跳线器。

6.EZ-USBFX2LP电路板跳线器设置 跳线器6、7 21、5、10 模块3
8 状态OUT ININ IN OUT或IN 用途用于开发的存储器配置通过USB连接器供电给开发板 本地3.3V电压源所有4个跳线器为IN—激活
4 个LEDD2-D5 未使用(用于远程唤醒测试)
2.在电路板上的左下角,将EEPROMENABLE滑动开关(SW2)移动到NOEEPROM(下面)的位置。
这样会允许FX2LP枚举为加载USB器件的代码。
其他滑动开关(SW1,EEPROMSELECT)可放置在任何位置。
将FX2LP板插入到PCUSB端口上。
如果是第一次进行操作,您会看到弹出消息,提示您安装USB驱动程序。
请导航到:C:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.0\Drivers\cyusbfx1_fx2lp
3.选择与您Windows操作系统相应的文件夹。
您可以通过查看DeviceManager(器件管理程序)(见下图)来确认成功安装驱动程序。
文档编号:001-75393版本*
C 8 图
5.已经正确安装了驱动程序
4.启动在AN4053文件夹中的USBControlCenter(USB控制中心)。
可执行文件位于二进制文件夹中。

5.FX2LP电路板被罗列在左侧面板中,如图6所示。

6.器件在USBControlCenter页面中出现
6.点击赛普拉斯器件条目以高亮显示该项,然后依次选择ProgramFX2>RAM 在EZ-USB®FX2™和FX2LP™上测试同步或批量端点的数据流 这是赛普拉斯的重新枚举过程。
图6中所显示的初始器件是USB装载机,它被硬连接到FX2LP器件上。
将您的代码加载到FX2LPRAM内后,FX2LP将断电并作为图7中显示的新USB器件(由加载的代码所创建)重新被连接。
注意:当您创建新版本的CyStream.hex,并想将其加载到FX2LP电路板上时,必须先按下电路板上的RESET按键。
这样会使电路板与USB断开连接。
当您释放RESET按键时,FX2LP利用USBloader重新连接至PC。
建议按下RESET按键两秒钟,以便为Windows提供足够长的时间来记录断开-重新连接事件。
Streamer示例器件开始运行,可通过下面标示得到确认: 7段数码管显示当前备用设置。
默认设置(打开)为
0。
LEDD5每秒(在高速连接中)或每2秒(在全速连接中)闪炼一次; 当一个INFIFO准备就绪时,LEDD4将打开。
当一个OUTFIFO准备就绪时,LEDD3将打开。
在高速模式中,LEDD2被打开;在全速模式中,LED D2被关闭。
性能分析 AN4053\VS_Streamer路径下的Streamer.exe被用于评估USB数据流流应用的性能。
该代码使用CyUsb.sys(AN4053\Driver)驱动程序连接至运行CYStream固件的FX2LP开发板(CY3684)。
下面是Streamer主机应用窗口的屏幕截图,下面将对图8中所显示的字段进行说明。

7.导航到AN4053\FX2LPstreamersourcecode\firmwareCyStreamer,并双击CyStream.hex文件。

8.查看USBControlCenter的左侧面板。
如果PC的声音器件被使能,您会听到‘USB连接’声音,随后是‘USB断开’声音,然后出现新的USB器件: 图
7.新USB器件 文档编号:001-75393版本*
C 9 图
8.Streamer.exe应用窗口显示屏 Endpoint(端点):该下拉列表显示的是备用设置:0-6(适用于高速模式)和0-3(适用于全速模式)。
通过它,可以选择各种传输类型和端点缓冲器数量。

9.Endpoint下拉列表的说明 本部分中显示了Endpoint下拉列表中您所看到的文本说明。
下拉列表中的第一项(请查阅图9)为:BULKIN、512Bytes、0-0x82。
BULKIN—该字段表示端点类型和方向。
在这个示例中为BULK端点,您可以对它进行IN传输操作。
512Bytes—表示端点的数据包最大大小。
在该实例中,数据包最大大小为512字节。
0—该字段包含备用设置编号。
在该实例中,备用设置编号为
0。
0x82—端点地址。
在该实例中,端点编号为0x02,方向为IN。
在EZ-USB®FX2™和FX2LP™上测试同步或批量端点的数据流 PacketsperXfer(每传输操作的数据包数量):一个传输操作指的是一组数据的数据包集合。
每次传输中含有的数据包越多,则开销越少,取得的数据速率也会越高。
XferstoQueue(队列的传输操作):该设置有助于启动多个传输,并把它们添加到任务队列中。
该项减小了主机应用方上的连续传输间的延迟。
因此,排列的传输次数越多,数据速率也越高。
esses(成功):增加以表示在数据流测试期间已经成功传输的数据包总数。
Failures(失败):随缓冲区传输的错误报告而增加。
一个可能错误机制为不适当处理ISOINPID序列的FX2(无LP)应用。
TransferRate(传输速率):提供通过有关所选端点上的USB总线和EZ-USBFX2LP当前吞吐量性能的实时更新。
CPUUtilization(CPU的使用):提供电脑CPU在USB流式传输期间利用率的视觉指示。
该应用在配备IntelIHC9USB2.0主机控制器并运行Windows®7的的系统上运行。
该结果表明,通过BULK传输所获得的平均吞吐量为43.8MBps,以及通过ISO传输获得的最大吞吐量为24MBps。
注意,上述性能数字是在外部外设未被连接到FX2LP上的情况下测得的。
在FX2LP中内部生成数据。
如果您通过外部外设生成数据,这些性能数字也取决于外部外设生成数据的速度。
在某些系统上,您可能看到BULK传输速率可以超过ISO传输速率。
这是因为在轻载总线上,streamer器件使用大多数或所有可用的USBBULK带宽资源。
然而,当其它USB器件启动时,例如正在播放视频的USB磁盘驱动器,需要保证ISO端点的协商带宽,所以缩小了可用的BULK带宽。
将FX2LP连接到图像传感器上 FX2LP可以连接到图像传感器上,以通过供应商类别驱动程序传送图像。
请参考KBA95736—将FX2LP™连接到图像传感器上。
参考 USB2.0规范—(/developers/docs/usb_20_070113.zip) FX2LP技术参考手册(TRM) 文档编号:001-75393版本*
C 10 总结 本应用笔记演示了支持流数据(如:音频和视频流等应用)的USB高带宽传输机制。
相关固件项目“CYStream.Uv2”说明了如何编程FX2LP以用于高速USBISO传输。
为了进行带宽对比,还执行了一个BULK传输集。
它还演示了如何使用赛普拉斯USB框架来实现备用USB设置,允许主机选择不同的传输速率。
还提供了名称为“Streamer.exe”的PC应用程序伴侣用以选择各种传输类型和测量传输速率。
在EZ-USB®FX2™和FX2LP™上测试同步或批量端点的数据流 关于作者 姓名:职务: RamaSaiKrishnaVakkantula.应用工程师 文档编号:001-75393版本*
C 11 在EZ-USB®FX2™和FX2LP™上测试同步或批量端点的数据流 文档修订记录 文档标题:AN4053—在EZ-USB®FX2™和FX2LP™上测试同步或批量端点的数据流文档编号:001-75393 版本***A*B*
C ECN3476700464378948800295789157 变更者NITAGAYALYAOAESATMP9 提交日期12/27/201101/28/201508/12/201506/28/2017 变更说明本文档译自英文版001-15289。
发布前检查。
本文档版本号为Rev*
B,译自英文版001-15289Rev*
H。
更新徽标和版权。
文档编号:001-75393版本*
C 12 在EZ-USB®FX2™和FX2LP™上测试同步或批量端点的数据流 全球销售和设计支持 赛普拉斯公司拥有一个由办事处、解决方案中心、厂商代表和经销商组成的全球性网络。
要想查找离您最近的办事处,请访问赛普拉斯所在地。
产品ARM®Cortex®微控制器汽车级产品时钟与缓冲器接口物联网存储器微控制器PSoC电源管理IC触摸感应USB控制器无线连接 /arm/automotive /clocks/interface /iot/memory /mcu/psoc/pmic/touch/usb/wireless PSoC®解决方案PSoC1|PSoC3|PSoC4|PSoC5LP|PSoC6 赛普拉斯开发者社区论坛|WICEDIoT论坛|项目|视频|博客|培训|组件 技术支持/support 此处引用的所有其他商标或注册商标归其各自所有者所有。
CypressSemiconductor198ChampionCourtSanJose,CA95134-1709 赛普拉斯半导体公司,2007-2017年。
本文件是赛普拉斯半导体公司及其子公司,包括SpansionLLC(“赛普拉斯”)的财产。
本文件,包括其包含或引用的任何软件或固件(“软件”),根据全球范围内的知识产权法律以及美国与其他国家签署条约由赛普拉斯所有。
除非在本款中另有明确规定,赛普拉斯保留在该等法律和条约下的所有权利,且未就其专利、版权、商标或其他知识产权授予任何许可。
如果软件并不附随有一份许可协议且贵方未以其他方式与赛普拉斯签署关于使用软件的书面协议,赛普拉斯特此授予贵方属人性质的、非独家且不可转让的如下许可(无再许可权)
(1)在赛普拉斯特软件著作权项下的下列许可权(一)对以源代码形式提供的软件,仅出于在赛普拉斯硬件产品上使用之目的且仅在贵方集团内部修改和复制软件,和(二)仅限于在有关赛普拉斯硬件产品上使用之目的将软件以二进制代码形式的向外部最终用户提供(无论直接提供或通过经销商和分销商间接提供),和
(2)在被软件(由赛普拉斯公司提供,且未经修改)侵犯的赛普拉斯专利的权利主张项下,仅出于在赛普拉斯硬件产品上使用之目的制造、使用、提供和进口软件的许可。
禁止对软件的任何其他使用、复制、修改、翻译或汇编。
在适用法律允许的限度内,赛普拉斯未对本文件或任何软件作出任何明示或暗示的担保,包括但不限于关于适销性和特定用途的默示保证。
赛普拉斯保留
更改本文件的权利,届时将不另行通知。
在适用法律允许的限度内,赛普拉斯不对因应用或使用本文件所述任何产品或电路引起的任何后果负责。
本文件,包括任何样本设计信息或程序代码信息,仅为供参考之目的提供。
文件使用人应负责正确设计、计划和测试信息应用和由此生产的任何产品的功能和安全性。
赛普拉斯产品不应被设计为、设定为或授权用作武器操作、武器系统、核设施、生命支持设备或系统、其他医疗设备或系统(包括急救设备和手术植入物)、污染控制或有害物质管理系统中的关键部件,或产品植入之设备或系统故障可能导致人身伤害、死亡或财产损失其他用途(“非预期用途”)。
关键部件指,若该部件发生故障,经合理预期会导致设备或系统故障或会影响设备或系统安全性和有效性的部件。
针对由赛普拉斯产品非预期用途产生或相关的任何主张、费用、损失和其他责任,赛普拉斯不承担全部或部分责任且贵方不应追究赛普拉斯之责任。
贵方应赔偿赛普拉斯因赛普拉斯产品任何非预期用途产生或相关的所有索赔、费用、损失和其他责任,包括因人身伤害或死亡引起的主张,并使之免受损失。
赛普拉斯、赛普拉斯徽标、Spansion、Spansion徽标,及上述项目的组合,WICED,及PSoC、CapSense、EZ-USB、F-RAM和Traveo应视为赛普拉斯在美国和其他国家的商标或注册商标。
请访问获取赛普拉斯商标的完整列表。
其他名称和品牌可能由其各自所有者主张为该方财产。
文档编号:001-75393版本*
C 13

标签: #电脑 #给别人 #华为 #文件 #华为 #压缩包 #转到 #光盘