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