USB讀數(shù)裝置及上位機的設(shè)計
SETUPDAT[1]中存儲著USB發(fā)出的請求碼。在固件程序中使用switch-case語句對不同的請求碼進(jìn)行分析,分別進(jìn)行相應(yīng)的響應(yīng)。
對于標(biāo)準(zhǔn)USB請求,在CY3684開發(fā)包內(nèi)已有完善的函數(shù)框架,本設(shè)計在保持其默認(rèn)狀態(tài)下,修改其中的處理函數(shù),使其符合本設(shè)計的要求。在Fw.c文件中,最主要的兩個函數(shù)為Main( )函數(shù)和SetupCommand( ),其中Main( )函數(shù)控制整個68013A的程序流程,SetupCommmad( )則對不同的設(shè)備請求進(jìn)行分析,并調(diào)用響應(yīng)的執(zhí)行程序。
在本設(shè)計需要使用自定義請求來介紹上位機的FLASH操作命令,因此需要在USB固件程序中聲明自定義請求。自定義請求和標(biāo)準(zhǔn)USB請求放在一起,但不能和已有的請求號相沖突。同時還需要編寫自定義請求對應(yīng)的處理函數(shù)。程序框架如下:
此請求包處理放在SetupCommand(vdd)函數(shù)內(nèi)。
對于對應(yīng)的處理函數(shù)則在Pefiph.c文件中進(jìn)行定義。所有的USB設(shè)備請求響應(yīng)函數(shù),中斷函數(shù)都在此文件中定義。同時設(shè)備初始化函數(shù)TD_Init( ),用戶功能函數(shù)TD_Poll( ),掛起函數(shù)TD_Suspend( )和USB復(fù)位函數(shù)( )也都在此文件中定義。
本設(shè)計采用在上位機發(fā)送自定義請求A1,并在自定義請求中包含對FLASH操作的命令字,68013A在分析得到自定義請求A1后,在自定義請求A1中把命令字保存入一個全局變量,在用戶功能函數(shù)TD_Poll( )中執(zhí)行對命令字的分析并調(diào)用相應(yīng)的FLASH操作函數(shù)。對于傳輸?shù)?a class="contentlabel" href="http://butianyuan.cn/news/listbylabel/label/上位機">上位機上的數(shù)據(jù)通過自定義請求A2、A3來執(zhí)行。
3 結(jié)論
本設(shè)計根據(jù)USB總線技術(shù)、FPGA技術(shù)及面向?qū)ο蟪绦蛟O(shè)計方法,對電路的組成原理、接口電路設(shè)計、系統(tǒng)控制信號的設(shè)計及USB上位機程序的設(shè)計做出詳細(xì)的說明,設(shè)計出基本符合課題要求的USB讀數(shù)裝置及上位機程序,基本完成了工作要求。當(dāng)然本設(shè)計在USB接口的速度方面還需考慮更完善的方案。希望在以后的學(xué)習(xí)工作中能夠改進(jìn)。本文引用地址:http://butianyuan.cn/article/202345.htm
評論