|
FT245BM |
![]() |
FT245BM 的PDF資料下載,531396K |
其他型號(hào) |
FT245BM的供應(yīng)商: |
聯(lián)系人:詹小姐 電話:0755-83797351 |
聯(lián)系人:曹歡 電話:0755-83002566 |
聯(lián)系人:洪小姐 電話:0755-23603602 |
聯(lián)系人:朱先生/李小姐 電話:0755-83325286/0755-83326422 |
|
>>更多供應(yīng)商 |
USB接口芯片F(xiàn)T245BM的功能及其應(yīng)用
The Function and Application of USB Interface Chip FT245BM
摘 要: FT245BM芯片是FTDI(Future Technology Devices Intl. Ltd)公司生產(chǎn)的一種USB接口芯片,支持USB協(xié)議與并行I/O協(xié)議之間的轉(zhuǎn)換,文中主要介紹了FT245BM芯片的內(nèi)部結(jié)構(gòu)、功能、工作原理,以及基于FT245BM芯片的硬件接口設(shè)計(jì)及軟件編程。
關(guān)鍵字:FT245BM;USB
概要
通用串行總線USB(Universal Serial Bus)由于具有數(shù)據(jù)傳輸速率高、易于使用、支持熱插拔等特點(diǎn),越來(lái)越成為一種流行的計(jì)算機(jī)通信接口。FT245BM芯片是由FTDI(Future Technology Devices Intl. Ltd)公司推出的第二代USB接口芯片,與其他USB芯片相比,應(yīng)用FT245BM芯片進(jìn)行USB外設(shè)開發(fā),只需熟悉單片機(jī)(MCU)編程及簡(jiǎn)單的VC或VB 編程,而無(wú)需考慮固件設(shè)計(jì)以及驅(qū)動(dòng)程序的編寫,從而能大大縮短USB外設(shè)產(chǎn)品的開發(fā)周期。此外,F(xiàn)T245BM支持USB1.1及USB2.0規(guī)范,數(shù)據(jù)傳輸速度可達(dá)到1M byte/s。因此,F(xiàn)T245BM是開發(fā)USB外設(shè)所需接口芯片的極佳選擇。
FT245BM的結(jié)構(gòu)與功能
FT245BM芯片是一種32腳,LQFP封裝的芯片,管腳定義如下:
D[0-7](25,24,23,22,21,20,19,18):雙向數(shù)據(jù)信號(hào)線;
RD#(16):讀信號(hào);
WR(15):寫信號(hào);
TXE#(14): FIFO發(fā)送緩沖區(qū)空標(biāo)志信號(hào);
RXF#(12): FIFO接收緩沖區(qū)非空標(biāo)志信號(hào);
USBDP(7),USBDM(8):USB數(shù)據(jù)信號(hào)正端,USB數(shù)據(jù)信號(hào)負(fù)端;
EECS(32),EESK(1),EEDATA(2):EEPROM片選線,時(shí)鐘線,數(shù)據(jù)線;
PWREN(10):電源使能信號(hào);
SI/MU(11):立即發(fā)送或喚醒信號(hào);
RESET(4):復(fù)位信號(hào);
RSTOUT(5):內(nèi)部復(fù)位生成器的輸出信號(hào);
XTIN(27),XTOUT(28):時(shí)鐘輸入信號(hào),輸出信號(hào);
TEST(31):測(cè)試信號(hào);
3V3OUT(6):3.3V輸出信號(hào);
VCC(3,26),VCCIO(13),AVCC(30):芯片電源,控制引腳電源,內(nèi)部模擬電源;
GND(9,17),AGND(29):芯片地,內(nèi)部模擬地。
芯片內(nèi)部由3.3V穩(wěn)壓器,USB收發(fā)器,鎖相環(huán),串行接口引擎(SIE),F(xiàn)IFO控制器,USB協(xié)議引擎,F(xiàn)IFO接收緩沖區(qū),發(fā)送緩沖區(qū)以及6M振蕩器,8倍頻時(shí)鐘倍頻器等組成。
FT245BM芯片可實(shí)現(xiàn)USB接口與并行I/O接口之間數(shù)據(jù)的雙向轉(zhuǎn)換。一方面,當(dāng)USB收發(fā)器從主機(jī)接收USB串行數(shù)據(jù)后,由串行接口引擎將數(shù)據(jù)轉(zhuǎn)換成并行數(shù)據(jù),存儲(chǔ)在FIFO接收緩沖區(qū), FIFO控制器檢測(cè)到讀信號(hào)RD為低,就把接收緩沖區(qū)的數(shù)據(jù)送到并行數(shù)據(jù)線D0-D7上;另一方面當(dāng)FIFO控制器檢測(cè)到寫信號(hào)WR為高時(shí),就從數(shù)據(jù)線D0-D7上讀取并行數(shù)據(jù),存儲(chǔ)在FIFO發(fā)送緩沖區(qū),并行數(shù)據(jù)經(jīng)串行接口引擎轉(zhuǎn)換成USB串行數(shù)據(jù),再通過USB收發(fā)器傳送到主機(jī)?梢奆T245BM芯片自身就可完成數(shù)據(jù)轉(zhuǎn)換,而不需要設(shè)計(jì)者考慮硬件設(shè)計(jì)。其內(nèi)部結(jié)構(gòu)功能如圖1。
圖1 FT245BM芯片功能框圖(略)
硬件接口設(shè)計(jì)
接口電路原理圖見圖2。
設(shè)計(jì)采用USB總線供電,圖2中FT245BM與一片MCU相連,MCU的一個(gè)8位端口用來(lái)傳輸數(shù)據(jù),另外一個(gè)端口用來(lái)控制和產(chǎn)生FT245BM需要的4根握手信號(hào)線,即RXF#、TXE#、RD#、WR。TXE#為低,表示當(dāng)前FIFO發(fā)送緩沖區(qū)空,這時(shí)WR脈沖由高變低就將數(shù)據(jù)線D0-D7上數(shù)據(jù)寫入FIFO發(fā)送緩沖區(qū)中;當(dāng)TXE#變高時(shí),表示當(dāng)前FIFO發(fā)送緩沖區(qū)滿或者正在存儲(chǔ)上一個(gè)字節(jié),禁止向發(fā)送緩沖區(qū)中寫數(shù)據(jù)。RXF#為低,表示當(dāng)前FIFO接收緩沖區(qū)有數(shù)據(jù),這時(shí)RD#脈沖由低變高,將從FIFO接收緩沖區(qū)中讀取數(shù)據(jù);讀信號(hào)RD#為低時(shí),把數(shù)據(jù)讀到數(shù)據(jù)線D0...D7上;當(dāng)RXF#為高時(shí),禁止從FIFO接收緩沖區(qū)讀數(shù)據(jù)。讀寫時(shí)序見圖3與圖4。
圖2 硬件設(shè)計(jì)原理(略)
圖2中的93C46(93C56或93C66)是一片EEPROM,用于存儲(chǔ)產(chǎn)品的VID、PID、設(shè)備序列號(hào)及一些說(shuō)明性文字等。該EEPROM是可選的,若沒有EEPROM,F(xiàn)T245BM將使用默認(rèn)的VID、PID、產(chǎn)品描述符和電源描述符,并且沒有設(shè)備的序列號(hào)。
圖3 讀數(shù)據(jù)時(shí)序(略)
圖4 寫數(shù)據(jù)時(shí)序(略)
設(shè)計(jì)時(shí)需在USB接口的電源端連接一個(gè)磁珠,以減少設(shè)備的噪聲和USB電纜輻射對(duì)主機(jī)產(chǎn)生的電磁干擾;電源端增加了去耦和旁路電容,以提高電路的抗干擾性能。還需注意的是,電路中RSTOUT#用來(lái)提供上電復(fù)位MCU。如果MCU本身有復(fù)位邏輯,那么通常就不需使用RSTOUT#來(lái)復(fù)位設(shè)備,這部分連接與47K下拉電阻就能省略。
軟件設(shè)計(jì)
當(dāng)外設(shè)連到主機(jī)USB接口時(shí),主機(jī)會(huì)檢測(cè)到新硬件,這時(shí)需要安裝一個(gè)可從FTDI公司的網(wǎng)站上免費(fèi)下載的虛擬串口(VCP)驅(qū)動(dòng)程序,該驅(qū)動(dòng)程序適用于WINDOWS98/2000/ME/XP等不同操作系統(tǒng)。設(shè)計(jì)者需要完成的是,編寫一個(gè)針對(duì)虛擬串口通信的應(yīng)用程序,把虛擬串口(VCP)當(dāng)作一個(gè)標(biāo)準(zhǔn)的串口去訪問。
設(shè)計(jì)的軟件部分可使用VB或VC語(yǔ)言中提供的串口通信MSComm控件進(jìn)行應(yīng)用程序編寫,下面我們以VC語(yǔ)言為例介紹如何編寫應(yīng)用程序,主要介紹MSComm控件的設(shè)置及串口消息事件MSComm.CommEvent響應(yīng)函數(shù)的編寫。
1)MSComm控件設(shè)置:編程時(shí)通常把虛擬串口設(shè)置為COM3,即將MSComm.SetCommPort置為3, MSComm.SetSettings置為"9600,n,8,1"(該速率為默認(rèn)設(shè)置,實(shí)際上VCP驅(qū)動(dòng)程序總是使數(shù)據(jù)以最快速率傳輸);通過MSComm.SetPortOpen設(shè)置COM3的開關(guān)狀態(tài);通過MSComm.SetInput和MSComm.SetOutput讀入或輸出數(shù)據(jù)。在讀取數(shù)據(jù)時(shí),設(shè)置MSComm.Rthreshold的值為1。
2)有數(shù)據(jù)傳到PC機(jī)時(shí),就立即觸發(fā)串口消息事件MSComm.CommEvent,自動(dòng)讀取COM3的數(shù)據(jù)。下面是本文作者編寫的應(yīng)用程序,處理這個(gè)串口消息事件的OnComm函數(shù),其完成的是從串口接收數(shù)據(jù)并顯示在一個(gè)編輯框中。
發(fā)送數(shù)據(jù)則可自動(dòng)發(fā)送或者手動(dòng)發(fā)送,這由用戶根據(jù)具體情況自己設(shè)定。
void CAaDlg::OnComm()
{
VARIANT variant_inp;
COleSafeArray safearray_inp;
LONG len,k;
BYTE rxdata[2048]; //設(shè)置BYTE數(shù)組 An 8-bit integerthat is not signed.
CString strtemp;
if(MSComm.GetCommEvent()==2); //事件值為2表示接收緩沖區(qū)內(nèi)有字符
{ / /以下可以根據(jù)通信協(xié)議加入處理代碼
variant_inp= MSComm.GetInput(); //讀緩沖區(qū)
safearray_inp=variant_inp; //VARIANT型變量轉(zhuǎn)換為ColeSafeArray型變量
len=safearray_inp.GetOneDimSize(); //得到有效數(shù)據(jù)長(zhǎng)度
for(k=0;k<len;k )
safearray_inp.GetElement(&k,rxdata k);
//轉(zhuǎn)換為BYTE型數(shù)組
for(k=0;k<len;k ) //將數(shù)組轉(zhuǎn)換為Cstring型變量
{
BYTE bt=*(char*)(rxdata k); //字符型
strtemp.Format("%c",bt); //將字符送入臨時(shí)變量strtemp存放
m_redit =strtemp; //加入接收編輯框?qū)?yīng)字符串 }
}
UpdateData(FALSE); //更新編輯框內(nèi)容
}
結(jié)論
上述接口設(shè)計(jì)的硬件與軟件部分作者均已調(diào)試通過,成功的實(shí)現(xiàn)了外設(shè)與計(jì)算機(jī)的USB接口通信。FT245BM成本不高,使用靈活方便,開發(fā)周期短,設(shè)計(jì)者即可用于工程實(shí)踐,如USB接口的工業(yè)控制,也可用于產(chǎn)品開發(fā),如數(shù)碼相機(jī)的USB接口等。
|
|||
|
© 2025 維庫(kù)電子市場(chǎng)網(wǎng)(udpf.com.cn) 版權(quán)所有 經(jīng)營(yíng)許可證編號(hào):浙B2-20050339 版權(quán)聲明
二十一年專注打造優(yōu)質(zhì)電子元器件采購(gòu)網(wǎng)、IC交易平臺(tái)。 |