首页 | 期刊简介 | 编辑部 | 广告部 | 发行部 | 在线投稿 | 联系我们 | 产品信息索取
2024年11月21日星期四
2011年第01期
 
2010年第12期
 
2010年第11期
2010年第11期
 
2010年第10期
2010年第10期
 
2010年第09期
2010年第09期
 
2010年第09期
2010年第08期
 
2010年第07期
2010年第07期
 
2010年第06期
2010年第06期
 
2010年第05期
2010年第05期
 
2010年第04期
2010年第04期
 
2010年第03期
2010年第03期
 
2010年第02期
2010年第02期
 
2010年第01期
2010年第01期
 
2009年第12期
2009年第12期
 
2009年第11期
2009年第11期
 
2009年第10期
2009年第10期
 
2009年第9期
2009年第9期
 
2009年第8期
2009年第8期
 
2009年第7期
2009年第7期
 
2009年第6期
2009年第6期
 
2009年第5期
2009年第5期
 
2009年第4期
2009年第4期
 
2009年第3期
2009年第3期
 
2009年第2期
2009年第2期
 
2009年第1期
2009年第1期
 
2008年第12期
2008年第12期
 
2008年第11期
2008年第11期
 
2008年第10期
2008年第10期
 
2008年第9期
2008年第9期
 
2008年第8期
2008年第8期
 
2008年第7期
2008年第7期
 
2008年第6期
2008年第6期
 
2008年第5期
2008年第5期
 
2008年第4期
2008年第4期
 
2008年第3期
2008年第3期
 
2008年第2期
2008年第2期
 
2008年第1期
2008年第1期
USB接口芯片FT245BM的功能及其应用

The Function and Application of USB Interface Chip FT245BM

国防科技大学 张景悦 王明磊


摘 要: FT245BM芯片是FTDI(Future Technology Devices Intl. Ltd)公司生产的一种USB接口芯片,支持USB协议与并行I/O协议之间的转换,文中主要介绍了FT245BM芯片的内部结构、功能、工作原理,以及基于FT245BM芯片的硬件接口设计及软件编程。

关键字:FT245BM;USB


概要

通用串行总线USB(Universal Serial Bus)由于具有数据传输速率高、易于使用、支持热插拔等特点,越来越成为一种流行的计算机通信接口。FT245BM芯片是由FTDI(Future Technology Devices Intl. Ltd)公司推出的第二代USB接口芯片,与其他USB芯片相比,应用FT245BM芯片进行USB外设开发,只需熟悉单片机(MCU)编程及简单的VC或VB 编程,而无需考虑固件设计以及驱动程序的编写,从而能大大缩短USB外设产品的开发周期。此外,FT245BM支持USB1.1及USB2.0规范,数据传输速度可达到1M byte/s。因此,FT245BM是开发USB外设所需接口芯片的极佳选择。

FT245BM的结构与功能

FT245BM芯片是一种32脚,LQFP封装的芯片,管脚定义如下:

D[0-7](25,24,23,22,21,20,19,18):双向数据信号线;

RD#(16):读信号;

WR(15):写信号;

TXE#(14): FIFO发送缓冲区空标志信号;

RXF#(12): FIFO接收缓冲区非空标志信号;

USBDP(7),USBDM(8):USB数据信号正端,USB数据信号负端;

EECS(32),EESK(1),EEDATA(2):EEPROM片选线,时钟线,数据线;

PWREN(10):电源使能信号;

SI/MU(11):立即发送或唤醒信号;

RESET(4):复位信号;

RSTOUT(5):内部复位生成器的输出信号;

XTIN(27),XTOUT(28):时钟输入信号,输出信号;

TEST(31):测试信号;

3V3OUT(6):3.3V输出信号;

VCC(3,26),VCCIO(13),AVCC(30):芯片电源,控制引脚电源,内部模拟电源;

GND(9,17),AGND(29):芯片地,内部模拟地。

芯片内部由3.3V稳压器,USB收发器,锁相环,串行接口引擎(SIE),FIFO控制器,USB协议引擎,FIFO接收缓冲区,发送缓冲区以及6M振荡器,8倍频时钟倍频器等组成。

FT245BM芯片可实现USB接口与并行I/O接口之间数据的双向转换。一方面,当USB收发器从主机接收USB串行数据后,由串行接口引擎将数据转换成并行数据,存储在FIFO接收缓冲区, FIFO控制器检测到读信号RD为低,就把接收缓冲区的数据送到并行数据线D0-D7上;另一方面当FIFO控制器检测到写信号WR为高时,就从数据线D0-D7上读取并行数据,存储在FIFO发送缓冲区,并行数据经串行接口引擎转换成USB串行数据,再通过USB收发器传送到主机。可见FT245BM芯片自身就可完成数据转换,而不需要设计者考虑硬件设计。其内部结构功能如图1。

图1 FT245BM芯片功能框图(略)

硬件接口设计

接口电路原理图见图2。

设计采用USB总线供电,图2中FT245BM与一片MCU相连,MCU的一个8位端口用来传输数据,另外一个端口用来控制和产生FT245BM需要的4根握手信号线,即RXF#、TXE#、RD#、WR。TXE#为低,表示当前FIFO发送缓冲区空,这时WR脉冲由高变低就将数据线D0-D7上数据写入FIFO发送缓冲区中;当TXE#变高时,表示当前FIFO发送缓冲区满或者正在存储上一个字节,禁止向发送缓冲区中写数据。RXF#为低,表示当前FIFO接收缓冲区有数据,这时RD#脉冲由低变高,将从FIFO接收缓冲区中读取数据;读信号RD#为低时,把数据读到数据线D0...D7上;当RXF#为高时,禁止从FIFO接收缓冲区读数据。读写时序见图3与图4。

图2 硬件设计原理(略)

图2中的93C46(93C56或93C66)是一片EEPROM,用于存储产品的VID、PID、设备序列号及一些说明性文字等。该EEPROM是可选的,若没有EEPROM,FT245BM将使用默认的VID、PID、产品描述符和电源描述符,并且没有设备的序列号。

图3 读数据时序(略)


图4 写数据时序(略)

设计时需在USB接口的电源端连接一个磁珠,以减少设备的噪声和USB电缆辐射对主机产生的电磁干扰;电源端增加了去耦和旁路电容,以提高电路的抗干扰性能。还需注意的是,电路中RSTOUT#用来提供上电复位MCU。如果MCU本身有复位逻辑,那么通常就不需使用RSTOUT#来复位设备,这部分连接与47K下拉电阻就能省略。


软件设计

当外设连到主机USB接口时,主机会检测到新硬件,这时需要安装一个可从FTDI公司的网站上免费下载的虚拟串口(VCP)驱动程序,该驱动程序适用于WINDOWS98/2000/ME/XP等不同操作系统。设计者需要完成的是,编写一个针对虚拟串口通信的应用程序,把虚拟串口(VCP)当作一个标准的串口去访问。

设计的软件部分可使用VB或VC语言中提供的串口通信MSComm控件进行应用程序编写,下面我们以VC语言为例介绍如何编写应用程序,主要介绍MSComm控件的设置及串口消息事件MSComm.CommEvent响应函数的编写。

1)MSComm控件设置:编程时通常把虚拟串口设置为COM3,即将MSComm.SetCommPort置为3, MSComm.SetSettings置为"9600,n,8,1"(该速率为默认设置,实际上VCP驱动程序总是使数据以最快速率传输);通过MSComm.SetPortOpen设置COM3的开关状态;通过MSComm.SetInput和MSComm.SetOutput读入或输出数据。在读取数据时,设置MSComm.Rthreshold的值为1。

2)有数据传到PC机时,就立即触发串口消息事件MSComm.CommEvent,自动读取COM3的数据。下面是本文作者编写的应用程序,处理这个串口消息事件的OnComm函数,其完成的是从串口接收数据并显示在一个编辑框中。

发送数据则可自动发送或者手动发送,这由用户根据具体情况自己设定。

void CAaDlg::OnComm()
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //设置BYTE数组 An 8-bit integerthat is not signed.
CString strtemp;
if(MSComm.GetCommEvent()==2); //事件值为2表示接收缓冲区内有字符
{ / /以下可以根据通信协议加入处理代码
variant_inp= MSComm.GetInput(); //读缓冲区
safearray_inp=variant_inp; //VARIANT型变量转换为ColeSafeArray型变量
len=safearray_inp.GetOneDimSize(); //得到有效数据长度
for(k=0;k<len;k++)
safearray_inp.GetElement(&k,rxdata+k);

//转换为BYTE型数组
for(k=0;k<len;k++) //将数组转换为Cstring型变量
{
BYTE bt=*(char*)(rxdata+k); //字符型
strtemp.Format("%c",bt); //将字符送入临时变量strtemp存放
m_redit+=strtemp; //加入接收编辑框对应字符串 }
}
UpdateData(FALSE); //更新编辑框内容
}


结论

上述接口设计的硬件与软件部分作者均已调试通过,成功的实现了外设与计算机的USB接口通信。FT245BM成本不高,使用灵活方便,开发周期短,设计者即可用于工程实践,如USB接口的工业控制,也可用于产品开发,如数码相机的USB接口等。

         
版权所有《世界电子元器件》杂志社
地址:北京市海淀区上地东路35号颐泉汇 邮编:100085
电话:010-62985649
E-mail:dongmei@eccn.com