基于USB2.0接口的瀝青拌和站數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)
4 系統(tǒng)軟件設(shè)計(jì)
USB應(yīng)用系統(tǒng)軟件設(shè)計(jì)分為3部分:固件程序設(shè)計(jì)、主機(jī)驅(qū)動(dòng)程序以及主機(jī)應(yīng)用程序。系統(tǒng)設(shè)計(jì)只做了固件程序的設(shè)計(jì),驅(qū)動(dòng)程序使用公司提供的通用驅(qū)動(dòng)程序,應(yīng)用程序使用公司的應(yīng)用程序Control Panel調(diào)試。
固件是運(yùn)行在CY7C68013上的程序,可采用匯編語(yǔ)言或C語(yǔ)言設(shè)計(jì),其主要功能是負(fù)責(zé)初始化各硬件單元、控制CY7C268013接收并處理USB驅(qū)動(dòng)程序的請(qǐng)求、控制CY7C68013接收應(yīng)用程序的控制指令、通過(guò)CY7C68013存放數(shù)據(jù)并實(shí)時(shí)上傳至PC等。只有在該程序運(yùn)行時(shí),外設(shè)才能稱之為具有給定功能的外部設(shè)備。
固件程序代碼的存儲(chǔ)位置:固件代碼固化到一片EEP-ROM中.外設(shè)加電后由FX2通過(guò)FC總線下載到片內(nèi)RAM后自動(dòng)執(zhí)行。
設(shè)計(jì)采用利用現(xiàn)成的固件程序框架函數(shù)編寫(xiě)固件程序,根據(jù)設(shè)備的需求添加響應(yīng)的代碼來(lái)完成特定的目的。其中基本的固件程序框架函數(shù):
void TD_Init(void) //該函數(shù)用來(lái)完成EZ-USB FX2的初始化
void TD_Poll(void) //該函數(shù)在設(shè)備運(yùn)行時(shí)反復(fù)被調(diào)用,它包括完成用戶任務(wù)的函數(shù)
BOOL TD_Resume(void)//設(shè)備重啟后調(diào)用
BOOL TD_Suspend(void) //設(shè)備進(jìn)入掛起狀態(tài)前調(diào)用在整個(gè)固件程序中,EZ-LISB FX2設(shè)備上電或復(fù)位后,首先初始化所有的內(nèi)部狀態(tài)變量,隨后調(diào)用TD_Init()函數(shù),并開(kāi)中斷,此時(shí)固件程序不斷檢測(cè)控制端口O是否收到SETUP包。一旦收到,固件程序就開(kāi)始調(diào)用用戶函數(shù)TD_Poll(),其中用戶需要完成的功能代碼就在TD_Poll()函數(shù)中。調(diào)用完成后.重復(fù)檢測(cè)端口O是否收到SETUP包,若有,繼續(xù)執(zhí)行設(shè)備請(qǐng)求,調(diào)用TD_Poll()函數(shù);否則,檢測(cè)USB核是否有USB掛起事件,若有,調(diào)用TD_Suspend()函數(shù),其返回值為真時(shí),檢測(cè)USB核是否有重新開(kāi)始事件,若沒(méi)有,設(shè)備進(jìn)入掛起狀態(tài),否則,凋用TD_Resume(),進(jìn)行下一次循環(huán),當(dāng)TD_Sus-pend()函數(shù)返回值為假時(shí),直接進(jìn)入下一次循環(huán)。固件程序流程如圖6所示。
固件程序中定義了許多中斷處理函數(shù),使用時(shí)可加入自己編寫(xiě)的代碼,就可在不改變整個(gè)程序的前提下,僅通過(guò)改變相應(yīng)的模塊實(shí)現(xiàn)用戶的功能。設(shè)計(jì)中使用了外部中斷O,其優(yōu)先級(jí)最高,可以最大程度地避免數(shù)據(jù)丟失。在其相應(yīng)的中斷處理函數(shù)中,將來(lái)自打印機(jī)并口的數(shù)據(jù)采集到FX2的內(nèi)部緩沖區(qū)中。無(wú)中斷到來(lái)時(shí),在TD_Poll()函數(shù)中,將緩沖區(qū)中的數(shù)據(jù)寫(xiě)到Flash中。
5 結(jié)語(yǔ)
提出一種基于USB2.0的高速數(shù)據(jù)采集系統(tǒng),設(shè)計(jì)了采集系統(tǒng)的硬件電路,并編寫(xiě)了相應(yīng)的固件程序。大大提高傳輸速率,降低系統(tǒng)成本。其不足之處是采集速度不理想,雖然實(shí)現(xiàn)了高速采集的目的,但是距離USB2.O的最高傳輸速率還有差距,需要在以后的研究中,加以研究和改進(jìn)。
評(píng)論