當前位置:編程學習大全網 - 源碼下載 - USB芯片選擇CY7C68013,CH374

USB芯片選擇CY7C68013,CH374

開發工具:

Cypress公司的網站()上提供了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; // 清除該中斷請求

}

  • 上一篇:openwrt怎麽選擇編譯版本
  • 下一篇:編程語言php中,session的意思以及詳細的介紹(望語言直白些)謝謝啦!
  • copyright 2024編程學習大全網