Cyusb3014 应用笔记 1 初识 FX3

1 了解Cyusb3014

赛普拉斯 Cyusb3014 (EZ-USB FX3(后面缩写为 FX3))是一个功能强大的 USB 3.0 外设控制器,开发者能够将 USB 3.0 功能集成到他们的系统中。

编者知识有限,如有不足,请大家慷慨指出,本文主要是对官方数据手册内容的一个总结和学习理解。

推荐的官方手册阅读顺序:

1 AN75705:FX3 入门

2 AN76405:FX3启动选项

3 AN65974 / AN68829  slave fifo 设计

4 其他比较深入的文档:学习FX3固件和API的一些文档

AN84868     

GettingStartedWithFX3SDK

FX3_Programmers_Manual     

下面这两个文档变写固件变看,遇到不懂的API或者其他关键字就从这两个文档中查看

FX3APIGuide

EZ-USB_FX3_Technical_Reference_Manual-AdditionalTechnicalInformation

2 功能简介

2.1 FX3 开发知识体系

开发者需要学习如下所示的知识:

1 FX3 的固件编写,这里不需要了解太多,FX3很多东西都是封装好了的,调用FX3 API 就可以。如下图是FX3的SDK结构,我们在官方DEMO的基础上修改下就可以,什么实时操作系统RTOS这些可以不用管理。

2 GPIF 工具使用: GPIF 软件是 FX3 外设和FX3 芯片 通信时序接口的编写工具(后续补充),使用简单。

3 FPGA 代码编写

4 驱动开发 

前期可以使用官方驱动:cyusb3.sys  USB 设备驱动

驱动开发可以参考安装目录中的这个文档:

5 上位机软件编写

本文档先主要介绍前3个知识,后面的如果学到了再补充

关于软件的安装这里暂不提及。

2.2 FX3的硬件结构

可以看到,这里FX3的结构中有个ARM 9 CPU ,可以实现一些控制,这里看到FX3内部有SRAM,了512 KB 或 256 KB 的嵌入式 SRAM取决于所选择的设备型号,支持四种启动代码的方法(USB、GPIF II、I2C 或者 SPI)。

这里的GPIF是和外设通信的,也就是说你发送、接收的批量USB3.0高速数据从这里和FX3通信。

GPIF的数据通过DMA通道,和上位机通信。

FX3还支持一些低速总线,比如I2C,UART 等等....

FX3 支持晶振或外部时钟连接。支持的晶振频率为 19.2 MHz,支持的外部时钟频率为 19.2、26、38.4 和 52 MHz

对于时钟来说,输入的时钟会被内部的PLL倍频为500Mhz,系统时钟(system clock )再分频,系统时钟可分频的时钟是1.2.4.16

下图:时钟树

2.3 典型应用

如上图所示,本文章介绍的外设是FPGA。

在 FX3 连接到 FPGA 的应用中,可以通过FX3加载FPGA的bit文件,这样可以实现FPGA程序的动态更新。有关示例的实现,请参见 官方手册 AN84868 — 使用赛普拉斯 EZ-USB FX3 配置 FPGA。如下图所示:

其他的典型应用包括,可以外接一个CMOS 传感器等,比如:

2.4 FX3术语

DMA缓冲区

FX3内部有RAM,可以将RAM中的资源分配给DMA缓冲区,可以分配多个DMA缓冲区。

FX3的DMA的类型:

DMA 描述符

是一组位于 FX3 RAM 中的寄存器。它保存了 DMA 缓冲区的地址和大小,以及指向下一个 DMA 描述符的指针。这些指针构建成了 DMA 描述符链

套接字(socket) 

是外设硬件模块和 FX3 RAM 之间的连接点。FX3 上的每个外设硬件模块(如 USB、GPIF、UART 和 SPI)具有各自固定的套接字数量。

举个例子:

GPIF 套接字可以通知 USB 套接字它已经向 DMA 缓冲区写满了数据,或者USB 套接字可以通知 GPIF 套接字该 DMA 缓冲区目前为空。

也就是说你的 数据或者参数发送到这个套接字上,FX3会自动将你的数据发送到对应的另外一个设备上,一个模块和另外一个模块通信是通过套接字来进行,套接字相当于各个模块的邮寄站。

GPIF II 模块

GPIF II 模块提供四个 GPIF 线程。每次只有一个 GPIF线程能够传输数据。GPIF II 状态机必须选择一个有效的 GPIF 线程来传输数据。
GPIF 线程选择机制 和 复用器一样的。GPIF II 状态机使用内部控制信号或外部输入(地址线 A1 和 A0)来选择有效的 GPIF 线程。切换有效的 GPIF 线程时会切换用于数据传输的有效套接字,从而改变用于数据传输的 DMA 缓冲区。GPIF 线程切换没有延迟。
套接字与 GPIF 线程的默认映射如图 :

 Tightly Coupled Memories (TCMs)

fx3内部0延迟缓存, The FX3 device has a 
dedicated 16 KB Instruction TCM (I-TCM) for code and 8 KB Data TCM (D-TCM) 
for data storage.

VIC 

Vectored Interrupt Controller  :FX3有32个中断

CONSUMER/PRODUCER 

消费者和生产者,生产者是生产数据的一端,把数据送出去的一端是消费者,如下图:GPIF生产数据,USB EP 发送数据

ThreadX RTOS

RTOS实时操作系统,FX3 的底层操作系统,用户无需直接接触。

复位

有硬件复位,和软甲复位,硬件复位就是管脚上的拉低复位,

软复位有两种类型:CPU/热复位  和  设备复位,  CPU/热复位是指在不影响任何硬件块(如USB或gifi - ii)的情况下复位CPU程序计数器。选定的块可以根据需要由固件重置。CPU/热复位 以后不需要重新加载固件了

设备复位和硬件复位一样的,复位后需要重新加载固件

EVENT 事件

所有USB事件都由USB驱动程序处理。这些包括连接、断开连接、挂起、恢复、重置、设置配置、速度更改、清除功能和设置数据包。( Connect, Disconnect, Suspend,
Resume, Reset, Set Configuration, Speed Change, Clear Feature, and Setup Packet)

用户应用程序可以注册特定的USB事件。使用回调中指定的事件类型向用户应用程序发出回调。
■应用程序可以执行必要的事件处理,然后从回调函数返回。
■如果特定事件不需要任何操作,应用程序可以简单地从发出的回调函数返回。
在这两种情况下,USB驱动程序完成事件的默认处理。

FX3重新枚举

当USB主机发出复位时,USB驱动程序处理复位,FX3设备重新枚举。如果应用程序已经注册了USB事件的回调,则会为Reset event 发出回调。
应用程序可以调用ConnectState API从USB主机断开电连接。随后调用相同的API以启用USB连接,同时导致FX3设备重新枚举。

PIB 

The Processor Interface Block (PIB) on the FX3 device contains the GPIF-II controller and the associated DMA sockets and configuration registers.
The PIB driver in FX3 firmware is responsible for managing PIB bound data transfers and interrupts. This file contains the data types and API definitions for the general P-port functionality that is independent of the electrical protocol implemented by GPIF-II.

LPP_xxxx

是指低功耗外设,比如CY_U3P_LPP_SOCKET_UART_PROD代表UART的 RX 端口,CY_U3P_LPP_SOCKET_UART_CONS代表TX,因为数据要从TX端口发送。

P-PORT

指FX3中的GPIF端口

S-PORT

FX3存储类端口,比如SD/MMC

U-PORT

USB端口,或者说是Endpoint Socket端口

CPU_SOCKET

FX3的CPU所收到的数据储存的端口

2.5 FX3 demo

FX3开发套件安装目录中提供了一些DEMO,位于安装目录的 Cypress\EZ-USB FX3 SDK\1.3\firmware

有些位于firmware的下一级文件夹中,比如flash的控制demo 在 :basic_examples.文件夹

串行接口 demo在:serialf_examples文件夹

比如有:

1 USBBulkLoopAuto 固件:例默认配置了 BULK 端点 1 IN 以及 BULK 端点 1 OUT。FX3 固件使
USB 主机发送给 OUT 端点的数据循环返回到 IN 端点。相同数据可以从 IN 端点传送到 USB 主机。就是数据回环

修改 端点的举例:

2 slavefifo 

FPGA 作为外设,和FX3通信的demo,有多种模式。后续介绍

3 摘自手册:

USB ISOCHRONOUS Data Loopback Examples
These examples illustrate a loopback mechanism between USB ISOCHRONOUS endpoints. This is similar to the BULK loopback examples, except that the endpoints used here are isochronous instead of BULK.


Slave FIFO Application Examples
The Slave FIFO application example demonstrates data transfer between the USB host and an external FIFO controller. The example consists of two unidirectional data pipes between the USB host and the external master. The GPIF II interface can be configured for either synchronous or asynchronous Slave FIFO transfers, using a 16-bit or 32-bit bus.


 Serial Interface Examples
These examples demonstrate data accesses to the GPIOs, I2C, SPI, and UART.


USB BULK/ISOCHRONOUS Data Source Sink Examples
These examples illustrate data source and data sink mechanism with two USB BULK/ISOCHRONOUS endpoints. 


Flash Programmer Example
This example illustrates the programming of I2C EEPROMS and SPI flash devices from USB. The read or write operations are done using pre-defined vendor commands. The utility can be used to flash the boot images to these devices.


Mass Storage Class Example
This example illustrates the implementation of a USB mass storage class (BULK Only Transport) device using a small section of the FX3 device RAM as the storage device. The example shows how mass storage commands can be parsed and handled in the FX3 firmware.


USB Audio Class Example
This example creates a USB Audio Class compliant microphone device, which streams PCM audio data stored on the SPI flash memory to the USB host


Two Stage Booter Example
A simple set of APIs have been provided as a separate library to implement two-stage booting. This example demonstrates the use of these APIs. Configuration files that can also be used for Real View Tool chain areprovided.


USB Host and OTG Examples
These examples demonstrate the host mode and OTG mode operation of the FX3 USB port.
 

关于DEMO更加详细的解释参考《 Getting Started with FX3 SDK》第 4.2章节  Firmware Examples

这里对我来说比较有用的demo:

3

4

2.6 功能接口

CyAPI.lib
CyAPI.lib 为 USB 设备提供了一个既简单又强大的 C++编程接口。C++类库为 cyusb3.sys 驱动程序提供了一个高级编程接口。此库只能与该驱动程序所支持的 USB 设备通信。
有关 CyAPI.lib 的详细信息,请参考《C++库编程者参考手册》中介绍的内容。它位于 USB 套件帮助文档中
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命名空间的任何源文件都必须拥有用于按照准确语法添加命名空间的一行。
有关 CyUSB.dll 的详细信息,请参考《C#库编程者参考手册》中的内容。它位于 USB 套件帮助文档中

除了上述文档,还有些有些文档位于 \Cypress\EZ-USB FX3 SDK\1.3\doc

3 软件操作

(本节内容 逐步补充)

3.1 设置 输出DEBUG/RELEASE

Release模式下的固件镜像文件的尺寸小于 Debug 模式下的大小。debug模式的固件镜像包含了附加的调试符号

3.2 默认驱动安装

3.3 从USB下载程序

1 通过 Start 菜单,打开 Cypress Control Center

2 连接FX3 的USB线,然后按照下图

4 DMA 流程

使用上述 术语描述下DMA的一部分流程:

套接字链接列表是主存储器中的一组数据结构,这组数据结构在本处又称为 DMA 描述符。每个描述符指定了 DMA 缓冲区的地址和长度,以及指向下一个 DMA 描述符的指针。套接字运行时,逐个地检索 DMA 描述符,按照描述符指定的地址和长度向 DMA 缓冲区中传输数据。传输 L 个字节后,该套接字会检索下一个描述符,并继续将数据传输到另一个DMA 缓冲区内。

如下图:


套接字从存储器检索下一个 DMA 描述符时,通常需要 1 微秒,这个时候不能传输数据。

为了解决这个问题,可以使用2个套接字。

注意:

1 步骤 5a 与步骤 1a 相同,但它的套接字 1 不进行初始化,而是同时进行数据传输的。

2 只在接收端(USB)读空并释放掉 DMA 缓冲区(以接收 GPIF II 的下一个数据块)时,GPIF II 套接字才能传输数据。
3 如果接收端的速度不够块,对 DMA 缓冲区的写操作将被忽略,使套接字丢失数据。

系统中的DMA不仅仅指 批量的USB数据传输是用DMA,其他的比如I2C ,SPI ,UART都可以用DMA,所有的这些数据传输都要经过内部的System memory ,同时所有的数据访问都是经过AHB总线

CPU使用System AHB访问系统内存(System Memory, System Memory),外设的DMA路径都连接到DMA AHB。系统总线和DMA总线之间的桥接器在通过系统路由DMA通信时是必不可少的

待续.........

  • 21
    点赞
  • 29
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CYUSB3014是一种USB 3.0 SuperSpeed控制芯片,由思必拓公司推出。该芯片手册主要提供了CYUSB3014的技术规格、功能特性、引脚定义与配置以及应用示例等信息。 CYUSB3014芯片手册详细介绍了芯片的主要技术规格。它支持USB 3.0 SuperSpeed接口,带宽高达5Gbps,可实现高速数据传输。同时,该芯片也兼容USB 2.0和USB 1.1接口,具备向下兼容的能力。此外,该芯片还集成了多种通信协议,如GPIO、I2C、SPI和UART等,方便与其他外部设备进行通信连接。 芯片手册中还详细介绍了CYUSB3014的引脚配置和功能定义。通过查阅手册,可以了解到该芯片有56个可编程的GPIO引脚,可以根据需要进行配置,增加芯片的扩展性和灵活性。此外,手册还展示了芯片的引脚图,方便用户正确连接和布局。 与此同时,手册还提供了一些应用示例,帮助用户更好地理解CYUSB3014芯片的应用。它介绍了如何将芯片应用USB 3.0外设的设计中,如相机、视频采集卡、外部存储设备等。示例中提供了芯片的原理图和代码资源,让用户可以参考和应用于自己的项目中。 总体而言,CYUSB3014芯片手册是一份非常重要且详细的技术文档。它提供了CYUSB3014芯片的技术规格、引脚定义与配置,以及应用示例等信息,帮助用户理解和应用该芯片,满足各种USB 3.0外设设计的需求。 ### 回答2: CYUSB3014芯片手册(Cypress FX3S™)是Cypress公司的一款高性能、低功耗的SuperSpeed USB 3.0串行总线高速通讯接口芯片。该手册提供了关于CYUSB3014芯片的详细说明和使用方法。 手册首先介绍了CYUSB3014芯片的主要特性和硬件架构,包括芯片结构、接口功能以及主要外设功能等。它支持高达5 Gbps的USB 3.0传输速度,并具备多个外设接口(如16位GPIO、SPI、I2C、UART等),可满足各种设备对高速数据传输和通讯接口的需求。 手册还详细介绍了CYUSB3014芯片的软件开发平台和工具链,包括Cypress提供的软件库、驱动和开发工具等。它支持多种操作系统平台,如Windows、Linux和macOS,以及多种开发环境,如Cypress IDE、Eclipse等。开发者可以利用这些工具和平台进行应用开发、固件设计和性能优化等工作。 此外,手册还提供了CYUSB3014芯片的规格书、引脚配置、时序图和应用电路等详细信息,开发者可以依据这些信息设计和调试自己的电路板,并根据芯片特性和使用要求进行电路优化和性能测试。 总之,CYUSB3014芯片手册详细介绍了该芯片的技术规格、功能特性和软件开发方法,为开发者提供了全面的参考和指导,使其能够更好地了解和应用该芯片,实现高速数据传输和通讯接口的设计和开发。 ### 回答3: CYUSB3014Cypress公司生产的一款片上系统集成电路(SoC),用于USB 3.0接口的应用。该芯片手册详细介绍了CYUSB3014的技术规格、功能特性、引脚定义、电气特性、时序控制、器件功能和性能等方面的内容。 首先,在技术规格方面,芯片手册列举了CYUSB3014的主要参数,如工作电压范围、工作温度范围、封装类型以及功耗等信息,为开发人员提供了基本的硬件指导。 其次,在功能特性方面,手册详细介绍了CYUSB3014USB 3.0 控制器、8 个通用 I/O、片上内存、配置和控制接口等功能模块,并提供了软件开发所需的相关技术说明和指导。 接下来,手册中还对CYUSB3014的引脚定义和电气特性进行了详细说明,包括供电电源、时钟、数据线和控制线的连接方式和要求,以帮助开发人员正确使用芯片并满足应用需求。 此外,手册还涵盖了时序控制和器件功能方面的内容,包括USB 3.0 握手、传输速率控制、数据包处理、错误恢复等关键功能的工作原理和使用注意事项。 最后,芯片手册还提供了关于性能测试和性能参数的说明,包括传输速率、延迟、功率等方面的评估数据,有助于开发人员评估CYUSB3014的性能和适用性。 综上所述,CYUSB3014芯片手册详细介绍了该芯片的技术规格、功能特性、引脚定义、电气特性、时序控制、器件功能和性能等方面的内容,为开发人员提供了全面的业务指导。通过仔细研读和使用手册中的信息,开发人员能够更好地了解和应用CYUSB3014芯片。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值