基于CY7C646xx的通用串行總線(xiàn)接口
該應用采用Keil51編譯環(huán)境,用C語(yǔ)言完成固件源代碼的編寫(xiě)。采用標準的結構框架,修改或者添加自己的代碼,完成所需要的任務(wù)。
需要注意,如果開(kāi)發(fā)者沒(méi)有使用片外接存儲器,需將Keil51編譯環(huán)境的L51 Location選項中的Code(指令碼部分)始于0x0080,而且xdata(數據部分)始于0xl000,以保證在同一個(gè)RAM中指令代碼和數據不混迭。
6 計算機端應用程序的編寫(xiě)
應用程序與設備進(jìn)行通信的通用函數包括打開(kāi)關(guān)閉設備、傳輸數據等:
6.1 打開(kāi)和關(guān)閉設備
該應用程序基于Ezusb.sys驅動(dòng)程序,利用VisualC++針對該電路進(jìn)行操作,完成數據的傳輸。
打開(kāi)設備: HANDLE hDevice=CreateFile (DeviceName,
GENERIC_WRITEIGENERIC_READ,FILE_SHARE_WRITE︱FILE_SHARE_READ,
NULL,OPEN_EXISTING,0,NULL);
程序打開(kāi)設備"DeviceName''的方式為通用讀寫(xiě)方式,文件共享讀寫(xiě)。
關(guān)閉設備:CloseHandle (hDevice)。
6.2 數據傳輸
其代碼為BOOL bResult = DeviceloControl (hDevice,direction,Control,sizeof xxxx_TRANSFER_CONTROL),buffer,length, (unsigned long*)nBytes,NULL),其中,hDevice為設備句柄;direction為數據傳輸的方向;Control為4種USB數據傳輸的方式選擇;size(xxxx_TRANSFER_CONTROL)為數據格式所需存儲空間的大??;buffer為所傳輸數據的緩沖區地址指針;nBytes為傳輸完成后實(shí)際傳輸的數據個(gè)數:數據傳輸格式為USB設備的統一規范,可參照Windows DDK中的相應文件。
6.3 數據傳輸的通信協(xié)議
每個(gè)數據包由包頭和數據或者只由包頭組成,最大的數據長(cháng)度為64字節,由于本應用所采用的該系列的80引腳的CY7C64603沒(méi)有"數據空"對外標志,所以,外部電路讀寫(xiě)邏輯每次瀆寫(xiě)64字節。傳輸的字節不足64時(shí)由固件補零:·數據包格式如圖3所示。
評論