2 系统软件模块设计
2.1 USB固件程序设计
应用中采用同步FIFO方式,使用内部输出60 MHz时钟,固件程序采用FTDI公司提供的固件程序D2XX框架,在其初始化函数中添加了用户配置代码。该设计中同步自动FIFO数据传输的初始化代码如下:#include <windows.h>
#include <stdlib.h>
#include <stdio.h>
#pragma comment(lib, "FTD2XX.lib")
#include "FTD2XX.h"
int main()
{
//FT_Open,FT_Close
FT_HANDLE ftHandle;
FT_STATUS ftStatus;
//FT_EE_Read
FT_PROGRAM_DATA ftData;
char ManufacturerBuf[32];
char ManufacturerIdBuf[16];
char DescriptionBuf[64];
char SerialNumberBuf[16];
//FT_SetBitMode
UCHAR Mask = 0xFF; //UCHAR ModeAsync= 0x01;
UCHAR ModeSync = 0x40;//FT_Write
DWORD BytesWritten;
unsigned char TxBuffer[65536];//FT_GetStatus
DWORD TxBytes;
DWORD EventDWord;//FT_Read
unsigned char RxBuffer[262144];
unsigned char RxBuffer1[1];
unsigned char RxBuffer2[2];
unsigned char flag[32];
unsigned char flag1;
unsigned char flag2;
DWORD RxCount = 0;
DWORD RxBytes = 10;
DWORD BytesReceived;
int i,j,m,n;
FILE *fp;
RxBuffer2[0]=0;
RxBuffer2[1]=1;
flag1=85;
flag2=170;
flag[0]=flag1;
flag[1]=flag1;
for(i=2;i<32;i=i+2)
flag[i]=flag1;
for(i=3;i<32;i=i+2)
flag[i]=flag2;
ftStatus = FT_Open(0, &ftHandle);
if(ftStatus != FT_OK) {
printf("FT_Open failed\n");
return 0;
}
ftStatus = FT_ResetDevice(ftHandle);
if(ftStatus == FT_OK) {
printf("FT_ResetDevice OK\n");
}//FT_EE_Read
ftData.Signature1 = 0x00000000;
ftData.Signature2 = 0xffffffff;
ftData.Version = 0x00000003;
ftData.Manufacturer = ManufacturerBuf;
ftData.ManufacturerId = ManufacturerIdBuf;
ftData.Description = DescriptionBuf;
ftData.SerialNumber = SerialNumberBuf;
ftStatus = FT_EE_Read(ftHandle,&ftData);
if (ftStatus == FT_OK){
printf("FT_EE_Read OK!~\n");
printf("Manufacturer=%s,ManufacturerId=%s\n",ftData.Manufacturer,ftData.ManufacturerId);
printf("Description=%s,SerialNumber=%s\n",ftData.Description,ftData.SerialNumber);
printf("IFAIsFifo7=%d\n",ftData.IFAIsFifo7);
}
else {
printf("FT_EE_Read FAILED!\n");
}
//FT_EE_Program//ftData.VendorId = 0x0403;//ftData.ProductId = 0x6010;//ftData.Manufacturer = "FTDI";
//ftData.ManufacturerId = "FT";
//ftData.SerialNumber = "FTS58JQC";
//ftData.Description = "FT2232H_Mini_Module";
ftData.IFAIsFifo7 = 1;
ftStatus = FT_EE_Program(ftHandle, &ftData);
if (ftStatus == FT_OK) {
printf("FT_EE_Program OK!~\n");
}
else {
printf("FT_EE_Program FAILED!\n");
}//FT_SetBitMode
ftStatus = FT_SetBitMode(ftHandle,Mask,ModeSync);
if (ftStatus == FT_OK) {
printf("SetBitMode ModeSync OK!~\n");
}
else{
printf("FT_SetBitMode FAILED!\n");
}
j = 0;m = 0;n = 0;
}
FT_Close(ftHandle);
printf("FT_Close!\n");
return 0; */
}
|