原创 基于FT232的USB转串口设计

2009-6-2 22:26 10367 9 11 分类: 通信

方法一、不修改PC端驱动中的PID_VID,把FT232USB接口当作一个通用的USB转串口<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />


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


<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" /> 70601fb1-cf87-4925-8230-ffe946dc0c80.JPG


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


    475aeafd-a088-4121-8072-db4f7f9507a1.JPG


   


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


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


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


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


 


1、配制EEPROM


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


  点击看大图


点编程,将配制文件写入EEPROMFT232外置)。


 


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


   PIDVID的序号改成和配制文件中的一致


 


   [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不一致,将照成驱动程序无法安装。


 4fc49392-ae20-4ecf-902f-1a700c2561f3.JPG


453c45b2-ce19-4d6b-ab52-5c023b386695.JPG


 


点击看大图


 


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


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


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


 


 


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


通用的FT<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />232M.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 ComPort Driver="0"


D2XX Driver="1"


[Dual Device Driver Options B]


Virtual ComPort 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"


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


 


 


五、符录


硬件原理图


点击看大图

文章评论2条评论)

登录后参与讨论

用户1466950 2010-12-9 09:58

受教了,可惜现在图片都变成了XX

用户174417 2009-12-16 20:33

哈哈 沾光了博主让我卖个广告吧!我也是个学生手上有很多这个片子需要卖掉啦! http://item.taobao.com/auction/item_detail-0db1-2c277a62d3c5674adc1d82ca2d881e8b.jhtml 很便宜的哟!
相关推荐阅读
用户1278632 2011-09-15 12:49
解决FPGA配置成功,但不能初始化运行的BUG
摘要:    遇到两次FPGA配置完成,却不能正常运行的问题,一次是ALTERA的A1C3,另一次是XILINX的XC3S700A。两次都是DONE信号的问题。问题虽不大,但却很折腾人,今天在这里作下...
用户1278632 2011-09-15 12:41
Code Edit的神器UltraEdit
摘要:      我不是一个专职的程序员,但经常会要写一些单片机底层的code和hdl code,起初用UE,是因为查找和批量修改很方便,而且不会额外的生成一些“垃圾”文件;现在用UE三年多了,一直都...
用户1278632 2010-12-29 09:29
ISE与EDK联合设计报错 ERROR:NgdBuild:604 logical block
做一个很简单的测试在ISE的SCH里调用EDK的symbol,EDK的功能也很简单,就是CPU通过串品打印一串字符首先,我建一个ISE工程再建一source  sch类型,并设置为顶层,取名为top....
用户1278632 2010-12-22 14:49
EDK12.2中 mch_emc IP的时序问题
mch_emc IP可以将PLB总线时序转为inter 8080时序 下面是我用chipscope抓到的波形Mem_DQ_O_In :  数据输入 Mem_OEN:      读信号  Mem_A: ...
用户1278632 2010-12-22 14:29
xilinx FPGA的配制与应用程序引导-范例
两个Xilinx FPGA应用程序引导的范例1、run_in_flash是直接在NOR FLASH里运行程序2、spi_flash_boot是将BIT和bootloader和APP全部固化到SPI F...
用户1278632 2010-12-19 13:48
EDK下sram IP的使用
EDK软件的memory and memory controller中有一个xps multi-channel external memory controller(sram/flash)的IP,用来...
我要评论
2
9
关闭 站长推荐上一条 /2 下一条