USB芯片选择CY7C68013,CH374

2025-03-07 06:47:45
推荐回答(2个)
回答1:

开发工具:

Cypress公司的网站(http://www.cypress.com)上提供了CY7C68013芯片的开发工具包下载,该开发包提供了开发固件程序的所需的一些资源:Keil uVision2集成开发环境(限制版);Cypress C51固件框架程序以及一些例子程序。
Keil uVision2 是一个功能强大的集成开发环境,该开发环境集成有C51编译器和A51汇编器以及BL连接定位器等一系列工具和模拟仿真、调试器,因此它能够支持C程序和汇编程序混合的工程,给软件的开发带来很大的便利[5]。
Keil C51是一种专为8051单片机设计的高效率C语言编译器,符合ANSI标准,生成的程序代码运行速度极高,所需要的存储空间极小,完全可以个汇编语言相媲美。同时,C51具有丰富的库函数,多达100多种功能函数。因此,采用C语言作为开发语言以Keil uVision2作为工程开发平台,完成源代码的编写、仿真、调试,将在相当程度上降低固件开发难度、提高开发效率[4]。

3.固件结构及组成:

固件程序的功能虽然复杂,在编写时需要用到大量的函数,但其基本结构却相对简单,包括如下几个部分:
3.1设备描述符表:
每一个USB设备在与主机建立数据通信之前必须先向主机通报自己的具体配置,包括设备的厂商、产品识别号(VID、PID),设备的供电方式以及能量消耗等一系列重要信息。而这些有关设备的信息就是通过设备描述符表来通报给主机,从而使主机采用适当的方式建立与设备之间的连接.其结构如下所示:
DeviceDscr:
db 18 ;;该描述符长度(以字节为单位)
db DSCR_DEVICE ;; 描述符类型
……
db 1 ;; 共有几种配置(1种)
3.2固件程序框架源码:
该文件提供了一个固件程序的框架结构,适用于一般的对数据传输的控制。该结构提供了对开发者开放的程序接口,开发者通过在这些接口函数中加入适当的代码来实现所需的功能。
3.3接口函数:
在固件程序框架中提供了功能函数接口,通过在这些接口函数中加入自行开发代码可以实现特定的功能并大大降低固件程序的开发难度,加速USB系统开发的过程。这些接口函数分三类:任务分配、标准设备请求执行和USB总线中断处理[3]。下面将依次介绍这些接口函数和用途。
3.3.1任务分配
TD_Init()
说明:此函数主要是完成FX2的初始化,在FX2再次枚举和开始任务分配前被调用,其目的是初始化各个端口以及各端口的先入先出缓冲区。
TD_Poll()
说明:此函数在设备运行时被重复的调用,它应包括完成特别任务的代码。在该函数返回前,优先级高的任务可能已经完成。但是,如果它返回值为假,FX2将不会影响设备请求和USB总线设备挂起事件。如果需要大量的处理时间,FX2就会通过多次调用TD_Poll()函数将时间分段。
TD_Suspend()
说明:此函数是在设备进入挂起状态前调用的,开发者在其中加入适当的代码,对设备的工作状态进行配置,可使设备处于低功耗状态并返回真值。但是开发者可以改动TD_Suspend()的程序代码,使其返回为假,这样可以使FX2不进入挂起状态。
TD_Resume()
说明:当外部要求重新启动时(如,外界产生Wakeup中断或者USB总线有传输活动发生),设备就会通过调用此函数来对处理器进行重启,也就是TD_Suspend()函数的逆操作。此时,设备在正常电源下重新启动。
3.3.2设备请求
设备请求函数具有如下的形式:
BOOL DR_xxx(void)
{
…… file://设备请求处理代码
return(TURE);
}
主要是完成对于来自主机的命令及请求的处理工作,如配置端口等。
3.3.3USB中断
FX2设备的中断包括与标准8051中断相同的中断同时也包含一些FX2特有的中断。由于在固件程序中提供了中断服务例程接口,开发者只须在需要处理的中断服务例程接口中加入自己编写的中断服务代码即可完成对相应中断请求的服务,这样就可以避免深入研究FX2的中断自动引导(Interrupt Autovectors)的逻辑结构[2]。这些中断服务例程接口函数的形式为:
void ISR_xxx(void) interrupt 0
{
…… file://开发者中断服务代码
EZUSB_IRQ_CLEAR();
USBIRQ = bmXXX; // 清除该中断请求
}

回答2:

推荐C8051系列,增强型51. 支持2.0.官网站上还有开发包什么的下载
https://www.silabs.com/products/mcu/Pages/SiliconLaboratoriesIDE.aspx