數(shù)字溫溫度記錄儀中的USB主機(jī)設(shè)計(jì)
關(guān)鍵詞 數(shù)字溫濕度傳感器HygroClip USB主機(jī)MSP430F1611
引 言
在USB拓?fù)浣Y(jié)構(gòu)中PC機(jī)扮演著核心作用,沒(méi)有PC機(jī)的參與,USB設(shè)備將無(wú)用武之地;但隨著USB-OTG規(guī)范的提出和USB主機(jī)接口芯片的產(chǎn)出,USB主機(jī)逐漸應(yīng)用到各種場(chǎng)合中,如數(shù)碼伴侶、打印機(jī)等。目前,大多數(shù)的溫濕度記錄儀都是通過(guò)單片機(jī)的A/D模塊多次采樣.經(jīng)過(guò)軟件濾波,得到一個(gè)均值,然后再通過(guò)模擬傳感器的數(shù)據(jù)校正表?yè)Q算出實(shí)際的溫濕度,而且都是通過(guò)串口與上位機(jī)進(jìn)行通信,上位機(jī)需要編寫一個(gè)數(shù)據(jù)分析軟件來(lái)設(shè)置記錄儀的工作模式,并對(duì)記錄的歷史數(shù)據(jù)進(jìn)行分析與處理。根據(jù)對(duì)以往記錄儀的分析和對(duì)USB-OTG技術(shù)的深入研究,提出了數(shù)字溫濕度記錄儀系統(tǒng)中USB主機(jī)設(shè)計(jì)的實(shí)現(xiàn)方案。將USB主機(jī)嵌入到數(shù)字溫濕度記錄儀系統(tǒng)中,把對(duì)記錄儀的設(shè)置預(yù)先寫到USB磁盤上,再將USB磁盤插到記錄儀上,分別按下讀/寫按鍵,記錄儀分別完成讀取磁盤上的配置和將記錄數(shù)據(jù)寫到USB磁盤上。下面詳細(xì)分析其硬件設(shè)計(jì)和軟件實(shí)現(xiàn)過(guò)程。
1 硬件設(shè)計(jì)
記錄儀系統(tǒng)硬件結(jié)構(gòu)如圖1所示。該系統(tǒng)主要完成采集、顯示和記錄數(shù)據(jù),并驅(qū)動(dòng)USB磁盤,在單片機(jī)上實(shí)現(xiàn)讀寫USB磁盤功能。整個(gè)系統(tǒng)硬件主要由一個(gè)主控芯片、數(shù)字溫濕度傳感器、USB主機(jī)接口芯片、E2PROM、LCD液晶顯示器等構(gòu)成。系統(tǒng)由電池供電,無(wú)論是硬件設(shè)計(jì)還是軟件編程都要考慮功耗問(wèn)題,所以主控芯片選用超低功耗的MSP430F1611單片機(jī),結(jié)合軟件編程能延長(zhǎng)電池壽命。數(shù)字溫濕度傳感器選用的是Rotronic公司的HygroC1ip,USB主機(jī)芯片選用Philips公司的ISPl362。
1.1 數(shù)字溫濕度傳感器HygroClip
HygroClip是一種數(shù)字溫濕度傳感器,具有5根線:電源、地、溫度輸出、濕度輸出、數(shù)字輸入/輸出。供電電壓需要5 V,而整個(gè)系統(tǒng)的工作電壓小于5 V,所以要外加有使能端輸出為5V的升壓器,使能端由MSP430F1611的普通I/O口控制,這樣可以有選擇地使傳感器工作,有利于降低系統(tǒng)功耗。傳感器主要由AIRCHIP2000和Micro-Controller/E2PROM兩部分構(gòu)成。AIRcHIP2000中的集成電路負(fù)責(zé)測(cè)量溫濕度,并將它們轉(zhuǎn)換為數(shù)字量;D/A轉(zhuǎn)換器將MicroController發(fā)出的數(shù)據(jù)轉(zhuǎn)為模擬輸出。MicroController根據(jù)數(shù)字量算出溫濕度的實(shí)際值,通過(guò)數(shù)字輸出線發(fā)送到MSP430F16ll中。E2PROM用來(lái)保存校正數(shù)據(jù)、傳感器數(shù)據(jù)等。HygroClip與MSP430F1611傳輸數(shù)據(jù)通過(guò)數(shù)據(jù)輸入/輸出線來(lái)完成,所以是一位一位地發(fā)送數(shù)據(jù),發(fā)送8位代表發(fā)完1個(gè)字節(jié),有點(diǎn)類似于串口通信協(xié)議。串口通信協(xié)議規(guī)定如下:先發(fā)送同步頭,當(dāng)HygroC1ip接入系統(tǒng)3秒鐘后,自動(dòng)進(jìn)入發(fā)送溫濕度數(shù)據(jù)狀態(tài),單片機(jī)檢測(cè)到其下降沿中斷,然后開(kāi)啟上升沿中斷,啟動(dòng)定時(shí)器計(jì)數(shù),計(jì)算進(jìn)入上升沿中斷的時(shí)間。若在800μs左右,表示可能是同步頭,此時(shí)開(kāi)下降沿中斷,并重計(jì)定時(shí)器的時(shí)間。若在4700μs左右,則表示抓到同步頭。該下降沿標(biāo)志著第一位發(fā)送數(shù)據(jù)的開(kāi)始,經(jīng)過(guò)200μs查看接收位的狀態(tài),為“1”表示收到的是“1”,為“0”表示收到的就是“0”。其數(shù)字輸入/輸出引腳的波形如圖2所示。
1.2 ISPl362簡(jiǎn)介
ISPl362是Philips公司推出的USB芯片。它在單芯片上集成了OTG控制器、主機(jī)控制器、設(shè)備控制器、USB收發(fā)器、OTG收發(fā)器和緩存器等。OTG控制器完全兼容USB2.0及On-The-Go Supplement 1.0協(xié)議,支持OTG標(biāo)準(zhǔn)要求的所有功能。在OTG模式下工作時(shí),可通過(guò)主機(jī)通信協(xié)議HNP實(shí)現(xiàn)主機(jī)和外設(shè)兩種功能的轉(zhuǎn)化,并支持對(duì)話請(qǐng)求協(xié)議SNP。主機(jī)和設(shè)備控制器遵守USB2.O協(xié)議,支持1.5 Mb/s的低速傳輸和12 Mb/s的全速傳輸。當(dāng)作為設(shè)備控制器時(shí),具有兩個(gè)控制端點(diǎn),且能利用14個(gè)端點(diǎn)進(jìn)行四種傳輸類型的任意類型。ISP1362還集成了計(jì)時(shí)器及支持OTG功能所需要的模擬元件,而且內(nèi)部還有一個(gè)鎖相環(huán)PLL,因此可以選用12MHz的晶振,既降低了成本,又降低了EMI。ISP1362支持內(nèi)置電源供電及外部電源供電兩種模式。對(duì)于較低功耗的應(yīng)用設(shè)計(jì),可用內(nèi)部集成的電荷泵激勵(lì)器;而如果應(yīng)用系統(tǒng)的功耗較高,則要用外部電源供電。ISPl362還提供2個(gè)USB端口。端口1可進(jìn)行軟件配置,并可用作下行、上行OTG端口。作為OTG端口,端口1可在主機(jī)或外設(shè)模式下工作,并可通過(guò)HNP或布線變化來(lái)動(dòng)態(tài)轉(zhuǎn)換角色。端口2只用作下行傳輸。ISPl362的接口電路如圖3所示。
1.3 MSP430F1611簡(jiǎn)介
MSP430F1611是TI公司推出的一款16位超低功耗單片機(jī),工作電源電壓為1.8~3.6 V,可用電池工作,而且可以有很長(zhǎng)的使用時(shí)間;具有16位RISC結(jié)構(gòu),CPU中的16個(gè)寄存器和常數(shù)發(fā)生器使MSP430微控制器能達(dá)到最高的代碼效率;靈活的時(shí)鐘源可以使器件達(dá)到最低的功耗;具有5種省電模式,在lMHz的時(shí)鐘條件下運(yùn)行,耗電電流(0.1~400 μA)因不同的工作模式而不同;數(shù)字控制振蕩器(DCO)可使器件從低功耗模式迅速喚醒,在少于6μs的時(shí)間內(nèi)激活到活躍的工作方式;支持串行在系統(tǒng)編程和安全熔絲的程序代碼保護(hù),內(nèi)部具有10KB容量的RAM,可以存放大容量中間數(shù)據(jù)和變量。
2 軟件設(shè)計(jì)
整個(gè)系統(tǒng)軟件分為用戶程序和uSB主機(jī)軟件兩部分,USB主機(jī)軟件為用戶程序提供軟件接口。當(dāng)記錄儀需要讀寫USB磁盤時(shí),調(diào)用接口發(fā)送讀寫命令即可實(shí)現(xiàn)。用戶程序集成初始化、采集、顯示、記錄等子程序。初始化單片機(jī)與其外圍模塊;采集程序負(fù)責(zé)將數(shù)字溫濕度傳感器的脈沖輸入轉(zhuǎn)換為溫濕度的值;顯示程序則將采集到的數(shù)據(jù)通過(guò)液晶顯示器顯示出來(lái),顯示頻率可以設(shè)置;記錄程序?qū)⒉杉臄?shù)據(jù)寫到F2PROM保存,掉電不丟失,從而要通過(guò)I/O口模擬I2C協(xié)議實(shí)現(xiàn)讀寫32PROM,USB主機(jī)軟件集成USB主機(jī)控制器驅(qū)動(dòng)程序(HCD)、USB驅(qū)動(dòng)程序(USBD)和MassStorage類驅(qū)動(dòng)程序。HCD負(fù)責(zé)完成對(duì)USB主機(jī)控制器ISPl362配置和工作管理,通過(guò)數(shù)據(jù)線上的電平變化檢測(cè)到USB設(shè)備的接入和拔出,如ISPl362的初始化、設(shè)置ISPl362的寄存器實(shí)現(xiàn)鏈路級(jí)數(shù)據(jù)傳輸?shù)?。USBD是整個(gè)主機(jī)軟件的核心部分,相當(dāng)于PC機(jī)上USB主機(jī)的核心驅(qū)動(dòng)程序,按照USB協(xié)議合理調(diào)用HCD來(lái)獲取設(shè)備、配置、接口及端點(diǎn)描述符,然后對(duì)USB設(shè)備設(shè)置地址并與之通信,從而識(shí)別并判斷USB設(shè)備是否屬于Mass Storage類。Mass Storage類驅(qū)動(dòng)程序包括Bulk_Only傳輸協(xié)議的實(shí)現(xiàn)以及在協(xié)議實(shí)現(xiàn)的基礎(chǔ)上發(fā)送特定的請(qǐng)求命令,進(jìn)而對(duì)USB磁盤上的F1ash進(jìn)行讀和寫,從USB磁盤上讀取對(duì)記錄儀的配置,并將記錄儀保存的數(shù)據(jù)寫到USB磁盤上供上位機(jī)分析處理。
為了將系統(tǒng)的功耗降到最低,僅僅在硬件設(shè)計(jì)上考慮是遠(yuǎn)遠(yuǎn)不夠的,還需要設(shè)計(jì)低功耗的軟件來(lái)配合硬件工作,才能達(dá)到理想的目標(biāo)。在本系統(tǒng)中,為了降低功耗,將用戶程序和USB主機(jī)軟件進(jìn)行整理和優(yōu)化,分成主程序、看門狗中斷子程序和USB主機(jī)程序三大模塊。主程序負(fù)責(zé)初始化、開(kāi)中斷后進(jìn)入低功耗工作模式,然后一直等待中斷,看門狗中斷程序負(fù)責(zé)采集數(shù)據(jù)、顯示數(shù)據(jù)、保存數(shù)據(jù)等功能,因?yàn)橛涗泝x需要不斷的采集、顯示和保存,所以要周期性地進(jìn)入中斷。采集、顯示和保存這三個(gè)事件不是同步的,每次進(jìn)入中斷后都會(huì)采集數(shù)據(jù),但是達(dá)到顯示和保存條件之后分別進(jìn)入相應(yīng)的處理,而且顯示和保存的時(shí)間參數(shù)是通過(guò)USB磁盤配置得到的,可以更改。讀寫中斷子程序負(fù)責(zé)判斷按鍵類型,在Mass Storage類驅(qū)動(dòng)程序基礎(chǔ)上建立一個(gè)FAT文件系統(tǒng),支持FATl6/FAT32兩種文件格式,以文件的形式統(tǒng)一管理USB磁盤上的內(nèi)容。各個(gè)程序流程如圖4至圖6所示。
3 結(jié)論
將USB主機(jī)應(yīng)用到數(shù)字溫濕度記錄儀系統(tǒng)中;使用數(shù)字傳感器可大大提高記錄的精度,記錄儀通過(guò)USB磁盤就可上傳配置和下載數(shù)據(jù),可去除對(duì)PC機(jī)的依賴,擴(kuò)大應(yīng)用范圍,具有很好的擴(kuò)展性;使用超低功耗單片機(jī)大大降低系統(tǒng)的功率,延長(zhǎng)電池的壽命。
評(píng)論