USB2.0接口芯片CY7C68013的固件程序開(kāi)發(fā)
該文件提供了一個(gè)固件程序的框架結(jié)構(gòu),適用于一般的對(duì)數(shù)據(jù)傳輸?shù)目刂?。該結(jié)構(gòu)提供了對(duì)開(kāi)發(fā)者開(kāi)放的程序接口,開(kāi)發(fā)者通過(guò)在這些接口函數(shù)中加入適當(dāng)?shù)拇a來(lái)實(shí)現(xiàn)所需的功能。
其工作流程如圖 2所示,
圖2 固件程序框架工作流程
3.3接口函數(shù):
在固件程序框架中提供了功能函數(shù)接口,通過(guò)在這些接口函數(shù)中加入自行開(kāi)發(fā)代碼可以實(shí)現(xiàn)特定的功能并大大降低固件程序的開(kāi)發(fā)難度,加速USB系統(tǒng)開(kāi)發(fā)的過(guò)程。這些接口函數(shù)分三類(lèi):任務(wù)分配、標(biāo)準(zhǔn)設(shè)備請(qǐng)求執(zhí)行和USB總線中斷處理[3]。下面將依次介紹這些接口函數(shù)和用途。
3.3.1任務(wù)分配
TD_Init()
說(shuō)明:此函數(shù)主要是完成FX2的初始化,在FX2再次枚舉和開(kāi)始任務(wù)分配前被調(diào)用,其目的是初始化各個(gè)端口以及各端口的先入先出緩沖區(qū)。
TD_Poll()
說(shuō)明:此函數(shù)在設(shè)備運(yùn)行時(shí)被重復(fù)的調(diào)用,它應(yīng)包括完成特別任務(wù)的代碼。在該函數(shù)返回前,優(yōu)先級(jí)高的任務(wù)可能已經(jīng)完成。但是,如果它返回值為假,F(xiàn)X2將不會(huì)影響設(shè)備請(qǐng)求和USB總線設(shè)備掛起事件。如果需要大量的處理時(shí)間,F(xiàn)X2就會(huì)通過(guò)多次調(diào)用TD_Poll()函數(shù)將時(shí)間分段。
TD_Suspend()
說(shuō)明:此函數(shù)是在設(shè)備進(jìn)入掛起狀態(tài)前調(diào)用的,開(kāi)發(fā)者在其中加入適當(dāng)?shù)拇a,對(duì)設(shè)備的工作狀態(tài)進(jìn)行配置,可使設(shè)備處于低功耗狀態(tài)并返回真值。但是開(kāi)發(fā)者可以改動(dòng)TD_Suspend()的程序代碼,使其返回為假,這樣可以使FX2不進(jìn)入掛起狀態(tài)。
TD_Resume()
說(shuō)明:當(dāng)外部要求重新啟動(dòng)時(shí)(如,外界產(chǎn)生Wakeup中斷或者USB總線有傳輸活動(dòng)發(fā)生),設(shè)備就會(huì)通過(guò)調(diào)用此函數(shù)來(lái)對(duì)處理器進(jìn)行重啟,也就是TD_Suspend()函數(shù)的逆操作。此時(shí),設(shè)備在正常電源下重新啟動(dòng)。
3.3.2設(shè)備請(qǐng)求
設(shè)備請(qǐng)求函數(shù)具有如下的形式:
BOOL DR_xxx(void)
{
……file://設(shè)備請(qǐng)求處理代碼
return(TURE);
}
主要是完成對(duì)于來(lái)自主機(jī)的命令及請(qǐng)求的處理工作,如配置端口等。
3.3.3USB中斷
FX2設(shè)備的中斷包括與標(biāo)準(zhǔn)8051中斷相同的中斷同時(shí)也包含一些FX2特有的中斷。由于在固件程序中提供了中斷服務(wù)例程接口,開(kāi)發(fā)者只須在需要處理的中斷服務(wù)例程接口中加入自己編寫(xiě)的中斷服務(wù)代碼即可完成對(duì)相應(yīng)中斷請(qǐng)求的服務(wù),這樣就可以避免深入研究FX2的中斷自動(dòng)引導(dǎo)(Interrupt Autovectors)的邏輯結(jié)構(gòu)[2]。這些中斷服務(wù)例程接口函數(shù)的形式為:
void ISR_xxx(void) interrupt 0
{
……file://開(kāi)發(fā)者中斷服務(wù)代碼
EZUSB_IRQ_CLEAR();
USBIRQ = bmXXX; // 清除該中斷請(qǐng)求
}
4. 總結(jié):
在了解了Cypress的固件程序框架結(jié)構(gòu)之后,采用Keil uVision2開(kāi)發(fā)環(huán)境在該Cypress的固件框架下開(kāi)發(fā)可以在很大程度上降低固件程序的開(kāi)發(fā)難度并縮短開(kāi)發(fā)周期,獲得較高的效率。
pid控制相關(guān)文章:pid控制原理
評(píng)論