《电子技术应用》
您所在的位置:首页 > 模拟设计 > 设计应用 > 基于FT232的USB转串口设计
基于FT232的USB转串口设计
摘要: 基于FT232的USB转串口设计.
Abstract:
Key words :

方法一、不修改PC端驱动中的PID_VID,把FT232的USB接口当作一个通用的USB转串口

当FT232BM的USB口与PC端相连时,PC端会提示发现USB Serial Converter,并自动弹出查找新硬件向导对话框,如下图:



     找到FT232BM对应的通用驱动程序安装,安装完毕设备管理器则显示一个USB串行接口

   

   

方法二、把FT232的USB接口当作专用的USB转串口

(需要在FT232外部加串行的EEPROM,用来存储USB  VID、PID及设备信息。)

      FT232内部存有VID和PID,且每一个同型号的芯片的VID和PID都是一样的,FT232在上电时首先读取外部的VID、PID及设备信息,如果外部没有EEPROM存储器件,则使用芯片内部的VID、PID及设备信息。

由于是专用的USB转串口,FT232需要重新配制VID 和PID 以及设备描述信息,EERPOM的配制可用专用的EERPOM烧写工具,也可用MProg3.0_Setup.exe+配制文件.ept文件来配制,方法如下



1、配制EEPROM

   安装并运行 MProg3.0_Setup.exe 。打开配制文件:


点编程,将配制文件写入EEPROM(FT232外置)。



2、修改PC端驱动的INF文件

   将PID和VID的序号改成和配制文件中的一致

  

   [FtdiHw]

%USB\VID_1987&PID_0724.DeviceDesc%=FtdiBus,USB\VID_1987&PID_0724

%USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus,USB\VID_0403&PID_6001

%USB\VID_0403&PID_6007.DeviceDesc%=FtdiBus,USB\VID_0403&PID_6007

%USB\VID_0403&PID_6008.DeviceDesc%=FtdiBus,USB\VID_0403&PID_6008

%USB\VID_0403&PID_6009.DeviceDesc%=FtdiBus,USB\VID_0403&PID_6009

%USB\VID_0403&PID_0232.DeviceDesc%=FtdiBus,USB\VID_0403&PID_0232



[Strings]

Ftdi="liu_xf"

DriversDisk="FTDI USB Drivers Disk"

USB\VID_1987&PID_0724.DeviceDesc="《小发和你共同玩USB》之USB转串口"

USB\VID_0403&PID_6001.DeviceDesc="USB Serial Converter"

USB\VID_0403&PID_6007.DeviceDesc="USB Serial Converter"

USB\VID_0403&PID_6008.DeviceDesc="USB Serial Converter"

USB\VID_0403&PID_6009.DeviceDesc="USB Serial Converter"

USB\VID_0403&PID_0232.DeviceDesc="USB Serial Converter"

WINUN="Software\Microsoft\Windows\CurrentVersion\Uninstall"

FtdiBus.SvcDesc="USB Serial Converter Driver"



3、插上USB,按照提示安装驱动

   注意:如果PC端驱动中的PID VID与配制文件中的PID VID不一致,将照成驱动程序无法安装。











三、配制EEPROM时出现MPorg与硬件不能正常连接时的几点说明

用MProg配制EEPROM时,请确保配制文件.ept正确且配制成功后再拔插USB接口,否则配制完成重新拔插USB端口时,会自动弹出查找新硬件向导,此时若要点击MProg重新配制,则会出现无法连的情况。只有安装完驱动,再打开MProg才能重新建立连接。

如果EEPROM配制成功,但在安装驱动的时候出现错误,导致硬件无法使用,同时还会出现硬件与MProg无法连接的现象,需重新安装正确的驱动才能正常;由于windows系统内保存了该硬件的VID和PID,可能会导致正确的驱动不能被安装。解决办法可尝试换一台电脑,在新的电脑上将正确的驱动安装后,再用MPorg将硬件的EEPROM内的配制文件擦除即可;此时再回来原来的电脑上,即可与MPorg正常连接。






四、配制文件.ept和PC端驱动安装信息文件.inf的修改

通用的FT232M.ept文件

―――――――――――――――――――――――――

[Basic Details]

Device Type="3"     //设备类型为FT232BM

VID PID Type="2"

USB VID="1987"     //生产厂商ID

USB PID="0724"     //产品ID

[USB Power Options]

Bus Powered="1"

Self Powered="0"

Max Bus Power="100"

[USB Serial Number Control]

Prefix=FT

Use Fixed Serial Number="0"

Fixed Serial Number="20090414"

[USB Remote WakeUp]

Enable Remote WakeUp="0"

[Windows Plug and Play]

Enable Plug and Play="1"

[USB String Descriptors]

Manufacturer=Liu_xf       //制造商名称

Product=USB Serial Port    //产品名称

[Programming Options]

Only Program Blank Devices="0"

[BM Device Specific Options]

USB Version Number="1"

Disable Serial Number="1"

IO Pin Pull Down in Suspend="0"

[Dual Device Specific Options A]

RS 232 mode="0"

245 FIFO mode="0"

245 CPU FIFO mode="1"

OPTO Isolate mode="0"

High Current Drive=0

[Dual Device Specific Options B]

RS 232 mode="1"

245 FIFO mode="0"

245 CPU FIFO mode="0"

OPTO Isolate mode="0"

High Current Drive=0

[Dual Device Driver Options A]

Virtual Com Port Driver="0"

D2XX Driver="1"

[Dual Device Driver Options B]

Virtual Com Port Driver="1"

D2XX Driver="0"

[R Device Specific Options]

Invert TXD="0"

Invert RXD="0"

Invert RTS#=0

Invert CTS#=0

Invert DTR#=0

Invert DSR#=0

Invert DCD#=0

Invert RI#=0

C0 Signal="-1"

C1 Signal="-1"

C2 Signal="-1"

C3 Signal="-1"

C4 Signal="-1"

Enable Ext Osc="0"

High Current I/O=0

Load D2XX Driver="0"

In EndPoint Size="0"



―――――――――――――――――――――――――



PC端的.inf文件



――――――――――――――――――――――――――――――

; FTDIBUS.INF

; Copyright (c) 2000-2004 FTDI Ltd.



[Version]

signature="$CHICAGO$"

Class=USB

ClassGUID={36fc9e60-c465-11cf-8056-444553540000}

Provider=%FTDI%

CatalogFile=ftdibus.cat

DriverVer=04/14/2009,1.00.2154



[SourceDisksNames]

1=%DriversDisk%,,,



[SourceDisksFiles]

ftcomms.vxd = 1

ftserial.sys = 1

ftsenum.vxd = 1

ftsenum.sys = 1

ftsermou.vxd = 1

ftserui.dll = 1

ftlang.dll = 1

ftdibus.sys = 1

ftdiunin.exe = 1

ftdiunin.ini = 1

ftdiun2k.ini = 1



[DestinationDirs]

FtdiBus.Copy1 = 11

FtdiBus.Copy2 = 17

FtdiBus.NT.Copy = 10,system32\drivers

FtdiBus.NT.Copy2 = 11



[Manufacturer]

%Ftdi%=FtdiHw



[FtdiHw]

%USB\VID_1987&PID_0724.DeviceDesc%=FtdiBus,USB\VID_1987&PID_0724

%USB\VID_0403&PID_6001.DeviceDesc%=FtdiBus,USB\VID_0403&PID_6001

%USB\VID_0403&PID_6007.DeviceDesc%=FtdiBus,USB\VID_0403&PID_6007

%USB\VID_0403&PID_6008.DeviceDesc%=FtdiBus,USB\VID_0403&PID_6008

%USB\VID_0403&PID_6009.DeviceDesc%=FtdiBus,USB\VID_0403&PID_6009

%USB\VID_0403&PID_0232.DeviceDesc%=FtdiBus,USB\VID_0403&PID_0232



[ControlFlags]

ExcludeFromSelect=USB\VID_0403&PID_8372

ExcludeFromSelect=USB\VID_0403&PID_6001

ExcludeFromSelect=USB\VID_0403&PID_6007

ExcludeFromSelect=USB\VID_0403&PID_6008

ExcludeFromSelect=USB\VID_0403&PID_6009

ExcludeFromSelect=USB\VID_0403&PID_0232



[FtdiBus]

CopyFiles=FtdiBus.Copy1,FtdiBus.Copy2

AddReg=FtdiBus.AddReg, FtdiBusUnInst.Reg

RemoveDevice=FtdiBus.RemDev



[FtdiBus.HW]

AddReg=FtdiBus.AddReg.HW



[FtdiBus.AddReg]

HKR,,DevLoader,,*ntkern

HKR,,NTMPDriver,,ftserial.sys



[FtdiBus.AddReg.HW]

HKR,,"UpperFilters",0x00010000,"ftsenum.sys"



[FtdiBus.Copy1]

ftcomms.vxd

ftsenum.vxd

ftsermou.vxd

ftserial.sys

ftsenum.sys

ftserui.dll

ftdiunin.exe

ftdiunin.ini



[FtdiBus.Copy2]

ftdibus.inf

ftdiport.inf

ftsermou.inf



[FtdiBus.RemDev]

DelFiles=FtdiBus.Delfiles

DELKEY=HKLM,%WINUN%\FTDICOMM



[FtdiBusUnInst.Reg]

HKLM,%WINUN%,"FTDICOMM"

HKLM,%WINUN%\FTDICOMM , "UninstallString",,"%11%\ftdiunin.exe %11%\ftdiunin.ini"

HKLM,%WINUN%\FTDICOMM , "DisplayName",,"FTDI USB-to-Serial Converter Drivers"



[FtdiBus.DelFiles]

FTCOMMS.VXD

ftsenum.vxd

ftsermou.vxd

FTSERIAL.SYS

FTPORTS.INF

FTDICOM.INF

ftdibus.inf

ftdiport.inf

ftsenum.sys

ftserui.dll

ftdiunin.exe

ftdiunin.ini



;---------------------------------------------------------------;

; For Win2000 ...

;



[FtdiBus.NT]

CopyFiles=FtdiBus.NT.Copy,FtdiBus.NT.Copy2

AddReg=FtdiBus.NT.AddReg,FtdiBusUnInst.NT.Reg



[FtdiBus.NT.Services]

AddService = FTDIBUS, 0x00000002, FtdiBus_AddService



[FtdiBus_AddService]

DisplayName    = %FtdiBus.SvcDesc%

ServiceType    = 1                  ; SERVICE_KERNEL_DRIVER

StartType      = 3                  ; SERVICE_DEMAND_START

ErrorControl   = 1                  ; SERVICE_ERROR_NORMAL

ServiceBinary  = %10%\system32\drivers\ftdibus.sys

LoadOrderGroup = Base

AddReg         = FtdiBus_AddService.AddReg



[FtdiBus.NT.AddReg]

HKR,,DevLoader,,*ntkern

HKR,,NTMPDriver,,ftdibus.sys



[FtdiBus_AddService.AddReg]

HKR,Parameters,"MaximumTransferSize",0x10001,4096

;HKR,Parameters,"DebugLevel",0x10001,2



[FtdiBus.NT.Copy]

ftdibus.sys



[FtdiBus.NT.Copy2]

ftdiunin.exe

ftdiun2k.ini



[FtdiBusUnInst.NT.Reg]

HKLM,%WINUN%,"FTDICOMM"

HKLM,%WINUN%\FTDICOMM , "UninstallString",,"%11%\ftdiunin.exe %11%\ftdiun2k.ini"

HKLM,%WINUN%\FTDICOMM , "DisplayName",,"FTDI USB Serial Converter Drivers"



;---------------------------------------------------------------;



[Strings]

Ftdi="liu_xf"

DriversDisk="FTDI USB Drivers Disk"

USB\VID_1987&PID_0724.DeviceDesc="《小发和你共同玩USB》之USB转串口"

USB\VID_0403&PID_6001.DeviceDesc="USB Serial Converter"

USB\VID_0403&PID_6007.DeviceDesc="USB Serial Converter"

USB\VID_0403&PID_6008.DeviceDesc="USB Serial Converter"

USB\VID_0403&PID_6009.DeviceDesc="USB Serial Converter"

USB\VID_0403&PID_0232.DeviceDesc="USB Serial Converter"

WINUN="Software\Microsoft\Windows\CurrentVersion\Uninstall"

FtdiBus.SvcDesc="USB Serial Converter Driver"

―――――――――――――――――――――――――――





五、符录

硬件原理图

此内容为AET网站原创,未经授权禁止转载。