USB2.0接口芯片CY7C68013的固件程序开发

时间:2012-04-23来源:网络
R>3.2固件程序框架源码:
该文件提供了一个固件程序的框架结构,适用于一般的对数据传输的控制。该结构提供了对开发者开放的程序接口,开发者通过在这些接口函数中加入适当的代码来实现所需的功能。
其工作流程如图 2所示,
USB2.0接口芯片CY7C68013的固件程序开发
图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; // 清除该中断请求
}


4. 总结:


在了解了Cypress的固件程序框架结构之后,采用Keil uVision2开发环境在该Cypress的固件框架下开发可以在很大程度上降低固件程序的开发难度并缩短开发周期,获得较高的效率。

1 2

关键词: USB2.0 接口芯片 CY7C68013

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版