
其外圍電路典型連接如圖3所示。
VBUS是USB的總線電源感知引腳,通過他USB接口控制芯片判斷USB設(shè)備是否接到了P C機(jī)上。外部復(fù)位引腳Reset上電復(fù)位,但PDIUSBD11芯片內(nèi)部提供復(fù)位電路,因此可以將他 接到3.3V上,屏蔽其外部復(fù)位功能。Suspend引腳,他的作用是當(dāng)USB設(shè)備進(jìn)入掛起模式時(shí),輸出 高電平提醒主機(jī),主機(jī)可通過拉低該引腳的電壓來喚醒USB設(shè)備,使用中也可以直接將該引 腳接地,來屏蔽USB設(shè)備的掛起功能。INT_N引腳與單片機(jī)的連接是必不可少的,當(dāng) 主機(jī)需 要與USB設(shè)備通信時(shí),該引腳變成低電平,通知USB設(shè)備進(jìn)入中斷服務(wù)程序,中斷請(qǐng)求結(jié)束后 他又重新變回高電平。因此他通過上拉電阻接正電源,當(dāng)空閑時(shí)處于高電平狀態(tài)。
4固件程序設(shè)計(jì)
單片機(jī)與PDIUSBD11的通信主要是靠單片機(jī)給PDIUSBD11發(fā)命令和數(shù)據(jù)來實(shí)現(xiàn)的。 PDI USBD11的命令字分為3種:初始化命令字、數(shù)據(jù)流命令字 和通用命令字。PDIUSBD11給出了各種命 令的代碼和地址。單片機(jī)先給PDIUSBD11的命令地址發(fā)命令,根據(jù)不同命令的要求再 發(fā)送或讀出不同的數(shù)據(jù)。
當(dāng)單片機(jī)使用專門的I2C接口與PDIUSBD11芯片連接時(shí),可以直接進(jìn)行輸入、輸出通信。但 如果只使用2個(gè)普通的I/O口連接時(shí),需要用軟件模擬I2C接口與PDIUSBD11芯片進(jìn)行通信 ,可將模擬I2C傳輸部分編成子程序,使用時(shí)直接調(diào)用即可。具體編程方法可參照I2C總 線規(guī)范。
USB單片機(jī)控制程序通常由3部分組成:
(1) 初始化單片機(jī)和所有的外圍電路(包括PDIUSBD11芯片);
(2) 主循環(huán)部分,其任務(wù)是可以中斷的;
(3) 中斷服務(wù)程序,其任務(wù)是對(duì)時(shí)間敏感的,必須馬上執(zhí)行。
4.1初始化程序
在編寫初始化程序時(shí)需要注意,由于PDIUSBD11芯片采用Philips的SoftConnectTM技術(shù)設(shè)計(jì)。與USB的連接通過1.5 kΩ上拉電阻將D+(用于高速USB器件)置為高實(shí)現(xiàn)。1.5kΩ上拉電阻集成在PDIUSBD11片內(nèi),默認(rèn)狀態(tài)下不與VCC相連。連接的建立通過 單片機(jī)發(fā)送命令來實(shí)現(xiàn)。這就允許系統(tǒng)微控制器在決定與建立USB連接之前完成初始化時(shí)序 。USB總線連接可以重新初始化而不需要拔出電纜。所以在固件程序中需要編寫芯片初始化 程序,以確保設(shè)備能順利進(jìn)行USB連接。初始化程序范例如下:


按不同的應(yīng)用方式(如遠(yuǎn)程喚醒、掛起功能等),可在Set Mode的第一個(gè)字為PDIUS BD11芯片設(shè)置不同的模式。
4.2中斷服務(wù)程序
根據(jù)USB協(xié)議,任何傳輸都是由主機(jī)(host)開始的,單片機(jī)作他的前臺(tái)工作,等待中斷。主機(jī)首先要發(fā)令牌包給USB設(shè)備(這里是PDIUSBD11),PDIUSBD11接收到令牌包后就給單片 機(jī)發(fā)中斷,單片機(jī)檢測(cè)到INT_N引腳變成低電平后進(jìn)入中斷服務(wù)程序,首先讀PDIUSBD11的中斷寄存器,判斷USB令牌包的類型,然后執(zhí)行相應(yīng)的操作。因此,USB單片機(jī)程序主要就 是中斷 服務(wù)程序的編寫。中斷服務(wù)程序流程圖如圖4所示。PDIUSBD11芯片可支持4個(gè)端點(diǎn)(EP0~3),其中端點(diǎn)0用來對(duì)應(yīng)缺省控制通道并初始化和操縱配置設(shè)備,同時(shí)提供設(shè)備配置信息的 讀取和支持控制傳輸。端點(diǎn)1~3則用于支持塊傳輸和中斷傳輸?shù)取?/font>
具體的固件程序內(nèi)容可參考文獻(xiàn)[4],PDIUSBD12芯片是Philips公司的一款帶并口的USB接口芯片,目前應(yīng)用較廣。
4.3測(cè)試結(jié)果
用PDIUSBD11芯片開發(fā)的USB接口,數(shù)據(jù)的傳輸速率是由單片機(jī)的I2C接口速率決定的。經(jīng)測(cè)試其傳輸速率可達(dá)500 kb/s,遠(yuǎn)高于普通串口的傳輸速率,保持了USB接口的高速性,能滿足一般的非大容量存儲(chǔ)設(shè)備的需要。
5結(jié)語(yǔ)
使用單片機(jī)外加USB接口芯片開發(fā)USB接口,適用于為現(xiàn)有產(chǎn)品開發(fā)USB接口,能盡量避免對(duì) 原有電路及程序的修改,降低了開發(fā)成本和風(fēng)險(xiǎn)。在對(duì)速度要求不太高的情況下,可采用Ph ilips公司的USB接口芯片PDIUSBD11,他特有的I2C接口設(shè)計(jì)可以減少與單片機(jī)的引腳連接 ,簡(jiǎn)化外圍電路設(shè)計(jì)。雖然只有2根數(shù)據(jù)線負(fù)責(zé)數(shù)據(jù)的雙向傳輸,但仍保證了較高的傳輸速 率,能滿足一般的對(duì)速度要求不太高的設(shè)備的需要。





