基于CY7C68013的高速數(shù)據(jù)傳輸系統(tǒng)的設(shè)計(jì)
CKCON=(CKCON(~bmSTRETCH)) | FW_STRETCH_
VALUE;//設(shè)為0值
Sleep=FALSE;//清除sleep標(biāo)志
while(TRUE)//主循環(huán)
{
if(GotSUD)//等待SETUP令牌數(shù)據(jù)的到來(lái)
{
ParseControlTransfer();//處理SETUP令牌數(shù)據(jù)
GotSUD=FALSE;//清除SUDAV標(biāo)志
}
if (Sleep)
{
Sleep=FALSE;//清除sleep標(biāo)志
do
{
EZUSB_Susp();//置8051為空閑
}
while(!RwuenEZUSB_EXTWAKEUP());
EZUSB_Resume();//從空閑狀態(tài)恢復(fù)
}
TD_Poll();//完成用戶(hù)任務(wù)
}
……
需要強(qiáng)調(diào)的是:固件程序設(shè)計(jì)完成后需要進(jìn)行調(diào)試,確保系統(tǒng)硬件正常工作。
(1)工作時(shí)鐘頻率的確定:晶振兩引腳對(duì)地電壓均為1.6 V左右,此時(shí)CLKOUT引腳默認(rèn)輸出為24 MHz,當(dāng)輸出48 MHz時(shí),電壓為2.5 V。
(2)電平觸發(fā)中斷方式:中斷后一定要讀上次傳輸狀態(tài)寄存器(命令40 H~45 H),以清除中斷寄存器中的中斷標(biāo)志,這樣中斷輸出才能變回高電平。
(3)使能端口:接收到Setup包后,必須用ACKsetup命令重新使能端口為低電平。
(4)緩沖區(qū)數(shù)據(jù)標(biāo)志:在向IN端點(diǎn)寫(xiě)完數(shù)據(jù)后,必須設(shè)置EP2BCH:L,指明緩沖區(qū)中的數(shù)據(jù)有效,示意可以發(fā)送到主機(jī)。當(dāng)IN端點(diǎn)的數(shù)據(jù)被外設(shè)讀走后,一定要調(diào)用OUTPKTEND來(lái)清除緩沖區(qū)數(shù)據(jù),否則無(wú)法向IN端點(diǎn)寫(xiě)入數(shù)據(jù)。
評(píng)論