《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于CY7C68013芯片的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方
基于CY7C68013芯片的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì)方
摘要: 本文介紹基于EZ-USBFX2系列CY7C68013芯片的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì),,該系統(tǒng)具有限幅保護(hù)功能,,固件和驅(qū)動(dòng)程序的編寫簡便,能夠完成對(duì)數(shù)據(jù)的高速采集和傳送。
Abstract:
Key words :

圖像處理,、瞬態(tài)信號(hào)測量等一些高速、高精度的應(yīng)用中,,需要進(jìn)行高速數(shù)據(jù)采集,。USB 2.0接口以其高速率等優(yōu)點(diǎn)漸有取代傳統(tǒng)ISA及PCI數(shù)據(jù)總線的趨勢,熱插拔特性也使其成為各種PC外設(shè)的首選接口,。EZ-USB FX2是Cypress公司推出的集成USB 2.0的微處理器,,它集成了USB 2.0收發(fā)器、SIE(串行接口引擎),、增強(qiáng)的8051微控制器和可編程的外圍接口,。本文將介紹基于EZ-USB FX2系列CY7C68013芯片的高速數(shù)據(jù)采集系統(tǒng)的設(shè)計(jì),該系統(tǒng)具有限幅保護(hù)功能,,固件和驅(qū)動(dòng)程序的編寫簡便,,能夠完成對(duì)數(shù)據(jù)的高速采集和傳送。

數(shù)據(jù)采集系統(tǒng)方案設(shè)計(jì)

數(shù)據(jù)采集系統(tǒng)的框圖如圖1所示,,硬件電路如圖2所示,。其中,AD1674是l2位模數(shù)轉(zhuǎn)換芯片,,采用逐次比較方式工作,。CPLD主要用于控制ADC以及FIFO的時(shí)序、控制ADC的啟動(dòng)與停止和查詢ADC的狀態(tài)等,。FIFO主要起著高速數(shù)據(jù)緩沖的作用,。


圖1 數(shù)據(jù)采集系統(tǒng)框圖


圖2 系統(tǒng)硬件電路

CY7C68013和AD1674之間通過CPLD連接,實(shí)現(xiàn)相關(guān)控制線和數(shù)據(jù)線的譯碼,。在CY7C68013的控制下,,首先對(duì)AD1674進(jìn)行間隔采樣,然后把結(jié)果傳送到FIFO中,,當(dāng)采集到一定量的數(shù)據(jù)后,,CY7C68013將數(shù)據(jù)打包通過USB總線傳到PC,由高級(jí)應(yīng)用程序進(jìn)行數(shù)據(jù)處理,。擴(kuò)展的RS232接口可以和外部設(shè)備進(jìn)行通信,。上電時(shí),CY7C68013從外部的E2PROM中通過I2C總線自動(dòng)裝載到內(nèi)部的RAM中,,便于固件的修改和升級(jí),。

數(shù)據(jù)采集前端的調(diào)理電路如圖3所示,,本設(shè)計(jì)采用了限幅、降壓,、濾波和增加輸入阻抗的措施來保護(hù)后端的轉(zhuǎn)換芯片,。

驅(qū)動(dòng)程序和固件設(shè)計(jì)

USB設(shè)備驅(qū)動(dòng)程序基于WDM。WDM型驅(qū)動(dòng)程序是內(nèi)核程序,,與標(biāo)準(zhǔn)的Win32用戶態(tài)程序不同,,采用了分層處理的方法。通過它用戶無須直接與硬件打交道,,只需通過下層驅(qū)動(dòng)程序提供的接口訪問硬件,。因此,USB設(shè)備驅(qū)動(dòng)程序不必具體對(duì)硬件編程,,所有的USB命令,、讀寫操作通過總線驅(qū)動(dòng)程序轉(zhuǎn)給USB設(shè)備。但是,,USB設(shè)備驅(qū)動(dòng)程序必須定義與外部設(shè)備的通信接口和通信的數(shù)據(jù)格式,,也必須定義與應(yīng)用程序的接口。Cypress公司提供了完整的CY7C68013驅(qū)動(dòng)程序源碼,、控制面板程序及固件的框架,,這大大加快了用戶開發(fā)的進(jìn)度。用戶只需稍加修改或無須任何修改即可使用現(xiàn)有驅(qū)動(dòng)程序,,軟件開發(fā)者大量的時(shí)間主要集中在應(yīng)用程序和固件的開發(fā),。根據(jù)用戶自己的需求,,一般只需修改DeviceIoControl例程,。本設(shè)計(jì)主要增加了控制數(shù)據(jù)傳輸函數(shù)、啟動(dòng)和停止ADC,、復(fù)位FIFO等,。Cypress為CY7C68013提供了開發(fā)框架,其中兩個(gè)程序如下,。

FW.C:FW.C中包含了程序框架的MAIN函數(shù),,管理整個(gè)51內(nèi)核的運(yùn)行,因?yàn)檫@部分的功能已經(jīng)進(jìn)行了精心劃分,,一般是不用改動(dòng)的,。


圖3 調(diào)理電路

PERIPH.C:用戶必須將PERIPH.C實(shí)例化,它負(fù)責(zé)系統(tǒng)周邊器件的互聯(lián),。固件的設(shè)計(jì)主要針對(duì)這個(gè)文件,,用戶必須根據(jù)自己系統(tǒng)的需要,實(shí)例化這個(gè)文件,,以實(shí)現(xiàn)所需的功能,。在固件程序中,,最重要的是TD_init()和TD_poll()這兩個(gè)函數(shù)。以TD_poll()函數(shù)為例,,在TD_poll()中主要完成外部FIFO狀態(tài)的檢測和數(shù)據(jù)的傳輸,,程序主體部分如下。固件調(diào)試時(shí),,可以使用Cypress提供的EZ-USB control panel,。

Void TD_Poll(void)

{

If(GPIFTRIG & 0x80) //判斷GPIF是否空閑

{

If(EXTFIFONOTEMPTY ) //判斷外部FIFO是否非空

{

If(!(EP24FIFOFLGS & 0x01)) //判斷FIFO是否不滿

{

IF(enum_high_speed)

{

SYNCDELAY;

GPIFTCB1=0x02; //設(shè)置處理計(jì)數(shù)

SYNCDELAY;

GPIFTCB0=0x00;

SYNCDELAY;

}

Else

{

SYNCDELAY;

GPIFTCB1=0x00;

SYNCDELAY;

GPIFTCB0=0x20;

SYNCDELAY;

}

Setup_FLOWSTATE_Read();

SYNCDELAY;

GPIFTRIG=GPIFTRIGRD|GPIF_EP2;

SYNCDELAY;

While(!(GPIFTRIG & 0x80))

{;}

SYNCDELAY;

}

}

}

}

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載,。