基于FT245BM的簡(jiǎn)易USB接口開(kāi)發(fā)
關(guān)鍵詞:FT245BM USB接口 并行I/O口
引 言
1 概 述
當(dāng)前,USB外設(shè)的開(kāi)發(fā)是一個(gè)熱點(diǎn)。由于USB總線具有傳輸速度快、占用資源少及真正的即插即用等優(yōu)點(diǎn),越來(lái)越受到業(yè)界的青睞??墒?,USB的開(kāi)發(fā)要求設(shè)計(jì)人員對(duì)USB的標(biāo)準(zhǔn)、Firmware(固件)編程及驅(qū)動(dòng)程序的編寫(xiě)等有較深入的理解,因此限制了USB的開(kāi)發(fā)人員;而基于FT245BM芯片的USB產(chǎn)品開(kāi)發(fā),能夠使研發(fā)人員在最短的周期內(nèi)開(kāi)發(fā)出相應(yīng)的USB產(chǎn)品。該芯片由FTDI (Future Technology Devices Intl. Ltd.)公司推出,使用簡(jiǎn)單、性能卓越,只要熟悉單片機(jī)編程及簡(jiǎn)單的VB、VC應(yīng)用程序編程,就可很容易地進(jìn)行用戶產(chǎn)品開(kāi)發(fā)。
2 FT245BM芯片功能簡(jiǎn)介
FT245BM的主要功能是進(jìn)行USB和并行I/O口之間的協(xié)議轉(zhuǎn)換。芯片一方面可從主機(jī)接收USB數(shù)據(jù),并將其轉(zhuǎn)換為并行I/O口的數(shù)據(jù)流格式發(fā)送給外設(shè);另一方面外設(shè)可通過(guò)并行I/O口將數(shù)據(jù)轉(zhuǎn)換為USB的數(shù)據(jù)格式傳回主機(jī)。中間的轉(zhuǎn)換工作全部由芯片自動(dòng)完成,開(kāi)發(fā)者無(wú)須考慮固件的設(shè)計(jì)。
FT245BM內(nèi)部主要由USB收發(fā)器、串行接口引擎(SIE)、USB協(xié)議引擎和先進(jìn)先出(FIFO)控制器等構(gòu)成,如圖1所示。USB收發(fā)器提供USB1.1/ 2.0的全速物理接口到USB總線,支持UHCI/OHCI主控制器;串行接口引擎主要用于完成USB數(shù)據(jù)的串/并雙向轉(zhuǎn)換,并按照USB1.1規(guī)范來(lái)完成USB數(shù)據(jù)流的位填充/位反填充,以及循環(huán)冗余校驗(yàn)碼(CRC5/CRC16)的產(chǎn)生和檢錯(cuò);USB協(xié)議引擎管理來(lái)自USB設(shè)備控制端口的數(shù)據(jù)流;FIFO控制器處理外部接口和收發(fā)緩沖區(qū)間的數(shù)據(jù)轉(zhuǎn)換。
FIFO控制器實(shí)現(xiàn)與單片機(jī)(如AT89C51等)的接口,主要通過(guò)8根數(shù)據(jù)線D0~D7及讀寫(xiě)控制線(、WR、和)來(lái)完成和單片機(jī)的數(shù)據(jù)交互。FT245BM內(nèi)含兩個(gè)FIFO數(shù)據(jù)緩沖區(qū),一個(gè)是128字節(jié)的接收緩沖區(qū),另一個(gè)是384字節(jié)的發(fā)送緩沖區(qū)。它們均用于USB數(shù)據(jù)與并行I/O口數(shù)據(jù)的交換緩沖區(qū)。
另外,F(xiàn)T245BM還包括1個(gè)內(nèi)置的3.3 V的穩(wěn)壓器,1個(gè)6 MHz的振蕩器、8倍頻的時(shí)鐘倍頻器、USB鎖相環(huán)和EEPROM接口。FT245BM采用32腳的PQFP封裝,體積小巧,易于和外設(shè)做到一塊板上。其外形及引腳分布如圖2所示,各引腳的功能描述如表1所列。
表1 FT245BM引腳功能
引腳號(hào) | 引腳名稱 | 類 型 | 引腳功能 |
25 | D0 | I/O | 雙向數(shù)據(jù)總線 |
24 | D1 | I/O | 雙向數(shù)據(jù)總線 |
23 | D2 | I/O | 雙向數(shù)據(jù)總線 |
22 | D3 | I/O | 雙向數(shù)據(jù)總線 |
21 | D4 | I/O | 雙向數(shù)據(jù)總線 |
20 | D5 | I/O | 雙向數(shù)據(jù)總線 |
19 | D6 | I/O | 雙向數(shù)據(jù)總線 |
18 | D7 | I/O | 雙向數(shù)據(jù)總線 |
16 | RD | IN | 由低變高時(shí),允許從接收數(shù)據(jù)緩沖區(qū)讀取數(shù)據(jù) |
15 | WR | IN | 由高變低時(shí),允許將數(shù)據(jù)發(fā)送到數(shù)據(jù)緩沖區(qū) |
14 | TXE | OUT | 為低時(shí),允許數(shù)據(jù)寫(xiě)入發(fā)送數(shù)據(jù)緩沖區(qū) |
12 | RXF | OUT | 為低時(shí),允許數(shù)據(jù)緩沖區(qū)的數(shù)據(jù)被讀取 |
7 | USBDP | I/O | USB數(shù)據(jù)信號(hào)線D+,接1.5kΩ的上位電阻到3.3V |
8 | USBDM | I/O | USB數(shù)據(jù)信號(hào)線D- |
32 | EECS | I/O | EEPROM片選線 |
1 | EESK | OUT | EEPROM時(shí)鐘線 |
2 | EEDATA | I/O | EEPROM數(shù)據(jù)線 |
10 | PWREN | OUT | 電源使能線 |
11 | SI/WU | IN | 發(fā)送立刻消息或喚醒信號(hào)線 |
4 | RESET | IN | 復(fù)位腳 |
5 | RSTOUT | OUT | 內(nèi)部復(fù)位生成器的輸出腳 |
27 | XTIN | IN | 時(shí)鐘輸入腳 |
28 | XTOUT | OUT | 時(shí)鐘輸出腳 |
31 | TEST | IN | 測(cè)試腳 |
6 | 3V3OUT | OUT | 3.3V輸出腳 |
3、26 | VCC | PWR | 電池,+4.4~5.25V |
13 | VCCIO | PWR | 控制引腳10~12、14~16、18~25的信號(hào)電平,+3.0~+5.25V |
9、17 | GND | PWR | 電源地 |
30 | AVCC | PWR | 內(nèi)部模擬電源 |
29 | AGND | PWR | 內(nèi)部模擬電源地 |
3 硬件設(shè)計(jì)
FT245BM的典型硬件電路如圖3所示。該電路采用總線供電模式,同時(shí)采用上電復(fù)位方式,通過(guò)的輸出使單片機(jī)復(fù)位。時(shí)鐘電路可采用4腳的6 MHz晶振模塊或由1個(gè)6 MHz的晶體及2個(gè)33 pF的電容組成。腳和I/O 24腳相連,用于判斷USB總線是處于掛起狀態(tài)還是正常狀態(tài)。在USB接口的電源端采用一個(gè)磁珠,以減少主機(jī)和設(shè)備的干擾;同時(shí),電源端增加了去耦和旁路電容,以提高電路的抗干擾性能。在PCB板的設(shè)計(jì)中,數(shù)據(jù)線的走線應(yīng)盡可能短并且長(zhǎng)度相等。圖3中的93C46(93C56或93C66)是一片EEPROM,用于存儲(chǔ)產(chǎn)品的VID、PID、設(shè)備序列號(hào)及一些說(shuō)明性文字等。這些需要用戶自己編寫(xiě),編寫(xiě)的應(yīng)用程序由FTDI提供。用戶只須運(yùn)行相應(yīng)的VB應(yīng)用程序,寫(xiě)入自己相應(yīng)的信息即可。該EEPROM是可選的。若沒(méi)有EEPROM,F(xiàn)T245BM將使用默認(rèn)的VID、PID、產(chǎn)品描述符和電源描述符,并且沒(méi)有設(shè)備的序列號(hào)。
圖3 FT245BM的典型硬件電路
4 軟件編程
當(dāng)FT245BM的USB接 口連接到主機(jī)后,必須在PC機(jī)上安裝一個(gè)由FTDI公司免費(fèi)提供的虛擬串行口VCP(Virtual COM Port)驅(qū)動(dòng)程序。該驅(qū)動(dòng)程序兼容Windows 98/ 98 SE、Windows 2000/ME/XP等不同版本。用戶可以在這虛擬串口上進(jìn)行應(yīng)用程序的開(kāi)發(fā)。該虛擬串口可以像一個(gè)標(biāo)準(zhǔn)的物理串口那樣被訪問(wèn),可本質(zhì)上所有針對(duì)虛擬串口的數(shù)據(jù)通信都是通過(guò)USB總線完成的,在設(shè)備端則通過(guò)并行I/O口完成。
在PC端,應(yīng)用VB對(duì)虛擬串口(通常為COM3)進(jìn)行應(yīng)用編程。我們直接應(yīng)用MSComm控件,將MSComm3.CommPort置為3,MSComm3.Seetings置為“9600,n,8,1”(該速率為默認(rèn)設(shè)置,實(shí)際上VCP驅(qū)動(dòng)程序總是使數(shù)據(jù)以最快速率傳輸);通過(guò)MSComm3.PortOpen設(shè)置COM3的開(kāi)關(guān)狀態(tài);通過(guò)MSComm3.Input和MSComm3.Output讀入或輸出數(shù)據(jù)。在讀取數(shù)據(jù)時(shí),設(shè)置MSComm3.Rthreshold的值為1。只要有數(shù)據(jù)傳到PC機(jī),就立即觸發(fā)MSComm3.CommEvent事件,自動(dòng)讀取COM3的數(shù)據(jù);而發(fā)送數(shù)據(jù)則可自動(dòng)或手動(dòng)發(fā)送,由用戶自己設(shè)置。根據(jù)這些,用戶就可以輕松編寫(xiě)自己的應(yīng)用程序了。
在設(shè)備端,基于萬(wàn)利的Insight SE-52仿真器進(jìn)行編程。根據(jù)圖4所示接收數(shù)據(jù)時(shí)序圖,首先,須采樣到信號(hào)為低,若為低,表明有接收到來(lái)自PC機(jī)的數(shù)據(jù),允許單片機(jī)通過(guò)八位數(shù)據(jù)總線D0~D7讀取數(shù)據(jù)。接著,通過(guò)信號(hào)由低到高的變化鎖存數(shù)據(jù)(讀入數(shù)據(jù))。最后,延遲一段時(shí)間,重新開(kāi)始下一字節(jié)的讀取。軟件流程如圖5所示。發(fā)送數(shù)據(jù)過(guò)程,可根據(jù)圖6所示發(fā)送數(shù)據(jù)時(shí)序圖,同理編寫(xiě)發(fā)送數(shù)據(jù)的程序。設(shè)備程序可以在此基礎(chǔ)上進(jìn)一步開(kāi)發(fā),即用戶根據(jù)自己的具體項(xiàng)目進(jìn)行編程。
5 結(jié) 論
利用FT245BM進(jìn)行USB接口的開(kāi)發(fā),簡(jiǎn)單、容易,開(kāi)發(fā)周期短,易于為工程實(shí)踐所采用;同時(shí),也可以直接用于新產(chǎn)品的開(kāi)發(fā),如數(shù)碼相機(jī)的USB接口、MP3播放器的USB接口及無(wú)線Modem的USB接口等。
評(píng)論