AN75705 Getting Started with EZ-USB FX3 (Chinese).pdf

AN75705
EZ-USB® FX3™入门
相关项目:无
相关器件系列:EZ-USB ® FX3™
软件版本:SDK 1.3.3
相关应用笔记:AN70707
要想获取 FX3 设计资源的完整列表,请点击此处。
要想获得本应用笔记的最新版本或相关项目文件,请访问 http://www.cypress.com/go/AN75705。
AN75705 文档为您提供有关赛普拉斯 EZ-USB FX3 USB 3.0 设备控制器的入门信息。本文档重点介绍了 FX3 的技术参数和
应用程序,并且提供了有关各种设计资源的指引,以帮助 FX3 的开发。本文档还引导您使用具有 Eclipse 集成开发环境
(IDE)特性的赛普拉斯免费工具,开始开发 FX3 固件。最后,它还对 FX3 软件以及硬件开发套件进行了概述。
目录
简介 ................................................................................... 2
FX3 SDK 简介 ............................................................ 22
FX3 是什么? .................................................................... 2
FX3 固件示例 ............................................................. 23
FX3 特性 ............................................................................ 3
FX3 固件开发工具 ...................................................... 24
USB 接口 ...................................................................... 3
GPIF II .......................................................................... 3
CPU .............................................................................. 3
JTAG 接口 .................................................................... 3
Windows 软件概述...................................................... 24
应用接口 ..................................................................... 25
Windows 软件示例...................................................... 25
Streamer 示例 ............................................................ 25
UART 接口.................................................................... 3
适用于 Linux 的 FX3 SDK 和软件 ............................... 26
I2C 接口 ........................................................................ 3
附录 A.............................................................................. 28
I2S 接口......................................................................... 3
A.1. USB 3.0 概述....................................................... 28
SPI 接口........................................................................ 4
A.2. 电气接口 ............................................................. 28
启动选项 ....................................................................... 4
A.3. 线缆与连接器 ...................................................... 28
时钟 .............................................................................. 4
A.4. USB 3.0 与 2.0 .................................................... 30
电压域........................................................................... 4
附录 B.............................................................................. 31
FX3 的应用开发 ................................................................. 4
B.1. 在 Windows 上安装 FX3 DVK 驱动程序 .............. 31
FPGA/ASIC 连接到 FX3 ............................................... 4
附录 C ............................................................................. 33
通过 FX3 配置一个 FPGA ............................................. 5
C.1. 获取 EZ-USB FX3 DVK....................................... 33
图像传感器连接到 FX3 ................................................. 5
C.2. FX3 DVK 简介 ..................................................... 34
设计 FX3 硬件 ............................................................... 5
C.3. FX3 DVK 的 JTAG 调试器 ................................... 35
将 FX2LP 设计升级为 FX3 ............................................ 5
文档修订记录................................................................... 36
设计资源 ............................................................................ 6
全球销售和设计支持 ........................................................ 37
FX3 术语 ............................................................................ 7
使用 FX3 进行初次 USB 3.0 传输 .................................... 11
开发工具 .......................................................................... 21
SuperSpeed Explorer 套件简介 .................................. 21
www.cypress.com
文档编号:001-88777 版本*A
1
®
EZ-USB FX3™入门
简介
FX3 是什么?
赛普拉斯 EZ-USB FX3(后面缩写为 FX3)是一个功能强
大的 USB 3.0 外设控制器,可提供集成和灵活的功能。通
过 FX3,开发者能够将 USB 3.0 功能集成到他们的系统
中。
FX3 是一个集成了 ARM9 处理器的 USB 3.0 外设控制器。
并行和串行接口提供了与系统中其他设备的高速连接。
FX3 设备在系统中的主要功能是在 USB 主机与外设(如摄
像头或扫描仪)之间传输高带宽数据。强大的片上 ARM9
处理器使 FX3 能够进行访问数据流,并能高效地处理数
据。在不要求 FX3 执行数据处理的系统中,ARM9 固件仅
初始化和管理 USB 和数据消耗/提供设备两个接口间的数据
传输。
AN75705 文档有助于您了解 FX3。它重点介绍了 FX3 的关
键用途、应用及功能。同时提供了可从赛普拉斯获取的设计
资源的完整列表。本应用笔记介绍了使用 SuperSpeed
Explorer 套件(CYUSB3KIT-003)或 FX3 开发套件
(CYUSB3KIT-001)进行 USB 传输的流程。
除了 I2C、SPI、UART 和 I2S 串行接口之外,FX3 还有一
个高度灵活的可编程接口,即第二代通用可编程接口
(GPIF II)。通过可编程的 GPIF II,FX3 可以同各种设备
(包括 FPGA、图像传感器、ADC 以及应用处理器)相连
接。因此,在多种高性能 USB 3.0 应用中,FX3 是一个优
秀的控制器选择。
附录 A 提供了 USB 3.0 的概述。附录 B 介绍了如何安装
FX3 Windows 驱动程序(如果尚未安装)。
TCK
TDO
TRST#
TMS
TDI
图 1. FX3 框图
FSLC[0]
FSLC[1]
FSLC[2]
JTAG
CLKIN
CLKIN_32
XTALIN
XTALOUT
SRAM
(512kB/256kB)
ARM9
HS/FS/LS
OTG主机
DQ[31:0]/[15:0]
DMA
互联
CTL[15:0]
PMODE[2:0]
SS
外设
32
EPs
GPIF™ II
INT#
RESET#
D+
D-
充电器
检测
I2S
I2S_WS
I2S_MCLK
SPI
SSN
SCLK
MISO
MOSI
I2S_CLK
I2S_SD
UART
TX
RX
CTS
RTS
I2C_SCL
I2C_SDA
I2C
www.cypress.com
USB
HS/FS
外设
OTG_ID
SSRX +
SSRX SSTX +
SSTX -
文档编号:001-88777 版本*A
2
®
EZ-USB FX3™入门
GPIF II 一个常见的应用是作为同步从设备 FIFO 接口,用
于很多和 FPGA 的连接中。有关同步从设备 FIFO 接口的详
细信息,请参考 AN65974 — 设计 EZ-USB FX3 从设备
FIFO 接口中的内容。
FX3 特性
该部分对 FX3 的主要特性进行简要的介绍。
USB 接口
CPU
FX3 的 USB 接口支持下面各特性:

USB SuperSpeed(超高速)和 Hi-Speed(高速)外
设功能,符合 USB 3.0 规范(版本 1.0)。符合本规范
的设备(如 FX3)都与 USB 2.0 规范向后兼容。

符合 OTG 补充标准,版本 2.0。FX3 支持高速、全速
和低速 OTG 双角色设备功能。作为一个外设,FX3 能
够实现超高速、高速以及全速的传输功能。作为主机,
它能够实现高速、全速以及低速传输功能。

按照 CEA-936A 规范,在 USB D+/D–线上支持 Carkit
Pass-through UART 功能。

支持多达 16 个输入端点和 16 个输出端点。
FX3 拥有一个片上 32 位 200 MHz ARM926EJ-S 内核
CPU。该内核能直接访问 16 KB 的指令紧密连接内存
(TCM)和 8 KB 的数据紧密连接内存。ARM926EJ-S 内
核还提供了用于固件调试的 JTAG 接口。
FX3 集成了 512 KB 或 256 KB 的嵌入式 SRAM(取决于所
选择的设备型号),并支持四种启动代码的方法(USB、
GPIF II、I2C 或者 SPI)。
FX3 能在多种外设(如 USB、GPIF II、I2S、SPI 以及
UART)间实现高效灵活的 DMA 连接。FX3 固件配置外设
间的数据访问后,DMA 结构将管理传输,而不需要 ARM9
内核参与。安装 EZ-USB FX3 SDK 后可以使用 FX3 示例固
件。
GPIF II
JTAG 接口
高性能的 GPIF II 接口(作为处理器接口模块(PIB)的一
部分)与 FX2LP 的 GPIF 和从设备 FIFO 接口的功能相
似,但其功能更为先进。GPIF II 是一种可编程的状态机,
它所启用的灵活接口使用自己的高速时钟,完全独立于
ARM9。在工业标准或专用接口中,GPIF II 能够作为一个
主设备或从设备运行。GPIF II 可支持并行和串行接口。
FX3 的 JTAG 接口包含一个标准的 5 引脚接口,用于连接
JTAG 调试器,以便通过 CPU 内核的片上调试电路来调试
固件。ARM926EJ-S 内核的业界标准调试工具可用于 FX3
应用开发。
GPIF II 的主要特性包括:
FX3 的 UART 接口支持全双工通信,包括 TX、RX、CTS
以及 RTS 信号。UART 支持各种波特率,从 300 bps 到
4608 Kbps,可通过 FX3 固件进行选择。






可作为主设备或从设备使用。
UART 接口
提供 256 种可编程状态。
I2C 接口
支持 8 位、16 位、24 位和 32 位的并行数据总线。
FX3 的 I2C 接口作为 I2C 主设备使用,同 I2C 从设备进行
通信。例如,FX3 可从连接至 I2C 接口的 EEPROM 启动。
FX3 的 I2C 主控制器支持多主控制功能和 I2C 时钟延展。
I2C 控制器所支持的总线频率有 100 kHz、 400 kHz 和 1
MHz。
支持频率高达 100 MHz 的接口。
使用 32 位数据总线时,支持 14 个可配置的 I/O 引脚
(作为控制信号使用)。控制引脚可作为输入、输出或
双向引脚使用。
使用 16/8 位数据总线时,支持 16 个控制 I/O 引脚。控
制引脚可作为输入、输出或双向引脚使用。
赛普拉斯的 GPIF II Designer 工具有助于快速开发 GPIF II
状态机,并且包含了常用接口的示例。安装 EZ-USB FX3
SDK 后,可以使用 GPIF II Designer 工具。
www.cypress.com
I2S 接口
FX3 拥有一个 I2S 发送器,用于支持外部音频编解码器和
其它 I2S 接收器。I2S 接口支持的采样频率有 32 kHz、
44.1 kHz 和 48 kHz。
文档编号:001-88777 版本*A
3
®
EZ-USB FX3™入门
FX3 的输入电压必须满足 EZ-USB FX3 数据手册中的具体
规定。
SPI 接口
FX3 支持作为 SPI 主设备接口,其最大工作频率为
33 MHz。SPI 控制器支持四种 SPI 通信模式,传输数据大
小为 4 位到 32 位。
进行设计 FX3 硬件时,请参考 AN70707 — EZ-USB
FX3/FX3S 硬件设计指南和原理图检查表中介绍的内容。
启动选项
FX3 的应用开发
FX3 能够从下面各源中加载启动程序:
本章节重点介绍了 FX3 在系统中的某些典型应用。
USB、I2C、SPI、GPIF II(Booloader 所支持的同步
ADMux、异步 ADMux 或异步 SRAM 接口)。
AN76405 — EZ-USB FX3 启动选项提供有助于选择设计中
使用的启动方法的详细信息。
一个完整的 FX3 设计包括软件、固件以及硬件的开发。赛
普拉斯为这些内容提供了设计资源。FX3 设计资源在表 1
中列出。
时钟
FPGA/ASIC 连接到 FX3
FX3 支持晶振或外部时钟连接。支持的晶振频率为 19.2
MHz,支持的外部时钟频率为 19.2、26、38.4 和 52
MHz。
通过高速并行 GPIF II 接口,某些应用可以将 FPGA 或
ASIC 连接到 FX3。作为数据的源或库的其它设备则被连接
到 FPGA 或 ASIC。这样的应用包括数据采集设备、打印
机、扫描仪和成像设备等等。
FX3 的时钟输入必须符合 EZ-USB FX3 数据手册中具体规
定的相位噪声和时序抖动要求。
电压域
在上述应用中,FX3 作为与 USB 主机进行数据发送和接收
的快速数据管道。对于这些应用,FX3 到 FPGA/ASIC 的接
口通常是同步从设备 FIFO 接口(图 2)。
FX3 的各个功能模块(GPIF II、UART/SPI/I2S、I2C、
JTAG、USB、时钟和内核)均具有独立的电压域。
图 2. FPGA/ASIC 连接到 FX3
高带宽USB外设( 如摄像头,扫描仪,打印机)
SLCS#
PKTEND#
FLAGB
FLAGA
系统的
其他部分
(数据源/库)
外部FPGA/
ASIC
A[1:0]
D[15:0]/ D[31:0]
SLWR#
同步
从设备
FIFO
I/F
EZ-USB
FX3
USB
USB主机
(通常是拥有USB3.0
端口的PC)
SLRD#
SLOE#
PCLK
有关从设备 FIFO 接口以及 FPGA 连接到 FX3 的完整设计示例的详细说明,请参阅 AN65974 — 设计 EZ-USB FX3 从设备 FIFO
接口。
GPIF II 能够执行的另一种接口是同步地址数据复用接口。
www.cypress.com
文档编号:001-88777 版本*A
4
®
EZ-USB FX3™入门
通过 FX3 配置一个 FPGA
在 FX3 连接到 FPGA 的应用中,可能会先通过 FX3 加载 FPGA bit 文件。此时,该 FPGA 配置文件可以通过 FX3 从一个 USB
主机传送到 FPGA。这样可以节省一个 FPGA 启动存储器,并且能够通过 PC 对 FPGA 进行重新配置(包括更新操作)。有关
示例的实现,请参见 AN84868 — 使用赛普拉斯 EZ-USB FX3 配置 FPGA。
图 3. 通过 FX3 配置 FPGA
PC
FX3
FPGA
FPGA
FX3
PC
位流
位流
(a) FPGA从外部存储器
启动。
(b) FPGA从PC启动。
无需外部存储器。
启动
存储器
图像传感器连接到 FX3
在图像应用中,图像传感器通过并行 GPIF II 接口直接与 FX3 相连,视频流通过 FX3 从传感器发送给 USB 主机。
通过使用合适的固件对 FX3 进行编程,可使该系统同 USB 视频类别相兼容。有关这种应用的示例,请参见 AN75779 — 如何使
用 EZ-USB FX3 在 USB 视频类别(UVC)框架内实现图像传感器接口。
图 4. 图像传感器连接到 FX3
Camera
USB Host
PCLK
Frame Valid
Line Valid
GPIF II
DQ[15:0]/DQ[7:0]
USB
EZ-USB FX3
Image Sensor
Reset#
I2C control
USB
Host
Controller
UVC
Driver
Video
Capture
Application
GPIO
I2C
Master
设计 FX3 硬件
由于 USB 3.0 的速度和电源的特点,进行电脑上的设计和布局时请务必小心。进行设计 FX3 硬件时,请参考 AN70707 — EZUSB FX3/FX3S 硬件设计指南和原理图检查表中介绍的内容。有关原理图的示例设计,请参见 FX3 DVK 原理图。
将 FX2LP 设计升级为 FX3
如果您想要将现有的 FX2LP 设计升级到 FX3,请参见 AN76348 — EZ-USB FX2LP 和 EZ-USB FX3 应用的区别中介绍的内
容。
www.cypress.com
文档编号:001-88777 版本*A
5
®
EZ-USB FX3™入门
设计资源
表 1 列出了赛普拉斯所提供的各种资源,用于开发 FX3。有关 USB SuperSpeed 代码示例的完整列表,请点击此处。
表 1. FX3 设计资源
设计
FX3 固件
资源
资源所在位置
带有 GCC 编译器的 Eclipse IDE 安装包
可从 EZ-USB FX3 SDK 的安装包中获取
用于执行多种函数的 API
固件示例
主机软件
有关使用 SDK 的文档
FX3 编程者手册
SDK 提供的所有 API 文档
FX3 SDK API 指南
与 FPGA 连接的完整设计中的同步从设备 FIFO 固件示例
AN65974 — 设计 EZ-USB FX3 从设备 FIFO 接口
与 UVC 相兼容的固件示例
AN75779 — 如何使用 EZ-USB FX3 在 USB 视频类
别(UVC)框架内实现图像传感器连接
USB 3.0 驱动程序 — cyusb3.sys
可从 EZ-USB FX3 SDK 安装包获取
主机应用示例 — Control Center 和 Streamer 的应用程序
GPIF II 接
口设计
硬件设计
赛普拉斯 USBSuite 应用开发 — 快速入门指南
赛普拉斯 USBSuite 应用开发 — 快速入门指南
通过 GPIF II Designer 工具,您可以使用状态机来设计一个自定义的
GPIF II 接口。该工具会生成集成到 FX3 固件内的所需代码。
可从 EZ-USB FX3 SDK 的安装包中获取
GPIF II 通常用于实现从设备 FIFO、SRAM 从设备以及 ADMux 从设
备接口
GPIF II Designer 工具 — 可从 EZ-USB FX3 SDK 的
安装包中获取
GPIF II 文档,包含了工具的使用说明
GPIFII 设计指南 — GPIF II Designer 工具附带(可从
EZ-USB FX3 SDK 的安装包中获取)
开发电路板 — 原理图、电路板文件和文档
SuperSpeed Explorer 套件(CYUSB3KIT-003)用户
指南和设计文件(原理图、CAD、Gerber 文件)
FX3 DVK(CYUSB3KIT-001)用户指南和设计文件
(原理图、CAD、Gerber 文件)
固件调试
硬件设计指南包含有关晶振、电源的去耦电容以及 PCB 布局的建议
AN70707 — EZ-USB FX3/FX3S 硬件设计指南和原
理图检查表
IBIS 模型
FX3 IBIS 模型
设置并使用 JTAG 调试器
FX3 编程者手册中的第 12 章
其他资料
应用笔记
EZ-USB FX3 应用笔记
培训视频
EZ-USB FX3 架构概述(可在本应用笔记的同一个网页上找到)
知识库文章
EZ-USB FX3 知识库文章
www.cypress.com
文档编号:001-88777 版本*A
6
®
EZ-USB FX3™入门
要想了解 FX3 的数据输出和输入,需要明白下面的重要术
语:




套接字
DMA 描述符
DMA 缓冲区
GPIF 线程
套接字是外设硬件模块和 FX3 RAM 之间的连接点。FX3 上
的每个外设硬件模块(如 USB、GPIF、UART 和 SPI)具
有各自固定的套接字数量。流经外设的独立数据流数量等于
该外设上的套接字数量。套接字的实现包括一组寄存器,用
于指向有效的 DMA 描述符,并使能或置位与该套接字相关
的中断。
DMA 描述符是一组位于 FX3 RAM 中的寄存器。它保存了
DMA 缓冲区的地址和大小,以及指向下一个 DMA 描述符
的指针。这些指针构建成了 DMA 描述符链。
DMA 缓冲区是 RAM 的一部分,用于存储通过 FX3 设备传
输的中间数据。通过 FX3 固件,可将部分 RAM 空间分配给
DMA 缓冲区。这些缓冲区的地址被存储在 DMA 描述符
中。
通过使用 GPIF II 模块中的多个 GPIF 线程,可以解决该问
题。GPIF II 模块提供四个 GPIF 线程。每次只有一个 GPIF
线程能够传输数据。GPIF II 状态机必须选择一个有效的
GPIF 线程来传输数据。
GPIF 线程选择机制同复用器一样。GPIF II 状态机使用内部
控制信号或外部输入(在从设备 FIFO 2 位应用笔记中便为
地址线 A1 和 A0)来选择有效的 GPIF 线程。切换有效的
GPIF 线程时会切换用于数据传输的有效套接字,从而改变
用于数据传输的 DMA 缓冲区。GPIF 线程切换没有延迟。
套接字与 GPIF 线程的默认映射如图 5 所示 — 套接字 0 对
应于 GPIF 线程 0、套接字 1 对应于 GPIF 线程 1、套接字
2 对应于 GPIF 线程 2,以及套接字 3 对应于 GPIF 线程
3。
图 5. GPIF II 套接字/线程的默认映射图
Processor Interface Block
(PIB)
GPIF 线程是 GPIF II 模块内的专用数据路径,用于将外部
数据引脚同套接字连接起来。
套接字可通过各个事件来互相发出信号,或者它们可通过中
断向 FX3 CPU 发出信号。该操作由固件配置的。例如,将
数据流从 GPIF II 模块传输给 USB 模块。GPIF 套接字可以
通知 USB 套接字它已经向 DMA 缓冲区写满了数据,或者
USB 套接字可以通知 GPIF 套接字该 DMA 缓冲区目前为
空。该操作被称为自动 DMA 通道。当 FX3 CPU 不用修改
数据流中的任何数据时,通常会使用自动 DMA 通道。
或者,GPIF 套接字可以向 FX3 CPU 发送一个中断,来通
知 GPIF 套接字已经写满了 DMA 缓冲区。FX3 CPU 可将该
信息传递给 USB 套接字。USB 套接字会向 FX3 CPU 发送
一个中断,来通知 USB 套接字已经读空了 DMA 缓冲区。
此时,FX3 CPU 可将该信息反馈给 GPIF 套接字。该操作
被称为手动 DMA 通道实现。FX3 CPU 需要添加、删除或
修改数据流中的数据时,通常需要执行该操作。UVC 应用
笔记(AN75779)中的固件示例使用了手动 DMA 通道操
作,因为该固件要求添加 UVC 视频数据首部。
www.cypress.com
GPIF II
Socket 0
Thread 0
Socket 1
Thread 1
Socket 2
Thread 2
Socket 3
Thread 3
Switching
FX3 术语
将数据写入 DMA 缓冲区内的套接字被称作发送套接字。从
DMA 缓冲区内读取数据的套接字被称作接收套接字。套接
字使用存储在 DMA 描述符上的 DMA 缓冲区地址、DMA 缓
冲区大小和 DMA 描述符链的值来管理数据。套接字写满或
读空 DMA 缓冲区后,需要经过一段时间(几微秒)从一个
DMA 描述符转移到另一个描述符。转移过程中,套接字不
能传输数据。对于没有流控制的接口,该延迟是一个问题。
图像传感器接口便属于这类情况。
External
Data Bus
为了便于用户理解 DMA 传输,下面四个图中说明了套接字
的概念。
文档编号:001-88777 版本*A
7
®
EZ-USB FX3™入门
图 6. 套接字根据 DMA 描述符列表传输数据
图 8. 使用 DMA 描述符 2 运行的套接字
Socket Linked List
Socket Linked List
FX3 RAM
Socket
DMA Descriptor 1
Address A1, Length L,
Next Descriptor 2
FX3 RAM
Socket
DMA Buffer 1
DMA Descriptor 2
Address A2,Length L,
Next Descriptor 3
DMA Buffer 2
DMA Buffer 1
A2
L
DMA Buffer 3
Data
DMA Descriptor 1
Address A1, Length L,
Next Descriptor 2
DMA Descriptor 2
Address A2 Length L,
Next Descriptor 3
DMA Buffer 2
DMA Buffer 3
DMA Descriptor 3
Address A3, Length L,
Next Descriptor 1
Data
套接字链接列表是主存储器中的一组数据结构,这组数据结
构又被称为 DMA 描述符。每个描述符指定了 DMA 缓冲区
的地址和长度,以及指向下一个 DMA 描述符的指针。套接
字运行时,逐个的检索 DMA 描述符,按照描述符指定的地
址和长度向 DMA 缓冲区中传输数据。传输 L 个字节后,该
套接字会检索下一个描述符,并继续将数据传输到另一个
DMA 缓冲区内。
在图 9 中,该套接字检索第三个 DMA 描述符,并从 A3 地
址开始传输数据。L 个字节被传输后,将返回到 DMA 描述
符 1 重复该操作。
图 9. 使用 DMA 描述符 3 运行的套接字
Socket Linked List
该结构使套接字变得非常灵活,因为可以在存储器中的任何
位置上创建任何数量的 DMA 缓冲区,并且这些缓冲区可以
自动被链接在一起。例如,图 6 中的套接字重复循环检索
DMA 描述符。
DMA Buffer 1
图 7. 使用 DMA 描述符 1 运行的套接字
DMA Buffer 2
Socket Linked List
DMA Descriptor 3
Address A3, Length L,
Next Descriptor 1
FX3 RAM
Socket
DMA Descriptor 1
Address A1, Length L,
Next Descriptor 2
DMA Descriptor 2
Address A2 Length L,
Next Descriptor 3
DMA Buffer 3
A3
FX3 RAM
A1
L
Socket
DMA Descriptor 1
Address A1, Length L,
Next Descriptor 2
Data
DMA Descriptor 3
Address A3, Length L,
Next Descriptor 1
DMA Buffer 1
DMA Descriptor 2
Address A2 Length L,
Next Descriptor 3
DMA Buffer 2
DMA Buffer 3
Data
DMA Descriptor 3
Address A3, Length L,
Next Descriptor 1
在图 7 中,该套接字加载了 DMA 描述符 1,并从 A1 地址
开始传输操作。在传输完 L 个字节之后,它将检索 DMA 描
述符 2,继续从地址 A2 传输 L 个字节数据(图 8)。
www.cypress.com
图 10 显示了 DMA 数据传输的详细过程。例如,示例应用
使用了三个长度为 L 个字节的 DMA 缓冲区,这些缓冲区通
过链接方式形成一个圆形循环。FX3 存储器地址位于左
边。蓝色箭头表示该套接字从内存加载套接字链接列表的描
述符。红色箭头表示数据传输路径。下面各步骤描述了数据
被发送到内部 DMA 缓冲区时所进行的套接字操作序列。
步骤 1:将内存中的 DMA 描述符 1 加载到套接字内。获取
有关 DMA 缓冲区地址(A1)、DMA 缓冲区大小(L)和下
一个描述符(DMA 描述符 2)的信息。转到步骤 2。
步骤 2:将数据传输到起始地址为 A1 的 DMA 缓冲区。向
DMA 缓冲区传送了 L 个字节后,将转到步骤 3。
文档编号:001-88777 版本*A
8
®
EZ-USB FX3™入门
如果在套接字从内存检索下一个 DMA 描述符时(通常需要
1 微秒),外部外设进行数据传输,使用该简单的方案会使
数据丢失。套接字可以在一个时钟周期内进行切换而不会生
成延迟,可利用该特性来解决问题。这样,如果外部外设没
有任何流控制机制,便可以使用两个套接字。图 11 显示了
使用两个套接字进行的数据传输以及执行操作的各步骤。套
接字 0 和套接字 1 对 DMA 缓冲区的访问分别使用了红色和
绿色箭头(套接字有各自的独立数据路径)区分。每一步骤
中的‘a’和‘b’操作同时发生。硬件执行的该并行操作
可以消除 DMA 描述符的检索时滞,并允许 GPIF II 将数据
流连续传输到内部存储器内。
图 10. DMA 传输示例
0
DMA Descriptor 3
Buffer Address: A3 – Size L
Next DMA Descriptor: 1
Ste
p
1
DMA Descriptor 2
Buffer Address: A2 – Size L
Next DMA Descriptor: 3
ep
St
DMA Descriptor 1
Buffer Address: A1 – Size L
Next DMA Descriptor: 2
3
Step
5
图 11. 使用两个套接字进行无缝传输
Socket
2
1a
DMA Descriptor 1
Buffer Address: A1 – Size L
Next DMA Descriptor: 3
ep
p
Ste
St
A1
0
DMA Buffer 1
St
ep
4
DMA Descriptor 2
Buffer Address: A2 – Size L
Next DMA Descriptor: 4
A1+L
A2
ep
6
a
6a
Step 4a
A3
1b
St
St
ep
p3
5a
DMA Descriptor 4
Buffer Address: A4 – Size L
Next DMA Descriptor: 2
A2+L
ep
Step
DMA Buffer 2
DMA Descriptor 3
Buffer Address: A3 – Size L
Next DMA Descriptor: 1
St
Ste
Socket 0
Socket 1
A1
DMA Buffer 3
DMA Buffer 1
p2
e
St
ep
A3+L
St
6b
ep
A1+L
A2
步骤 6:将数据传输到起始地址为 A3 的 DMA 缓冲区。向
DMA 缓冲区传送了 L 个字节后,将返回步骤 1。
DMA Buffer 3
5b
ep
St
ep
A2+L
A3
步骤 4:将数据传输到起始地址为 A2 的 DMA 缓冲区。向
DMA 缓冲区传送了 L 个字节后,将转到步骤 5。
步骤 5:加载当前 DMA 描述符 2 所指向的 DMA 描述符
3。获取有关 DMA 缓冲区地址(A3)、DMA 缓冲区大小
(L)以及下一个描述符(DMA 描述符 1)的信息。
4b
DMA Buffer 2
St
步骤 3: 加载当前 DMA 描述符 1 所指向的 DMA 描述符
2。获取有关 DMA 缓冲区的地址(A2)、DMA 缓冲区大小
(L)以及下一个描述符(DMA 描述符 3)的信息。
3b
St
A3+L
A4
DMA Buffer 4
A4+L
步骤 1:启动各套接字时,套接字 0 和套接字 1 分别加载
DMA 描述符 1 和 DMA 描述符 2。
步骤 2:当有数据时,套接字 0 将数据传输到 DMA 缓冲区
1 内,该传输的长度为 L 个字节。传输结束后,继续转到步
骤 3。
www.cypress.com
文档编号:001-88777 版本*A
9
®
EZ-USB FX3™入门
步骤 3:GPIF II 切换 GPIF 线程,从而切换进行数据传输
的套接字。套接字 1 开始将数据传输到 DMA 缓冲区 2 内,
同时套接字 0 将加载 DMA 描述符 3。在套接字 1 完成传输
L 个字节数据时,套接字 0 已准备好将数据传输到 DMA 缓
冲区 3 内。
步骤 5: GPIF II 将套接字 1 的数据传输到 DMA 缓冲区 4
内。同时,套接字 0 加载 DMA 描述符 1 以准备好将数据传
输到 DMA 缓冲区 1 内。请注意,步骤 5a 与步骤 1a 相同,
但它的套接字 1 不进行初始化,而是同时进行数据传输
的。
步骤 4:GPIF II 此时切换回到原始的 GPIF 线程。这时,
套接字 0 将长度为 L 的数据传输到 DMA 缓冲区 3 内。同
时,套接字 1 将加载 DMA 描述符 4,以便准备好将数据传
输到 DMA 缓冲区 4 内。套接字 0 完成传输 L 个字节的数据
后,会转到步骤 5。
步骤 6:GPIF II 再次切换套接字后,套接字 0 会将 L 个字
节数据传输到 DMA 缓冲区 1 内。假设 UIB 接收套接字此时
已经读空了 DMA 缓冲区中的所有数据。套接字 1 同时会加
载 DMA 描述符 2 并准备将数据传输到 DMA 缓冲区 2 内。
在此,继续转到步骤 3。
只在接收端(USB)读空并释放掉 DMA 缓冲区(以接收
GPIF II 的下一个数据块)时,GPIF II 套接字才能传输数
据。如果接收端的速度不够块,对 DMA 缓冲区的写操作将
被忽略,使套接字丢失数据。
www.cypress.com
文档编号:001-88777 版本*A
10
®
EZ-USB FX3™入门
使用 FX3 进行初次 USB 3.0 传输
本节向您介绍了建立并运行一个简单固件示例的步骤,从而您可以执行 USB 主机与 FX3 设备间的 BULK OUT 和 BULK IN 传
输。
在执行该示例前,请实现以下操作:
1.
准备 EZ-USB® FX3™ SuperSpeed Explorer 套件(CYUSB3KIT-003)。在该过程中,FX3 固件是从 USB 主机下载的,因
此必须配置 FX3 DVK 开发板从 USB 启动。连接所有跳线器(如图 12 所示),来选择 USB 启动。这些跳线器设置都使用
一个红色框或圆圈加亮显示。有关该开发板的详细信息,请参考套件用户指南。SuperSpeed Explorer 套件电路板只能由
USB 线缆供电(总线供电)。如果您想要查找 FX3 开发套件(CYUSB3KIT-001),请参考附录 C.1. 获取 EZ-USB FX3
DVK,以了解有关套件和跳线器设置的详细信息。
图 12. SuperSpeed Explorer 套件电路板的 USB 启动设置
www.cypress.com
文档编号:001-88777 版本*A
11
®
EZ-USB FX3™入门
2.
安装 EZ-USB FX3 SDK。当要求选择 Installation Type 项时,请选择默认的 Typical 项。安装 FX3 SDK 后,将固件示例
导入到 Eclipse IDE 工作区内(Eclipse IDE 安装包作为 SDK 的一部分)。想要将所有固件示例导入到 IDE 内,请按照下列
步骤:
a.
从 Start 菜单内打开 Eclipse IDE。依次选择 All Programs > Cypress > Eclipse > EZ USB Suite。接受默认的工作区
文件夹,但后面您随时都可以定义自己的路径。
图 13. 从“Start”菜单打开“Eclipse IDE”
b.
这时将打开一个空的“Eclipse IDE”,在“Project Explorer”选项卡上没有任何项目。下一步需要将赛普拉斯示例项
目导入到“Project Explorer”中。
图 14. 导入项目之前的 Eclipse IDE
www.cypress.com
文档编号:001-88777 版本*A
12
®
EZ-USB FX3™入门
c.
d.
依次选择 File > Import。
依次选择 General > Existing Projects into Workspace,然后点击 Next。
图 15. 选择“Existing Projects into Workspace”
e.
浏览 SDK 安装包里的固件目录。点击 Browse…按钮,然后转到 Cypress SDK firmware 文件夹。对于典型的
Windows 安装,该文件夹位于 C:\Program Files (Program Files (x86 on 64-bit
machines)\Cypress\EZ-USB FX3 SDK\firmware 路径下。
图 16. 选择根目录
www.cypress.com
文档编号:001-88777 版本*A
13
®
EZ-USB FX3™入门
图 17. 浏览 SDK 安装中的“firmware”目录
f.
勾选所有赛普拉斯范例项目。或者请点击 Select All 按键。同样,可以选中 Copy projects into workspace,然后点
击 Finish 按键。
www.cypress.com
文档编号:001-88777 版本*A
14
®
EZ-USB FX3™入门
图 18. 在固件目录下选择所有项目
g.
所有固件示例均被导入到工作区内,并且在“Eclipse Project Explorer”中显示。导入过程中自动编译了各项目,因此
需要几分钟的时间来加载并编译所有项目。加载完成后,您可以运行这些项目,也可以修改和重新编译它们。
www.cypress.com
文档编号:001-88777 版本*A
15
®
EZ-USB FX3™入门
图 19. 将所有项目导入到工作区内
编 译 并 运 行 U S B B u l k L o o p Au t o 固 件
下一部分内容是编译并运行一个基本的固件示例。
FX3 SDK 中所提供的 USBBulkLoopAuto 固件示例默认配置了 BULK 端点 1 IN 以及 BULK 端点 1 OUT。FX3 固件使 USB 主机
发送给 OUT 端点的数据循环返回到 IN 端点。相同数据可以从 IN 端点传送到 USB 主机。
1.
在“Eclipse IDE”中,通过双击“USBBulkLoopAuto”固件,或者通过点击它名字左边的小扩展箭头,可以打开
“USBBulkLoopAuto”固件。您可以按照该固件的默认设置编译它,也可以根据下面介绍的步骤修改端点编号,进而将其
更改。如果想运行固件而不用进行任何修改,请跳到步骤 5。如想进行轻微修改后再运行,请继续进行步骤 2。建议执行各
修改步骤,了解关于 Eclipse 工具链的详细信息,。
2.
在文件列表内,请双击 cyfxbulkloopauto.h,使其显示在编辑器窗口内。通过使用.h 文件的下方的标识符
CY_FX_EP_PRODUCER、CY_FX_EP_CONSUMER、CY_FX_EP_PRODUCER_SOCKET 以及
CY_FX_EP_CONSUMER_SOCKET,可以在 cyfxbulkloopauto.h 文件内定义端点编号及其相应的套接字。
www.cypress.com
文档编号:001-88777 版本*A
16
®
EZ-USB FX3™入门
图 20. cyfxbulklpauto.h 中的端点与套接字定义
3.
使用上面介绍的标识符,端点编号以及相关的套接字从 EP1 被改为 EP2,如图 21 所示。因此,在修改后的固件中,EP2
IN 为 BULK IN,则 EP2 OUT 为 BULK OUT。
注意:在 USB 中,一个端点是通过一个字节(包含:位 7 作为方向(1 表示输入,0 表示输出);其他 7 个位作为地址
(位[6:0]))来标识的。一个 FX3 “套接字”在 USB 传输中相当于一个端点。USB 域中的套接字和其他外设域上(如
GPIF II 或甚至是 CPU)的套接字相连接,用于数据传输。
图 21. 端点编号和相关套接字的修改(从 EP1 改为 EP2)
4.
请保存修改后的 cyfxbulklpauto.h 文件(File >Save)。Eclipse 编译过程不会自动保存新编辑的文件。确保在 Project
Explorer 屏幕上展开了 USBBulkLoopAuto 项目,然后依次选择 Project > Build Project,实现项目的编译。
同样,您可以在编译该项目前选择 Build Configurations 项。在 Project Explorer 面板中,右键点击项目名称;然后依次选
择 Build Configurations > Set Active >Debug/Release(请参见图 22)。
www.cypress.com
文档编号:001-88777 版本*A
17
®
EZ-USB FX3™入门
图 22. 在 Eclipse IDE 中选择 Build Configuration 项
注意:Release(发布)模式下的固件镜像小于 Debug
(调试)模式下的大小。调试模式的固件镜像包含了附加的
调试符号,有助于用户使用 JTAG 进行调试。
将 U S B B u l k L o o p Au t o 固 件 加 载 到 F X 3 R AM 内
通过名为“Cypress Control Center”(赛普拉斯控制中
心)的应用将代码加载到 FX3 中。Control Center 应用作
为 FX3 SDK 的组成部分安装。
1.
通过 Start 菜单,打开 Cypress Control Center 应用。
依次选择 Start > All Programs >Cypress > Cypress
USBSuite > Control Center。
2.
使用套件附带的 USB 3.0 线缆,通过 SuperSpeed 或
Hi-Speed USB 端口将开发板与电脑相连。如果您先前
已 经 安 装 了 套 件 设 置 和 驱 动 软 件 , 则 USB Control
Center 应用将会显示“Cypress USB Bootloader”,
表示设备已连接。但是,如果您收到一条“no drive
found(未找到驱动程序)”的信息,请参见附录 B 来
安装 Windows 驱动程序。
www.cypress.com
3.
要想加载 FX3 RAM 的固件,请依次选择
Program > FX3 >RAM。
文档编号:001-88777 版本*A
18
®
EZ-USB FX3™入门
4.
导航到需要加载到 FX3 的固件镜像文件。该文件是
Eclipse 在编译过程的最后步骤中生成的
USBBulkLoopAuto.img 文件。在默认工作区中,该文
件的位置是:
C:\Users\antioch\Work\USBBulkLoopAuto\
Debug。选择文件后点击 Open 按钮,或者双击文件名
称。
USB Control Center 下载新的 FX3 代码后,Windows 将检
测到名为“Cypress USB BulkLoopExample”的新 USB 设
备。这便是 FX3 的重新枚举操作。FX3 最初作为
Bootloader 出现在 Windows 中,但加载新的代码后,它便
同 USB 断开,然后作为由下载代码定义的新设备(BULK
环路)重新连接到 USB。注意,FX3 “Cypress USB
Bootloader”消失,并且在 Control Center 菜单下有了一个
新的 USB 外设,显示为“Cypress USB
BulkloopExample”。FX3 以新的供应商 ID/产品 ID(分别
为 0x04B4 和 0x00F0)重新枚举。
注意:当您需要下载新的项目,请使用 RESET 开关来复位
FX3,使其返回到 Bootloader 模式。
执行 BULK 传输
5.
展开“Cypress USB Bulkloop Example”条目下所有的
子条目。如果您按照第 1 到第 6 步的介绍修改并编译了
固件,那么您将会看到 BULK EP2 OUT 和 BULK EP 2
IN 出现在接口 0 中备用设置 0 的下面(图 23)。
注意:如果您没有对固件进行修改,在 Control Center
中会显示默认的 “BULK out endpoint (0x01)”和
“BULK in endpoint (0x81)”。
6.
要执行一个 BULK OUT 传输,请点击 Data Transfers
选项卡,然后选择左侧屏幕内的 BULK out endpoint
(0x02)项。向 Bytes to Transfer 字段输入需要传输的
字节数量;向 Data to send (Hex)字段输入需要传输的
数据。Control Center 将自动在十六进制数字对之间插
入空格。点击 Transfer Data-OUT。图 23 显示了将 5
个字节传输到 BULK OUT 端点(0x02)的设置。
图 23. BULK OUT 传输
7.
BULK Loop 程序使用相应编号的 IN 端点回送通过 OUT 端点接收的所有数据。要执行 BULK IN 传输,请选择左侧屏幕中的
BULK in endpoint (0x82)。向 Bytes to Transfer 字段内输入需要传输的字节数量。点击 Transfer Data-IN。图 24 显示了
在 IN 端点(0x82)上接收到相同的 5 个字节。
图 24. BULK IN 传输
www.cypress.com
文档编号:001-88777 版本*A
19
®
EZ-USB FX3™入门
www.cypress.com
文档编号:001-88777 版本*A
20
®
EZ-USB FX3™入门
开发工具
目前用户已经对 FX3 设备进行了基本的操作,本部分将对 SuperSpeed Explorer 套件(CYUSB3KIT-003)和 FX3 SDK 套件提
供简要说明。有关 FX3 DVK(CYSUB3KIT-001)的信息,请参见附录 C.3. FX3 DVK 的 JTAG 调试器。
SuperSpeed Explorer 套件简介
赛普拉斯的 SuperSpeed Explorer 套件提供了您需要使用的硬件。PCB 提供了 FX3 所需的时钟和电源,以及可配置 I/O 电压。
2
该套件拥有高速接口,支持与外设连接。SuperSpeed Explorer 套件支持 USB 启动和 I C 启动。该开发板还拥有一个 8 Mbit 的
2
2
I C EEPROM,用于存储固件并测试从 I C EEPROM 启动的操作。SDK 提供的赛普拉斯示例项目包含了固件,用于通过使用
DVK 开发板编程这些设备。如果您未安装 SuperSpeed Explorer 套件,可从此处获取它。
两个很重要的硬件部分(处于 FX3 DVK 开发板外)分别是 USB 3.0 主机(通常为 PC)以及与 GPIF II 接口相连的外部设备
(如图像传感器或 FPGA)。有关 SuperSpeed Explorer 套件的详细信息,请参考套件用户指南。图 25 显示了 SuperSpeed
Explorer 套件电路板的重点区域。
图 25. FX3 DVK 电路板
表 2 显示了 DVK 开发板上的重要跳线器和它们的默认设置情况。
www.cypress.com
文档编号:001-88777 版本*A
21
®
EZ-USB FX3™入门
表 2. SuperSpeed Explorer 套件电路板的跳线器
跳线器
跳线器状态
功能
J2
短接
将电压域 VIO1、VIO2 和 VOI3 的电压都设置为 3.3 V,用以支持外部 3.3 V 接口和板上 SRAM。
J3
短接
开发板由 USB 3.0 VBUS 供电。为了保证电路板的正常工作,请插好该跳线器。
J4
开路
如果 EEPROM 上存储一个有效的固件镜像,那么电路板将从 I2C EEPROM 启动。否则,它将返回到 USB 启
动。
注意:默认情况下,EEPROM 将存储带有 LED 闪烁功能的 USBBulkSourceSink 固件。
J5
开路
取消选择外部 SRAM。
固 件 库 与 AP I
FX3 SDK 简介
赛普拉斯提供了一整套用于 FX3 的软件和固件库,以便在
嵌入式系统环境中集成 USB 应用。软件开发套件(SDK)
中带有应用示例,可加快应用开发。可从赛普拉斯网站上下
载 SDK。图 26 显示了安装 SDK 时所创建的目录结构。
赛普拉斯提供了一个功能强大的 API 库,能使再复杂的设
计也变得更简单。下面介绍了 FX3 SDK 的一些优点:

RTOS
包含在内的 ThreadX Real Time OS(多线程实时操作
系统,RTOS)简化了固件的开发过程。通过 RTOS,
可以很容易地创建多个线程以简化固件流程。
图 26. 目录结构

模块方法
使用基于 API 的方法时,开发人员不需要掌握有关 FX3
的寄存器和位的知识,这样可以专注于固件逻辑和流
程 。 该 方 法 有 助 于 使 用 、 调 试 、 修 改 和 支 持 FX3
SDK。
图 27. 固件 SDK 的结构
FX3 Firmware Stack
FX3
FX3Firmware
Firmware
Examples
Examples
Customer
Firmware
FX3 Firmware Framework
FX3 API Library
RTOS
Customer software
Cypress provided software
Third-party software
www.cypress.com
文档编号:001-88777 版本*A
22
®
EZ-USB FX3™入门
API 支持:
USB ISOCHRONOUS 数据回送示例

编程 FX3 中每一个独立的模块(GPIF II、USB 以及串
行接口)
这些示例说明了各 USB ISOCHRONOUS 端点之间的回送
机制。它类似于 BULK 回送示例,不同的是这里使用了同
步端点,而不是 BULK 端点。





编程 DMA 引擎,并设置这些模块之间的数据流
从设备 FIFO 应用示例
ThreadX OS 调用应用所需的函数
从设备 FIFO 应用示例演示了 USB 主机和外部 FIFO 控制
器之间的数据传输。该示例包含了 USB 主机和外部主设备
之间的两个单向数据通道。可将 GPIF II 接口配置为使用了
一个 16 位或 32 位总线的同步或异步从设备 FIFO 传输。
调试功能
USB 主机模式操作
串行接口示例
电源管理功能
这些示例演示了对 GPIO、I2C、SPI 和 UART 的数据访
问。
框 架 AP I
该固件(或应用)框架包含了启动和初始化代码。同样也包
含了 USB、GPIF II 以及串行接口模块使用的独立驱动程
序。该框架支持:




定义程序的入口
该示例说明了通过 USB 对 I2C EEPROMS 和 SPI Flash 设
备进行的编程操作。读取或写入操作是通过使用预定义的供
应商指令完成。使用这些指令可以将启动镜像编程到这些设
备中。
执行内核初始化
提供用于应用线程启动代码的占位符
大容量存储类示例
FX3 固件示例
SDK 提供多个固件示例,如上面的“Eclipse Installation”
部分所示。本部分详细介绍了一些更常见的示例固件项目。
当前可用的固件示例的完整列表可从 SDK 发布说明中获
取。所有示例都能在 USB 2.0 和 USB 3.0 的速度下工作。
注意:示例固件以单独的 Eclipse 项目形式提供。这样,通
过“Eclipse Project Explorer”,您可对完整示例固件文件
列表的情况一目了然。
USB BULK 数据回送示例
这里介绍了 USB BULK 端点之间的简单回送机制。来自
USB 主机(PC)的所有标准设置请求都由 FX3 应用示例处
理。该固件示例使用 DMA AUTO 或 MANUAL 通道实现回
送。
www.cypress.com
这些示例说明了通过两个 USB BULK/ISOCHRONOUS 端
点执行的数据传输/接收机制。
Flash Programmer 示例
执行堆栈设置
DMA 多通道示例使用了三个端点进行回送。
USB BULK/ISOCHRONOUS 数据源/库示例
该示例说明了一个 USB 大容量存储类(BULK Only
Transport)设备的实施情况,其中将 FX3 设备 RAM 中的
一小部分作为存储设备使用。示例显示了大容量存储指令如
何在 FX3 固件内得到解析和处理。
USB 音频类示例
该示例创建了一个 USB 音频类麦克风,它将存储在 SPI 闪
存内的 PCM 音频数据传输到 USB 主机内。该示例仅能在
USB 2.0 的速度下运行。
双阶段 Booter 示例
一套简单的 API 作为一个独立的库使用,以实现二次启
动。该示例演示了这些 API 的使用。同时还提供了可用于
实时查看工具链的配置文件。
USB 主机与 OTG 示例
这些示例验证了 FX3 USB 端口的主机模式和 OTG 模式操
作。
文档编号:001-88777 版本*A
23
®
EZ-USB FX3™入门
FX3 固件开发工具
Eclipse IDE
为 C/C++开发者提供的 Eclipse IDE 是 FX3 SDK 的一部
分。该集成开发环境(IDE)包括基础 Eclipse 平台和 CPP
功能。IDE 包含开发所需插件。


支持 GNU ARM C/C++开发
Java(TM) 平台、标准版实时环境版本 7(JRE)
GNU 工具链
GNU 工具链作为 FX3 SDK 的部分,包括以下内容:




GCC 编译器(gcc)
GNU 链接器(ld)
GNU 汇编器(as)
GNU 调试器(gdb)
这些可执行文件都由 Eclipse IDE 调用。
GPIF II Designer(设计程序)
GPIF II 接口设计工具是一个 Windows 应用,并作为 FX3
SDK 的一部分。该工具提供了一个图形用户界面,用于为
目标设备指定必要的接口。用户通过使用状态机设计了一个
接口,工具将它翻译成一个 C 头文件,并包含到 Eclipse 项
目。
集成调试器
SuperSpeed Explorer 套件将 CY7C65215 USB-Serial IC
作为集成调试器使用。CY7C65215 是一个全速 USB 串行
桥接控制器,提供了两个可配置串行通信模块(SCB)。
SuperSpeed Explorer 套件将 CY7C65215 的第一个串行通
道作为 UART 使用,并将第二个串行通道作为 JTAG 接口
使用。
SuperSpeed Explorer 套 件 仅 支 持 由 集 成 调 试 器 提 供 的
JTAG 接口。集成调试器支持 OpenJTAG 协议,并使用主
机上的 OpenOCD 守护进程工具进行调试会话。
有关集成调试器的详细信息,请参考 SuperSpeed Explorer
套件用户指南。
www.cypress.com
Windows 软件概述
赛普拉斯提供了设备驱动程序和接口 API 以及各库,用于
在 Windows 中开发 FX3 USB 应用。
Window s USB 设备驱动程序
Zylin 嵌入式 CDT
它是 Eclipe IDE 中的一个通用插件,通过该插件可以
使用 GNU 调试器调试 FX3 固件。

有关适用于 FX3 DVK(CYUSB3KIT-001)的 JTAG 调试
器的详细信息,请参考附录 C.3. FX3 DVK 的 JTAG 调试
器。
“cyusb3.sys”是一个 USB 设备驱动程序,适用对象包
括:32 位的 Windows XP、32/64 位的 Windows Vista、
32/64 位的 Windows 7 以及 32/64 位的 Windows 8。该驱
动程序能够同所有符合 USB 2.0 和 USB 3.0 规范的设备进
行通信。它是通用的驱动程序,能够理解基本的 USB 指
令。然而它没有支持 USB 设备类协议。例如,驱动程序不
能直接将一个 USB 大容量存储设备连接到 Windows 文件
系统。应用固件必须实现该逻辑。
赛普拉斯通用驱动程序的 VID 为 0x04B4,PID 为
0x00F0、0x00F1 和 0x00F3。如果您想用自己的
VID/PID,您必须获得由微软 WHQL 签署的驱动程序。开
发过程中,您可以通过禁用电脑上的软件签名强制来使用一
个未签名的驱动程序。该驱动程序是自定义的 USB 应用同
供货商特定的设备进行通信的理想选择。或者,对于实验或
诊断应用,驱动程序可用于将低级 USB 请求发送给所有
USB 设备。为了使用驱动程序同某个设备通信,Windows
必须使该设备同驱动程序相匹配。类库(CyAPI.lib 和
Cyusb.dll)为驱动程序提供了一个高级的编程接口。
特性







与 Windows 驱动程序基础(WDF)相兼容


支持多个 USB 设备同时连接

可在每一帧传送多个数据包,因此能够实现高带宽的数
据传输
与所有 USB 2.0 兼容的设备相兼容
与赛普拉斯 USB 3.0 兼容的设备相兼容
支持 USB 3.0 的基本性能
支持 Windows 即插即用性能以及电源管理
支持 USB 远程唤醒
支持 CONTROL(控制)、BULK(批量)、
INTERRUPT(中断)以及 ISOCHRONOUS(同步)
等端点
支持可自定义的驱动程序 GUID(而无需重建驱动程
序)
文档编号:001-88777 版本*A
24
®
EZ-USB FX3™入门
您不需要使用赛普拉斯所提供的驱动程序。可以编程
FX3,以实现标准 USB 类设备。实现这样的设备时,应该
使用 USB 类驱动程序来代替。例如:如果 FX3 正在执行
USB 视频类别(UVC),则不需要使用赛普拉斯通用驱动
程序,取而代之的是操作系统 OS 所提供的 UVC 驱动程
序。这样会让 Windows,Linux 和 Mac 的支持变得简单,
因为操作系统 OS 已经提供了相应的标准驱动。
Windows 软件示例
BULKLoop 示例
通过 BULKLoop 应用测试 BULK 端点上数据传输的回送。
图 28. 赛普拉斯 C++ BULKloop 应用
应用接口
C y AP I . l i b
CyAPI.lib 为 USB 设备提供了一个既简单又强大的 C++编程
接口。C++类库为 cyusb3.sys 驱动程序提供了一个高级编
程接口。此库只能与该驱动程序所支持的 USB 设备通信。
有关 CyAPI.lib 的详细信息,请参考《C++库编程者参考手
册》中介绍的内容。它位于 USB 套件帮助文档中,并作为
SDK 的一部分。
CyUSB.dll
CyUSB.dll 是一个托管 Microsoft.NET 类库,为 USB 设备
提供了一个高级编程接口。因此应用可通过库方法和属性来
访问 USB 设备,而不用通过低级的 Win32 API 调用与
USB 设备驱动程序直接通信。由于 CyUSB.dll 是一个托
管 .NET 库 ,因 此 用 户 可 通 过 Visual Basic.NET 、 C# 、
Visual J#和托管 C++等所有 Microsoft Visual Stuido.NET
语言对它的类和方法进行访问。如要使用该库,请将
CyUSB.dll 参考添加到项目的 References(参考)文件夹
中。然后,访问 CyUSB 命名空间的任何源文件都必须拥有
用于按照准确语法添加命名空间的一行。
Streamer 示例
Streamer 应用用于测试 BULK/ISOCHRONOUS 端点上的
数据传输。
图 29. 赛普拉斯 C++ Streamer 应用
有关 CyUSB.dll 的详细信息,请参考《C#库编程者参考手
册》中的内容。它位于 USB 套件帮助文档中,并作为 SDK
的一部分。
请参考赛普拉斯 USB 套件应用开发 — 快速入门指南,了
解有关使用 CyAPI.lib 和 CyUSB.dll 的详细信息。
www.cypress.com
文档编号:001-88777 版本*A
25
®
EZ-USB FX3™入门
图 30. 赛普拉斯 C# Streamer 应用(提供从设备 FIFO 应用
接口传输)
用于 Linux 软件的 CyUSB Suite
通过用于 Linux 软件的 CyUSB Suite,您可以将固件镜像加
载到 FX3 设备,并测试设备上的各种接口。请参考位于
Linux 的 FX3 SDK 安装文件夹(fx3_sdk_v1.3_linux\
cyusb_linux_1.0.4\cyusb_linux_1.0.4\docs)
中的 cyusb_linux_user_guide.pdf。该文档对安装软件、将
固件下载到 FX3 内、测试供应商扩展、BULK OUT/IN 传输
和 ISOCHRONOUS OUT/IN 传输进行了介绍。
Linux 的 CyUSB Suite — 编程者参考手册
(cyusb_linux_programmers_guide.pdf 位于相同的文件夹
中)描述了 Linux 的 cyusb 库,同时也介绍了如何使用该库
来构建并集成用户编写的应用。通过该软件,您可以进行下
列操作:
安装 FX3 SDK 时,‘applications’ (应用)目录中提供
了 BULKLoop 以及 Streamer 应用的 C++和 C#语言的实
现。

查看所插入的各设备的设备、配置、接口、备用接口以
及端点描述符。


选择用于通信的特定接口和备用接口。

加载执行指令的特定固件后,可以测试这些指令(供货
商扩展)。

通过传送常量/随机/递增数据块,可以测试 BULK OUT
端点。另外,在传送 OUT 数据后,可通过回送数据来
测试 BULK IN 端点。

测试 ISOCHRONOUS OUT 和 ISOCHRONOUS IN 端
点,并测量数据传输速率。
适用于 Linux 的 FX3 SDK 和软件
适用于 Linux 的 EZ-USB FX3 SDK
FX3 SDK 支持使用 Eclipse IDE 来开发固件以及使用 J-Link
JTAG 调试器在 Linux 平台上进行调试。
适用于 Linux 的 EZ-USB FX3 SDK 包括以下部分:





将固件加载到 FX3 设备、RAM、基于 I2C 的 EEPROM
或基于 SPI 的闪存内。
图 31. 用于 Linux 软件的 CyUSB Suite
Device selection area: Click on a device to select it
FX3 固件库和示例
Sourcery ARM GNU 工具链
用于安装 32 位 Linux 操作系统的 Eclipse IDE
用于安装 64 位 Linux 操作系统的 Eclipse IDE
用于 Linux 软件的 CyUSB Suite
安装过程包括提取这些档案和设置环境变量。请参见位于
Linux 的 FX3 SDK 安装文件夹
(fx3_sdk_v1.3_linux\FX3_Firmware\cyfx3sdk\doc)
中的 FX3_SDK_Linux_Support.pdf。
www.cypress.com
Detailed
Information
Summary
Information
文档编号:001-88777 版本*A
26
®
EZ-USB FX3™入门
有用的调试工具
逻辑分析仪
USB 3.0 协议分析仪
逻辑分析仪可以对数字信号进行简单分析。该分析仪用于观
测 FX3 和其他外设间的信号。已经上市的逻辑分析仪共有
两种:
USB 3.0 协议分析仪是非常有用的调试工具。它可以分析
FX3 与主机间的 USB 通信。每个分析仪中的软件工具将对
USB 传输包中的数据进行解码。通过数据分析,可以容易
发现问题并最大限度提高性能。一些 USB 3.0 分析仪已经
上市。赛普拉斯没有推荐任何特定分析仪,但可以参考下面
各选项:


独立式逻辑分析仪


Ellisys USB 探测器 280
安捷伦 16800 系列便携式逻辑分析仪
基于 PC 的逻辑分析仪


独立式的 USB 3.0 协议分析仪




USBee 逻辑分析仪
ZeroPlus 逻辑分析仪
请注意,分析仪的信号频率范围应该高于所需分析的信号频
率。
LeCory USB Voyager M3i
Beagle USB 5000 SuperSpeed 协议分析仪
PC 软件 USB 3.0 协议分析仪


SourceQuest SourceUSB
SysNucleus USBTrace
www.cypress.com
文档编号:001-88777 版本*A
27
®
EZ-USB FX3™入门
表 3. USB 3.0 引脚说明
附录 A
引脚名称
A.1. USB 3.0 概述
USB 3.0 支持高达 5 Gbps 的数据传输速率,降低功耗,并
与 USB 2.0 向后兼容。由 USB-IF 发布的 USB 规范可在此
处找到。图 32 显示了 USB 3.0 的架构。
图 32. USB 3.0 双总线架构
说明
VBUS
电源
D-
USB 2.0 的差分对
D+
GND
电源的接地端
SSRX-
超高速接收差分对
SSRX+
SSTX-
超高速传送差分对
SSTX+
GND_DRAIN
信号返回的接地端
A.3. 线缆与连接器
与 USB2.0 相 比 , USB 3.0 添 加 了 四 个 数 据 线 ( 即
SSRX+、SSRX-、SSTX+和 SSTX-)用于数据传输,以及
一个接地线用于地线终端、信号完整性管理以及抗 EMI 的
干扰。图 33 显示了 USB 3.0 线缆的结构。表 4 是这些线的
说明。
图 33. USB 3.0 线缆结构
参考源:http://usb.org
除了 USB 2.0 接口外,USB 3.0 的物理接口增加了两对差
分引脚和一个接地引脚,用于超高速传输。这样可以保证
USB 3.0 能够与 USB 2.0 向后兼容。
A.2. 电气接口
与 USB 2.0 相比,USB 3.0 的引脚分布有所不同。除了具
有 USB 2.0 的 VBUS、D–、D+和 GND 引脚外,USB 3.0
还有另外五个引脚,即两对差分引脚和一个接地引脚
(GND_DRAIN)。两对差分引脚用于超高速数据传输,支
持双单工超高速的信号传输。GND_DRAIN 引脚用于地线
终端、信号完整性的管理以及抗 EMI 干扰性能。表 3 是对
九个引脚的说明。
www.cypress.com
参考源:http://usb.org
文档编号:001-88777 版本*A
28
®
EZ-USB FX3™入门
USB 3.0 Powered-B 插头与插座
表 4. USB 3.0 线缆说明
名称
说明
电源
VBUS
红
UTP_D-
USB 2.0 D-
白
UTP_D+
USB 2.0 D+
绿
接地
电源的接地线
黑
SDP1-
屏蔽差分对 1
蓝
SDP1_Drain
SDP1 的接地线
SDP2-
屏蔽差分对 2

紫
SDP2 的接地线
USB 3.0 Standard-A 插头和插座
SuperSpeed 标准中将 USB 3.0 Standard-A 连接器定
义为主连接器。该连接器是基于 USB 2.0 Standard-A
连接器的设计,另外还添加了超高速信号。USB 3.0
Standard-A 插 座 可 与 USB 3.0 Standard-A 插 头 或
USB 2.0 Standard-A 插头连接。USB 3.0 Standard-A
连接器使用唯一的颜色,易于识别。图 33 显示了所推
荐的颜色分配。

USB 3.0 Micro-AB 和 USB 3.0 Micro-A 连接器
USB 3.0 Micro-AB 插座类似于 USB 3.0 Micro-B 插
座,只有外形设计是不同的。它可与 USB 3.0 Micro-A
插头、USB 3.0 Micro-B 插头、USB 2.0 Micro-A 插头
以及 USB 2.0 Micro-B 插头连接。USB 3.0 Micro-AB
插座只能使用于 OTG 产品。该产品可作为主机或设备
使用。USB 3.0 Micro-AB 插座不可用于其他用途。
USB 3.0 规范中也定义了下面各个连接器:

USB 3.0 Micro-B 插头与插座
USB 3.0 Micro-B 连接器用于体积较小的手提设备。
橘
SDP2+
SDP2_Drain

黄
SDP1+
通过 USB 3.0 Powered-B 连接器,USB 3.0 设备可向
USB 适配器供电,而不需使用外部电源。该连接器的
尺寸与 USB 3.0 Standard-B 连接器相同,但添加了两
个引脚:一个用于电源供电(DPWR),另一个用于接
地(DGND)。
颜色
USB 3.0 Micro-A 插头类似于 USB 3.0 Micro-B 插头,
只有外形和 ID 引脚是不同的。USB 3.0 Micro-A 插
头、USB 3.0 Micro-AB 插座、USB 3.0 Micro-B 插座和
插头都属于 USB 3.0 Micro 连接器系列。这些接口只是
外形不同。与 USB 2.0 Micro-A 插头相同,USB 3.0
Micro-A 插头只用于 OTG 应用。
USB 3.0 Standard-B 插头和插座
USB 3.0 Standard-B 连接器用于比较大的固定设备,
如外部硬盘驱动器和打印机。USB 3.0 Standard-B 插
座可与 USB 3.0 Standard-B 插头或 USB 2.0
Standard-B 插头连接。不能将 USB 3.0 Standard-B 插
头插入 USB 2.0 Standard-B 插座。
www.cypress.com
文档编号:001-88777 版本*A
29
®
EZ-USB FX3™入门
A.4. USB 3.0 与 2.0
USB 3.0 采用双总线架构,支持 USB 2.0 和 3.0。下表显示了 USB 3.0 与 USB 2.0 的主要区别。
表 5. USB 3.0 与 USB 2.0 的区别
特性
数据传输速率
USB 2.0
USB 3.0
480 Mbits/s(高速)
5.0 Gbits/s(超高速)
12 Mbits/s(全速)
480 Mbits/s(高速)
1.5 Mbits/s(低速)
12 Mbits/s(全速)
1.5 Mbits/s(低速)
数据传输
线缆信号数量
半双工
双单工
两线差分信号
四线差分信号
共有四个信号:
共有九个信号:
- 两个用于 USB 2.0(D、D–)
- 四个用于超高速数据
- 两个分别用于 VBUS 和 GND
- 两个用于 USB 2.0(D、D–)
- 三个分别用于 VBUS 和 GND
总线数据传输协议
电源管理
直接连接主机协议
直接连接主机协议
轮询数据流
异步通知
数据包传输到所有下行设备
数据包只能传输到目的设备
没有数据流复用
可批量传输多个数据流
两种模式
四种模式
- 活动
- 活动(U0)
- 挂起
- 闲置、快速(U1)
- 闲置、低速(U2)
- 挂起、低速(U3)
总线供电
端口状态
低功耗设备:100 mA
低功耗设备:150 mA
高功耗设备:500 mA
高功耗设备:900 mA
端口硬件检测连接事件。
端口硬件检测连接事件,并将端口状态转换为操作状
态,准备进行超高速数据通信。
系统软件使用端口指令将端口切换到使能
状态。
线缆的最大长度
5米
基于电气规格。
实际上是 3 米长的 26 AWG 类铜线
数据传输类型
四种数据传输类型:控制传输、批量传
输、中断传输以及同步传输。
支持 USB 2.0 的四种数据传输类型,并具有超高速传输
功能。
批量传输具有数据流传输功能。
www.cypress.com
文档编号:001-88777 版本*A
30
®
EZ-USB FX3™入门
附录 B
B.1. 在 Windows 上安装 FX3 DVK 驱动程序
如果在 Windows 计算机上未安装 FX3 DVK 套件,那么第一次将 DVK 与计算机相连时,您会看到下面信息。
图 34. 未安装驱动程序时出现的 Windows 信息
关闭信息框并导航到 Windows 设备管理器。要实现该操作,请单击 Windows 窗口中的 Start 按键,然后在右栏上右击
Computer 项,然后点击 Properties 来打开系统信息。然后,在左栏上端点击 Device Manager 项。
图 35. Windows 设备管理器
右击 WestBridge 并选择 Browse my computer for driver software 项。在 64 位 Windows 7 电脑上,该驱动程序的位置是
C:\Program Files (x86)\Cypress\EZ-USB FX3 SDK\1.2\driver\win7\x64。您的 SDK 版本可能高于 1.2。
设备管理器要删除 WestBridge 入口并将 SDK 板识别为赛普拉斯 USB Bootloader(顶端入口)。
www.cypress.com
文档编号:001-88777 版本*A
31
®
EZ-USB FX3™入门
图 36. 驱动程序安装后赛普拉斯 USB BootLoader 在设备管理器上的显示
www.cypress.com
文档编号:001-88777 版本*A
32
®
EZ-USB FX3™入门
附录 C
C.1. 获取 EZ-USB FX3 DVK
访问 EZ-USB FX3 开发套件主页可获取该开发套件。在本应用笔记所介绍的过程中,FX3 固件是从 USB 主机下载的,因此必须
将 FX3 DVK 开发板配置为 USB 启动。
为了选择 USB 启动,请按照图 37 对三个跳线器和四个开关进行设置。这些跳线器设置都使用一个红色框或圆圈加亮显示。有
关其他 DVK 跳线器的设置情况,请参见 DVK 用户指南。
FX3 DVK 开发板可由一个外部电源供电(自供电),也可以由 USB 线缆供电(总线供电)。为方便起见,该示例使用了总线供
电,只要求 USB 线缆同某个 USB 主机相连。在图 37 中右下方的跳线器选择了这种模式。其他跳线器和开关配置电路板,以通
过 USB 下载 FX3 代码。
通过电源开关(左下方),可以快速断开或建立 DVK 开发板同主机 PC 的连接。
图 37. 用于 USB 启动的 USB FX3 DVK 开发板设置
www.cypress.com
文档编号:001-88777 版本*A
33
®
EZ-USB FX3™入门
C.2. FX3 DVK 简介
赛普拉斯的 FX3 DVK 提供了您需要使用的硬件。PCB 提供了 FX3 所需的时钟和电源,以及可配置 I/O 电压。DVK 带有用于外
设接口的高速接口,并且支持各种启动模式。通过 I2C EEPROM 套接字,可以编程并测试从 I2C EEPROM 启动的操作。板上
SPI Flash 芯片支持通过 SPI 总线进行的编程和启动操作。SDK 提供的赛普拉斯示例项目包含了固件,用于通过使用 DVK 开发
板编程这些设备。如果您没有 DVK,可以通过点击此处获取。
两个很重要的硬件部分(位于 FX3 DVK 开发板外)分别是 USB 3.0 主机(通常为 PC)以及与 GPIF II 接口相连的外部设备
(如图像传感器或 FPGA)。有关使用 FX3 DVK 的详细信息,请参见 DVK 用户指南。图 38 显示了 FX3 DVK 开发板的重点区
域。
图 38. FX3 DVK 电路板
Boot Mode
Switch
Reset
Button
EEPROM
Socket
SPI Header
I2S Header
Reset Signal
Jumper
I2C EEPROM
Address Selection
Switch
CTRL-4
Signal Jumper
RS-232
Connector
Crystal Voltage
Selection
Boot Mode Jumpers
UART/SPI
Selection Jumper
GPIF II Connector
USB Receptacle
FX3 Device
Debug Mictors
I2C Connection
Jumpers
OTG Host Mode
Selection Jumper
Bus/Self-Powered Mode
Selection Jumper
5-V Power Jack
JTAG Header
Voltage Selection
Jumpers
On/Off Toggle
Switch
表 6 显示了 DVK 开发板上的重要跳线器和它们的默认设置情况。
www.cypress.com
文档编号:001-88777 版本*A
34
®
EZ-USB FX3™入门
表 6. FX3 DVK 开发板跳线器
跳线器/开关
使用跳线器短接的引脚(默认设置)
功能(默认设置)
J101
1和2
GPIO_46=UART_RTS
J102
1和2
GPIO_47=UART_CTS
J103
1和2
GPIO_48=UART_TX
J104
1和2
GPIO_49=UART_RX
J136
3和4
VIO1(3.3 V)
J144
3和4
VIO2(3.3 V)
J145
3和4
VIO3(3.3 V)
J146
3和4
VIO4(3.3 V)
J134
4和5
VIO5(3.3 V)
J135
2和3
CVDDQ(3.3 V)
J143
1和6
VBATT(2.5 V)
J96 & SW25
2和3
J97 & SW25
2和3
J98
1和2
PMODE2 引脚悬空
J72
1和2
RESET
J42
未安装
GPIO_58=I2C_SCL
J45
未安装
GPIO_59=I2C_SDA
J100
1和2
GPIO_21 = CTL4
•
使用 SW25 选择 PMODE0 引脚状态(ON/OFF)。
•
SW25.1=OFF
•
使用 SW25 选择 PMODE0 引脚状态(ON/OFF)。
•
SW25.2=OFF
C.3. FX3 DVK 的 JTAG 调试器
Segger J-Link 探测器是 FX3 SDK 中首选的 JTAG 探测器。该探测器(和 Segger J-Link ARM GDB 服务器)用于进行调试。
Eclipse IDE 同 J-link GDB 服务器相连,用于调试您的固件。为使 Eclipse 能够同 GDB 服务器工作,您需要为 J-link 创建一个调
试配置。有关的详细信息,请参考 FX3 编程者手册中第 12 章的内容。
进行调试时,您可能需要使用其它的 JTAG 探测器(如 Olimex ARM-USB-OCD 探测器)。在这种情况下,OpenOCD 工具可用
于 GDB 连接。FX3 编程者手册中第 12 章对此进行了详细的介绍。
www.cypress.com
文档编号:001-88777 版本*A
35
®
EZ-USB FX3™入门
文档修订记录
文档标题:EZ-USB® FX3™入门 — AN75705
文档编号:001-88777
版本
ECN
变更者
提交日期
**
4092993
JLCZ
08/12/2013
本文档版本号为 Rev**,译自英文版 001-75705 Rev*B。
*A
4870069
XCHX
08/03/2015
本文档版本号为 Rev*A,译自英文版 001-75705 Rev*E。
www.cypress.com
变更说明
文档编号:001-88777 版本*A
36
®
EZ-USB FX3™入门
全球销售和设计支持
赛普拉斯公司拥有一个由办事处、解决方案中心、厂商代表和经销商组成的全球性网络。要找到距您最近的办事处,请访问赛普
拉斯所在地。
PSoC® 解决方案
产品
汽车级产品
cypress.com/go/automotive
psoc.cypress.com/solutions
时钟与缓冲器
cypress.com/go/clocks
PSoC 1 | PSoC 3 | PSoC 4 | PSoC 5LP
接口
cypress.com/go/interface
赛普拉斯开发者社区
照明与电源控制
cypress.com/go/powerpsoc
存储器
cypress.com/go/memory
PSoC
cypress.com/go/psoc
技术支持
触摸感应
cypress.com/go/touch
cypress.com/go/support
USB 控制器
cypress.com/go/usb
无线/射频
cypress.com/go/wireless
社区 | 论坛 | 博客 | 视频 | 培训
PSoC 是赛普拉斯半导体公司的注册商标,且 PSoC Creator 是赛普拉斯半导体公司的商标。此处引用的所有其他商标或注册商标归其各自所有者所有。
赛普拉斯半导体公司
198 Champion Court
San Jose, CA 95134-1709
电话
传真
网址
:408-943-2600
:408-943-4730
:www.cypress.com
© 赛普拉斯半导体公司,2012-2015。此处所包含的信息可能会随时更改,恕不另行通知。除赛普拉斯产品内嵌的电路外,赛普拉斯半导体公司不对任何
其他电路的使用承担任何责任。也不根据专利或其他权利以明示或暗示的方式授予任何许可。除非与赛普拉斯签订明确的书面协议,否则赛普拉斯不保证
产品能够用于或适用于医疗、生命支持、救生、关键控制或安全应用领域。此外,对于可能发生运转异常和故障并对用户造成严重伤害的生命支持系统,
赛普拉斯不授权将其产品用作此类系统的关键组件。若将赛普拉斯产品用于生命支持系统中,则表示制造商将承担因此类使用而招致的所有风险,并确保
赛普拉斯免于因此而受到任何指控。
该源代码(软件和/或固件)均归赛普拉斯半导体公司(赛普拉斯)所有,并受全球专利法规(美国和美国以外的专利法规)、美国版权法以及国际条约
规定的保护和约束。赛普拉斯据此向获许可者授予适用于个人的、非独占性、不可转让的许可,用以复制、使用、修改、创建赛普拉斯源代码的派生作
品、编译赛普拉斯源代码和派生作品,并且其目的只能是创建自定义软件和/或固件,以支持获许可者仅将其获得的产品依照适用协议规定的方式与赛普
拉斯集成电路配合使用。除上述指定的用途外,未经赛普拉斯明确的书面许可,不得对此类源代码进行任何复制、修改、转换、编译或演示。
免责声明:赛普拉斯不针对此材料提供任何类型的明示或暗示保证,包括(但不限于)针对特定用途的适销性和适用性的暗示保证。赛普拉斯保留在不做
出通知的情况下对此处所述材料进行更改的权利。赛普拉斯不对此处所述之任何产品或电路的应用或使用承担任何责任。对于可能发生运转异常和故障,
并对用户造成严重伤害的生命支持系统,赛普拉斯不授权将其产品用作此类系统的关键组件。若将赛普拉斯产品用于生命支持系统,则表示制造商将承担
因此类使用而招致的所有风险,并确保赛普拉斯免于因此而受到任何指控。
产品使用可能受限于赛普拉斯软件许可协议。
www.cypress.com
文档编号:001-88777 版本*A
37