基于FT245BM的简易USB接口开发
摘要:FT245BM的主要功能是进行USB和并行I/O口之间的协议转换。详细介绍FT245BM芯片的工作原理、内部结构、引脚分布及功能;给出基于FT245BM接口电路的典型设计及驱动和应用软件的编写方法。
关键词:FT245BM USB接口 并行I/O口
引 言
1 概 述
当前,USB外设的开发是一个热点。由于USB总线具有传输速度快、占用资源少及真正的即插即用等优点,越来越受到业界的青睐。可是,USB的开发要求设计人员对USB的标准、Firmware(固件)编程及驱动程序的编写等有较深入的理解,因此限制了USB的开发人员;而基于FT245BM芯片的USB产品开发,能够使研发人员在最短的周期内开发出相应的USB产品。该芯片由FTDI (Future Technology Devices Intl. Ltd.)公司推出,使用简单、性能卓越,只要熟悉单片机编程及简单的VB、VC应用程序编程,就可很容易地进行用户产品开发。
javascript:window.open(this.src);" style="cursor:pointer;"/>
2 FT245BM芯片功能简介
FT245BM的主要功能是进行USB和并行I/O口之间的协议转换。芯片一方面可从主机接收USB数据,并将其转换为并行I/O口的数据流格式发送给外设;另一方面外设可通过并行I/O口将数据转换为USB的数据格式传回主机。中间的转换工作全部由芯片自动完成,开发者无须考虑固件的设计。
FT245BM内部主要由USB收发器、串行接口引擎(SIE)、javascript:window.open(this.src);" style="cursor:pointer;"/>USB协议引擎和先进先出(FIFO)控制器等构成,如图1所示。USB收发器提供USB1.1/ 2.0的全速物理接口到USB总线,支持UHCI/OHCI主控制器;串行接口引擎主要用于完成USB数据的串/并双向转换,并按照USB1.1规范来完成USB数据流的位填充/位反填充,以及循环冗余校验码(CRC5/CRC16)的产生和检错;USB协议引擎管理来自USB设备控制端口的数据流;FIFO控制器处理外部接口和收发缓冲区间的数据转换。
FIFO控制器实现与单片机(如AT89C51等)的接口,主要通过8根数据线D0~D7及读写控制线(、WR、和)来完成和单片机的数据交互。FT245BM内含两个FIFO数据缓冲区,一个是128字节的接收缓冲区,另一个是384字节的发送缓冲区。它们均用于USB数据与并行I/O口数据的交换缓冲区。
另外,FT245BM还包括1个内置的3.3 V的稳压器,1个6 MHz的振荡器、8倍频的时钟倍频器、USB锁相环和EEPROM接口。FT245BM采用32脚的PQFP封装,体积小巧,易于和外设做到一块板上。其外形及引脚分布如图2所示,各引脚的功能描述如表1所列。
表1 FT245BM引脚功能
引脚号 | 引脚名称 | 类 型 | 引脚功能 |
25 | D0 | I/O | 双向数据总线 |
24 | D1 | I/O | 双向数据总线 |
23 | D2 | I/O | 双向数据总线 |
22 | D3 | I/O | 双向数据总线 |
21 | D4 | I/O | 双向数据总线 |
20 | D5 | I/O | 双向数据总线 |
19 | D6 | I/O | 双向数据总线 |
18 | D7 | I/O | 双向数据总线 |
16 | RD | IN | 由低变高时,允许从接收数据缓冲区读取数据 |
15 | WR | IN | 由高变低时,允许将数据发送到数据缓冲区 |
14 | TXE | OUT | 为低时,允许数据写入发送数据缓冲区 |
12 | RXF | OUT | 为低时,允许数据缓冲区的数据被读取 |
7 | USBDP | I/O | USB数据信号线D+,接1.5kΩ的上位电阻到3.3V |
8 | USBDM | I/O | USB数据信号线D- |
32 | EECS | I/O | EEPROM片选线 |
1 | EESK | OUT | EEPROM时钟线 |
2 | EEDATA | I/O | EEPROM数据线 |
10 | PWREN | OUT | 电源使能线 |
11 | SI/WU | IN | 发送立刻消息或唤醒信号线 |
4 | RESET | IN | 复位脚 |
5 | RSTOUT | OUT | 内部复位生成器的输出脚 |
27 | XTIN | IN | 时钟输入脚 |
28 | XTOUT | OUT | 时钟输出脚 |
31 | TEST | IN | 测试脚 |
6 | 3V3OUT | OUT | 3.3V输出脚 |
3、26 | VCC | PWR | 电池,+4.4~5.25V |
13 | VCCIO | PWR | 控制引脚10~12、14~16、18~25的信号电平,+3.0~+5.25V |
9、17 | GND | PWR | 电源地 |
30 | AVCC | PWR | 内部模拟电源 |
29 | AGND | PWR | 内部模拟电源地 |
3 硬件设计
FT245BM的典型硬件电路如图3所示。javascript:window.open(this.src);" style="cursor:pointer;"/>该电路采用总线供电模式,同时采用上电复位方式,通过的输出使单片机复位。时钟电路可采用4脚的6 MHz晶振模块或由1个6 MHz的晶体及2个33 pF的电容组成。脚和I/O 24脚相连,用于判断USB总线是处于挂起状态还是正常状态。在USB接口的电源端采用一个磁珠,以减少主机和设备的干扰;同时,电源端增加了去耦和旁路电容,以提高电路的抗干扰性能。在PCB板的设计中,数据线的走线应尽可能短并且长度相等。图3中的93C46(93C56或93C66)是一片EEPROM,用于存储产品的VID、PID、设备序列号及一些说明性文字等。这些需要用户自己编写,编写的应用程序由FTDI提供。用户只须运行相应的VB应用程序,写入自己相应的信息即可。该EEPROM是可选的。若没有EEPROM,FT245BM将使用默认的VID、PID、产品描述符和电源描述符,并且没有设备的序列号。
图3 FT245BM的典型硬件电路
4 软件编程javascript:window.open(this.src);" style="cursor:pointer;"/>
当FT245BM的USB接 口连接到主机后,必须在PC机上安装一个由FTDI公司免费提供的虚拟串行口VCP(Virtual COM Port)驱动程序。该驱动程序兼容Windows 98/ 98 SE、Windows 2000/ME/XP等不同版本。用户可以在这虚拟串口上进行应用程序的开发。该虚拟串口可以像一个标准的物理串口那样被访问,可本质上所有针对虚拟串口的数据通信都是通过USB总线完成的,在设备端则通过并行I/O口完成。
在PC端,应用VB对虚拟串口(通常为COM3)进行应用编程。我们直接应用MSComm控件,将MSComm3.CommPort置为3,MSComm3.Seetings置为