FX3开发入门系列EZ-USB FX3 Software Development Kit

fx3是usb3.0芯片

里边有一个arm 核,

官方资料url
https://www.cypress.com/documentation/software-and-drivers/ez-usb-fx3-software-development-kit

在这里插入图片描述
在这里插入图片描述
文档和示例代码

在这里插入图片描述

本文用的windows 下面开发

用的是

FX3_SDK_Windows_v1.3.3.exe

这个软件是集成很多软件 ,有ide 和gpif ii等软件

FX3_SDK_Windows安装之后会出现这些软件
ez usb suite 是eclipse的ide
在这里插入图片描述

在这里插入图片描述

创建一个新项目了解开发的流程

1.创建 新项目
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
选 择FX3 Project 建 新项目
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
新项目内的文件就一个includes 你的sdk的头文件

在这里插入图片描述
cyf_gcc_startup.s 从官方示例取到放项目内
cyxtx.c 也一样从官方取得

main.c 和main.h

main.h
#ifndef MAIN_H_
#define MAIN_H_
#include “cyu3types.h”
#define THREAD_STACK (0x0200) /* App thread stack size /
#define THREAD_PRIORITY (8) /
App thread priority */

#endif /* MAIN_H_ */

main.c

/*

  • main.c
  • Created on: 2020年5月25日
  •  Author: Administrator
    

*/

#include “cyu3system.h”
#include “cyu3os.h”
#include “cyu3error.h”
#include “cyu3gpio.h”
#include “cyu3uart.h”
#include “cyu3utils.h”
#include “main.h”

CyU3PThread Thread1;
CyU3PThread Thread2;
void
Thread1_Entry (
uint32_t input)
{

for (;;)
{
    CyU3PThreadSleep (100);

}

}
void
Thread2_Entry (
uint32_t input)
{

for (;;)
{
    CyU3PThreadSleep (100);
}

}

/* Application define function which creates the application threads. */
void
CyFxApplicationDefine (
void)
{//CyFxApplicationDefine创建线程的。创建2个线程
void *ptr = NULL;
uint32_t ret = CY_U3P_ERROR_MEMORY_ERROR;

// Create thread1
ptr = CyU3PMemAlloc (THREAD_STACK);
if (ptr != NULL)
{
    ret = CyU3PThreadCreate (
            &Thread1,                              /* Thread structure. */
            "Thread 1",                     /* Thread ID and name. */
            Thread1_Entry,                         /* Thread entry function. */
            0,                                     /* Thread input parameter. */
            ptr,                                   /* Pointer to the allocated thread stack. */
            THREAD_STACK,                          /* Allocated thread stack size. */
            THREAD_PRIORITY,                       /* Thread priority. */
            THREAD_PRIORITY,                       /* Thread pre-emption threshold: No preemption. */
            CYU3P_NO_TIME_SLICE,                   /* No time slice. */
            CYU3P_AUTO_START                       /* Start the thread immediately. */
            );
}
else
{
    ret = CY_U3P_ERROR_MEMORY_ERROR;
}
if (ret != CY_U3P_SUCCESS)
{
    goto InitFail;
}
// Create thread2
ptr = CyU3PMemAlloc (THREAD_STACK);
if (ptr != NULL)
{
   ret = CyU3PThreadCreate (
           &Thread2,                              /* Thread structure. */
           "Thread 2",                            /* Thread ID and name. */
           Thread2_Entry,                         /* Thread entry function. */
           0,                                     /* Thread input parameter. */
           ptr,                                   /* Pointer to the allocated thread stack. */
           THREAD_STACK,                          /* Allocated thread stack size. */
           THREAD_PRIORITY,                       /* Thread priority. */
           THREAD_PRIORITY,                       /* Thread pre-emption threshold: No preemption. */
           CYU3P_NO_TIME_SLICE,                   /* No time slice. */
           CYU3P_AUTO_START                       /* Start the thread immediately. */
           );
}
else
{
   ret = CY_U3P_ERROR_MEMORY_ERROR;
}
if (ret != CY_U3P_SUCCESS)
{
   goto InitFail;
}
return;

InitFail:
/* As the initialization failed, there is nothing much we can do. Just reset the device
* so that we go back to the boot-loader. */
CyU3PDeviceReset (CyFalse);
}

int
main (void)
{
CyU3PIoMatrixConfig_t io_cfg;
CyU3PReturnStatus_t status = CY_U3P_SUCCESS;

/* Initialize the device */
//CPU时钟设置、VIC(向量中断控制器)初始化、设置PLLs(锁相环)
//input clk = 19.2 M;SYS_CLK_PLL = 384M,/2....
// Start with the default clock at 384 MHz
/* Initialize the device */
/* For default configuration, pass in NULL as parameter. This will set CPU divider
 * to 2 (~200MHz), DMA and MMIO dividers to 2 (~100MHz); and assume 32KHz standby
 * clock is supplied
 */
status = CyU3PDeviceInit (NULL);
if (status != CY_U3P_SUCCESS)
{
    goto handle_fatal_error;
}

/* Initialize the caches. Enable both Instruction and Data caches. */
//一般在有大数据处理的时候才会打开数据cache,如果是简单的处理打开了cache可能会降低整个系统的效率!cache size:8k.
status = CyU3PDeviceCacheControl (CyTrue, CyTrue, CyTrue);
if (status != CY_U3P_SUCCESS)
{
    goto handle_fatal_error;
}

/* Configure the IO matrix for the device. */
CyU3PMemSet ((uint8_t *)&io_cfg, 0, sizeof(io_cfg));
io_cfg.isDQ32Bit = CyFalse;
io_cfg.s0Mode = CY_U3P_SPORT_INACTIVE;
io_cfg.s1Mode = CY_U3P_SPORT_INACTIVE;
io_cfg.useUart   = CyTrue;
io_cfg.useI2C    = CyFalse;
io_cfg.useI2S    = CyFalse;
io_cfg.useSpi    = CyFalse;
io_cfg.lppMode   = CY_U3P_IO_MATRIX_LPP_UART_ONLY;
/* No GPIOs are enabled. */
io_cfg.gpioSimpleEn[0]  = 0;
io_cfg.gpioSimpleEn[1]  = 0;
io_cfg.gpioComplexEn[0] = 0;
io_cfg.gpioComplexEn[1] = 0;
status = CyU3PDeviceConfigureIOMatrix (&io_cfg);
if (status != CY_U3P_SUCCESS)
{
    goto handle_fatal_error;
}

/* This is a non returnable call for initializing the RTOS kernel */
CyU3PKernelEntry ();//执行到此会跳入: CyFxApplicationDefine().

/* Dummy return to make the compiler happy */
return 0;

handle_fatal_error:

/* Cannot recover from this error. */
while (1);

}
之后编译
在这里插入图片描述
在这里插入图片描述

代码的学习从示例和官方文档学习

  • 0
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: EZ-USB FX3是Cypress公司推出的高性能USB 3.0控制器,可广泛应用于视频采集、音频录制、医疗成像、工业自动化等领域。EZ-USB FX3中文手册是指其官方提供的EZ-USB FX3相关技术文档,其包含了产品的功能、硬件架构、软件设计方法、指令集以及应用案例等方面的详细描述。该手册不仅方便开发者理解和使用EZ-USB FX3,同时也提供了完整的技术支持文档供用户参考。 基本上,EZ-USB FX3中文手册分为以下几个部分:概述、产品描述、硬件设计、软件设计和附录。概述主要介绍了EZ-USB FX3 USB3.0控制器的一些特性及性能指标。产品描述则详细描述了EZ-USB FX3的架构、接口、功能以及本地和远程的软件支持。硬件设计则介绍了EZ-USB FX3的硬件元器件及其功能,以及如何设计电路板和外围电路。软件设计则讲解了如何使用EZ-USB FX3软件组件和驱动程序来编写相应的设备控制软件,并给出了常见的设计案例和提示。附录则包括了USB协议、数据包格式、数据传输模式和EZ-USB FX3的指令集。 总之,EZ-USB FX3中文手册是开发者进行EZ-USB FX3开发的重要参考资料,其丰富的技术文档和应用案例,不仅方便理解和掌握具体技术,也为EZ-USB FX3的使用和开发提供了强有力的技术支持。 ### 回答2: EZ-USB FX3是Cypress公司生产的一款USB3.0控制器芯片,它被广泛地应用于PC外围设备、工业控制、医疗设备、视频采集等领域。EZ-USB FX3中文手册是介绍这个芯片的技术手册,主要包括芯片的硬件结构、软件开发环境、通信协议、应用案例等方面的内容。通过阅读这个手册,人们可以了解到EZ-USB FX3芯片的主要性能和特点,以及如何使用这款芯片来开发USB3.0设备。同时,手册还提供了详细的软件开发说明和代码示例,方便开发人员快速上手开发工作,提高开发效率。此外,手册还介绍了芯片的系统应用案例,包括USB3.0摄像头、USB3.0数据采集卡、USB3.0外置硬盘等。这些案例可以为用户提供参考和借鉴,帮助用户快速了解如何使用EZ-USB FX3芯片来实现自己的USB3.0应用。总之,EZ-USB FX3中文手册是一本非常实用的技术手册,对于开发USB3.0设备的工程师和研究人员来说,是必不可少的参考资料。 ### 回答3: EZ-USB FX3是一种USB3.0外设控制器芯片,可用于设计和制造具有高速数据传输的USB设备。EZ-USB FX3中文手册详细介绍了这款芯片的基本原理、硬件设计、软件编程等内容,对于开发者来说是非常有价值的参考资料。 手册介绍了使用EZ-USB FX3开发USB设备所需的基本工具和建议,并详细讲述了芯片的硬件设计细节,例如如何选择封装和引脚,如何连接外部器件,以及如何配置与芯片相连接的主机接口等。手册还说明了如何使用EZ-USB FX3软件开发套件,以及如何编写C、C++和Python等编程语言的应用程序来控制芯片。 手册的中文版是为中国市场专门翻译的,对于不熟悉英文的开发者来说非常方便。手册的每章内容都非常详细,同时还配有示意图和代码示例,使得开发者更容易理解和掌握所有的技巧和技术。 总之,EZ-USB FX3中文手册是一本非常实用的参考资料,适用于所有需要设计和制造USB3.0外设的开发者。无论是对于初学者还是有经验的开发者,手册都可以提供全面准确的指导和帮助。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值