国产欧美日韩精品a在线观看-国产欧美日韩精品一区二区三区-国产欧美日韩精品综合-国产欧美中文字幕-一区二区三区精品国产-一区二区三区精品国产欧美

ACS880-07C
關(guān)注中國自動(dòng)化產(chǎn)業(yè)發(fā)展的先行者!
隨著會(huì)計(jì)的發(fā)展,追蹤碳足跡
CAIAC 2025
2024
工業(yè)智能邊緣計(jì)算2024年會(huì)
2023年工業(yè)安全大會(huì)
OICT公益講堂
當(dāng)前位置:首頁 >> 案例 >> 案例首頁

案例頻道

基于USB HOST的便攜式環(huán)境參數(shù)監(jiān)測儀的設(shè)計(jì)
  • 企業(yè):控制網(wǎng)     領(lǐng)域:運(yùn)動(dòng)控制與伺服系統(tǒng)     行業(yè):其他    
  • 點(diǎn)擊數(shù):2489     發(fā)布時(shí)間:2007-06-16 23:45:13
  • 分享到:
本文提出一種基于USB HOST技術(shù)設(shè)計(jì)的環(huán)境監(jiān)測儀。嵌入式USB主機(jī)系統(tǒng)采用SM5964單片機(jī)加上USB主從芯片CH375的結(jié)構(gòu),實(shí)現(xiàn)USB1.1主機(jī)協(xié)議和USB mass storage類,從而通過其對U盤的各種操作并將環(huán)境參數(shù)(聲音響度,溫度)存入U(xiǎn)盤。



0 引言

    USB(通用串行總線),是近年來逐步在PC領(lǐng)域廣為應(yīng)用的新型接口技術(shù),廣泛地應(yīng)用于PC機(jī)以及嵌入式系統(tǒng)上。目前市場上的USB設(shè)備, 除計(jì)算機(jī)是主機(jī)接口外,其他多數(shù)為從機(jī)接口, 如打印機(jī)、U 盤等,然而USB 的拓?fù)浣Y(jié)構(gòu)中居于核心地位的是Host (也稱為主機(jī)) , 任何一次USB的數(shù)據(jù)傳輸都必須由主機(jī)來發(fā)起和控制,DEVICE (從機(jī)或設(shè)備) 只能響應(yīng)主機(jī)的請求,任何2個(gè)外設(shè)之間或是2個(gè)主機(jī)之間無法直接通信。隨著USB應(yīng)用領(lǐng)域的逐漸擴(kuò)大,人們對于USB的期望也越來越高,希望USB能應(yīng)用在沒有PC的領(lǐng)域中,基于USB HOST的開發(fā)應(yīng)用也越來越廣泛。筆者考慮到傳統(tǒng)的環(huán)境監(jiān)測儀多利用RS485實(shí)現(xiàn)與PC主機(jī)的有線遠(yuǎn)程數(shù)據(jù)傳輸,使得監(jiān)測儀的工作場合和便攜性受到相當(dāng)大的限制,在本文中提出一種新型環(huán)境參數(shù)監(jiān)測儀,它配置兩路音頻和溫度傳感器,以USB HOST系統(tǒng)為核心,以U盤為數(shù)據(jù)存儲(chǔ)媒介,不受場合限制隨時(shí)隨地實(shí)現(xiàn)環(huán)境參數(shù)(環(huán)境噪音響度,溫度)的采集、處理、存儲(chǔ)和通信等功能;更有助于準(zhǔn)確地建立環(huán)境參數(shù)的演變數(shù)據(jù)庫,為環(huán)境的監(jiān)控和整改提供客觀依據(jù);便于攜帶,成本低廉,有較強(qiáng)的市場前景。

1 環(huán)境監(jiān)測儀的設(shè)計(jì)

    1.1 系統(tǒng)概述

    環(huán)境監(jiān)測儀對環(huán)境參數(shù)的處理可分為信號采集和數(shù)據(jù)處理兩部分,與此相對應(yīng),環(huán)境監(jiān)測儀主要由環(huán)境參數(shù)采集電路和USB主機(jī)兩個(gè)部分組成。整體結(jié)構(gòu)框圖見圖1:



圖 1  整體結(jié)構(gòu)框圖


          
    1.2 環(huán)境參數(shù)采集電路設(shè)計(jì)

    以DS18B20單線數(shù)字溫度傳感器,MCA-BTA聲音傳感器加上高速A/D構(gòu)成了系統(tǒng)的環(huán)境參數(shù)采集電路。

    DS18B20數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,線路簡單(三個(gè)引腳GND,DQ:數(shù)字信號輸入輸出端,VDD),體積小;只要求一個(gè)端口即可實(shí)現(xiàn)通信;不需要外部任何元器件即可實(shí)現(xiàn)測溫,范圍在-55℃到+125℃之間;可以通過寄生電源或者外部電源兩種供電方式工作。因此完全符合便利地對現(xiàn)場溫度測量的要求。需要注意的是,在寄生電源接線模式下,必須確保電源電壓汲取能量充足,否則會(huì)導(dǎo)致測量溫度偏高,誤差量較大。

    MCA-MTA聲音傳感器由美國Vernier公司生產(chǎn),使用的是與人類耳朵相似具有頻率反應(yīng)的電麥克風(fēng)。它的工作原理為:聲壓訊號→傳感器→電壓訊號→放大器→計(jì)權(quán)網(wǎng)絡(luò)dB值。  

    為增加檢測信息的實(shí)用性,USB主機(jī)系統(tǒng)設(shè)計(jì)中加了一個(gè)日歷時(shí)鐘模塊:DS 12C887。DS 12C887 能夠自動(dòng)產(chǎn)生世紀(jì)、年、月、日、時(shí)、分、秒等時(shí)間信息; 具有標(biāo)準(zhǔn)的并行總線口, 可以方便與單片機(jī)連接。

    1.3 嵌入式USB主機(jī)硬件結(jié)構(gòu)設(shè)計(jì)

    1.3.1 硬件要求

    USB主機(jī)是本監(jiān)測儀開發(fā)中的重點(diǎn)和核心。設(shè)計(jì)嵌入式USB主機(jī)電路要遵循USB主機(jī)的協(xié)議規(guī)范,具體在硬件設(shè)計(jì)上要選擇USB主機(jī)的接口芯片,并且要選用合適的MCU(單片機(jī)或微控制器)或MPU(微處理器)來控制。因?yàn)檎麄€(gè)USB協(xié)議框架非常復(fù)雜,所以就需要MCU具有較大的內(nèi)部RAM,用以處理大量的數(shù)據(jù)緩沖區(qū),變量,數(shù)據(jù)存儲(chǔ)等等;其次系統(tǒng)要有大量的程序存儲(chǔ)區(qū),一般FLASH的需求大概是在10K至60K。

    1.3.2 CH375簡介

    CH375是一個(gè)USB總線的通用接口芯片,支持HOST主機(jī)方式和SLAVE 設(shè)備方式。CH375的USB主機(jī)方式支持各種常用的USB全速設(shè)備,外部單片機(jī)/DSP/MCU可以通過CH375按照相應(yīng)的USB 協(xié)議與USB 設(shè)備通訊。CH375還內(nèi)置了處理Mass Storage海量存儲(chǔ)設(shè)備的專用通訊協(xié)議的固件,外部單片機(jī)/DSP/MCU可以直接以扇區(qū)為基本單位讀寫常用的USB 存儲(chǔ)設(shè)備(包括USB硬盤/USB閃存盤/U盤)。
CH375芯片內(nèi)部集成了PLL倍頻器、主從USB接口SIE、數(shù)據(jù)緩沖區(qū)、被動(dòng)并行接口、異步串行接口、命令解釋器、控制傳輸?shù)膮f(xié)議處理器、通用的固件程序等。對于USB存儲(chǔ)設(shè)備的應(yīng)用,CH375直接提供了數(shù)據(jù)塊的讀寫接口,以512b的物理扇區(qū)為基本讀寫單位,從而將USB存儲(chǔ)設(shè)備簡化為一種外部數(shù)據(jù)存儲(chǔ)器,單片機(jī)可以自由讀寫USB存儲(chǔ)設(shè)備中的數(shù)據(jù),也可以自由定義其數(shù)據(jù)結(jié)構(gòu)。

    1.3.3 CPU的選擇

    CH375的文件級子程序庫(實(shí)現(xiàn)FAT文件系統(tǒng)層,詳細(xì)請見軟件設(shè)計(jì))需要大約600字節(jié)的隨機(jī)存儲(chǔ)器RAM作為緩沖區(qū)。鑒于采用MCS51內(nèi)核, 且與AT89C52兼容的SM 5964單片機(jī)內(nèi)部嵌有64KB的flash和1KB的SRAM,為USB主機(jī)協(xié)議的實(shí)現(xiàn)提供了足夠的代碼空間和數(shù)據(jù)存儲(chǔ)區(qū),無須擴(kuò)展外部RAM,簡化了硬件層面的設(shè)計(jì),而且抗干擾能力較強(qiáng),溫度范圍寬,在目前市場上性價(jià)比較高,嵌入式USB主機(jī)CPU采用SM 5964。

    1.3.4 連接電路

    CH375工作于主機(jī)模式時(shí),分為串行方式與并行方式兩種。我們這里采用串行方式,這種的連線相對比較簡單。如果CH375芯片的TXD引腳懸空(待接單片機(jī))或者沒有通過下拉電阻接地,那么CH375工作于串口方式。在串口方式下,CH375只需要與單片機(jī)/DSP/MCU連接3個(gè)信號線,TXD引腳、RXD引腳以及INT#引腳,其它引腳都可以懸空,就可以進(jìn)行較遠(yuǎn)距離的點(diǎn)對點(diǎn)連接。CH375芯片的RXD 和TXD分別連接到單片機(jī)的串行數(shù)據(jù)輸出引腳和串行數(shù)據(jù)輸入引腳。INT#輸出的中斷請求是低電平有效,用于通知單片機(jī)(見圖2)。

    CH375 的串行數(shù)據(jù)格式是1個(gè)起始位、9個(gè)數(shù)據(jù)位、1個(gè)停止位,其中前8個(gè)數(shù)據(jù)位是一個(gè)字節(jié)數(shù)據(jù),最后1個(gè)數(shù)據(jù)位是命令標(biāo)志位。第9位為0時(shí),前8位的數(shù)據(jù)被寫入CH375芯片中,第9位為1時(shí),前8位被作為命令碼寫入CH375芯片中。CH375的串行通訊波特率默認(rèn)是 9600 bps,單片機(jī)可以隨時(shí)通過SET_BAUDRATE 命令選擇合適的通訊波特率。



圖 2 串口方式下CH375與單片機(jī)連接示意圖

  
    1.4 嵌入式USB主機(jī)的軟件設(shè)計(jì)

    嵌入式USB主機(jī)主要實(shí)現(xiàn)USB設(shè)備的熱插拔檢測、設(shè)備重啟、讀取設(shè)備的各種描述符等USB1.1協(xié)議規(guī)范, 并實(shí)現(xiàn)USB Mass Storage 類。Mass Storage 類主要用于為軟磁盤接口、ATA接口、硬盤接口及FLASH存儲(chǔ)器等設(shè)備建立的USB接口。
在USB主機(jī)方式下,CH375支持各種常用的USB全速設(shè)備,以中斷方式通知外部單片機(jī)(SM5964)進(jìn)行處理,中斷邏輯圖如圖3。單片機(jī)需要編寫固件程序按照相應(yīng)的USB協(xié)議與USB設(shè)備通訊。



圖 3   主機(jī)方式下CH375中斷邏輯圖

    
    單片機(jī)處理USB存儲(chǔ)設(shè)備的文件系統(tǒng)需要實(shí)現(xiàn)圖3左邊的4個(gè)層次,右邊是USB存儲(chǔ)設(shè)備的內(nèi)部結(jié)構(gòu)層次。CH375不僅是一個(gè)通用的USB-HOST硬件接口芯片,還內(nèi)置了相關(guān)的固件程序,包含了圖4左邊的3個(gè)層次(深色),所以實(shí)際的單片機(jī)程序主要處理FAT文件系統(tǒng)層。



圖 4 處理USB存儲(chǔ)設(shè)備文件系統(tǒng)示意圖

    在上圖中的SCSI,UFI,RBC都是Mass Storage類的子類,都有自己的協(xié)議,應(yīng)用于不盡相同的設(shè)備。他們通過命令的形式實(shí)現(xiàn)各種功能,而這些命令都是各子類所特有的。在USB進(jìn)行數(shù)據(jù)傳輸?shù)臅r(shí)候,這些命令都被打包成一系列的命令包進(jìn)行傳輸。真正與Mass Storage的傳輸方式相關(guān)的是其傳輸協(xié)議,在這里為BULK-ONLY傳輸協(xié)議。有關(guān)Mass Storage類的標(biāo)準(zhǔn)描述符在傳輸協(xié)議中實(shí)現(xiàn)。

    FAT文件系統(tǒng)層可以由CH375的U盤文件級子程序庫實(shí)現(xiàn)。該子程序庫提供了USB存儲(chǔ)設(shè)備的文件級接口,這些應(yīng)用層接口API包含了常用的文件級操作,可以移植并嵌入到SM5964單片機(jī)程序中。CH375的U盤文件級子程序庫具有以下特性:支持常用的FAT16和FAT32文件系統(tǒng),磁盤容量可達(dá)100GB以上,支持多級子目錄,支持8.3格式的大寫字母文件名,支持文件打開、新建、刪除、讀寫以及搜索等。

    綜上所述,分層次程序段示例如下:

    #define  UINT8     unsigned char
    #define  UINT16    unsigned short
    #define  UINT32    unsigned long
    #define  UINT8X    unsigned char xdata
    #define  UINT8VX   unsigned char volatile xdata
    UINT8VX    CH375_CMD_PORT _at_ 0xBDF1;  /* CH375命令端口的I/O地址 */
    UINT8VX    CH375_DAT_PORT _at_ 0xBCF0;  /* CH375數(shù)據(jù)端口的I/O地址 */
    #define    CH375_INT_WIRE    INT0       /* P3.2, 連接CH375的INT#引腳,用于查詢中斷狀態(tài) */
    UINT8X     DISK_BUFFER[512*32] _at_ 0x0000;  /* 外部RAM數(shù)據(jù)緩沖區(qū)的起始地址 */
    UINT32  DiskStart;    /* 邏輯盤的起始絕對扇區(qū)號LBA */
    UINT8   SecPerClus;   /* 邏輯盤的每簇扇區(qū)數(shù) */
    UINT8   RsvdSecCnt;   /* 邏輯盤的保留扇區(qū)數(shù) */
    UINT16  FATSz16;      /* FAT16邏輯盤的FAT表占用的扇區(qū)數(shù) */
    /* ********** 硬件USB接口層*/
    void  mDelaymS( UINT8 delay ) {
    UINT8  i, j, c;
    for ( i = delay; i != 0; i -- ) {
    for ( j = 200; j != 0; j -- ) c + = 3;
    for ( j = 200; j != 0; j -- ) c + = 3;
    }
    }
    void CH375_WR_CMD_PORT( UINT8 cmd ) {  /* 向CH375的命令端口寫入命令 */
    CH375_CMD_PORT=cmd;
    for ( cmd = 2; cmd != 0; cmd -- );  /* 發(fā)出命令碼前后應(yīng)該各延時(shí)2uS */
    }
    void CH375_WR_DAT_PORT( UINT8 dat ) {  /* 向CH375的數(shù)據(jù)端口寫入數(shù)據(jù) */
    CH375_DAT_PORT=dat;          /* 因?yàn)閱纹瑱C(jī)較慢所以實(shí)際上無需延時(shí) */
    }
    UINT8 CH375_RD_DAT_PORT( void ) {    /* 從CH375的數(shù)據(jù)端口讀出數(shù)據(jù) */
    return( CH375_DAT_PORT );      /* 因?yàn)閱纹瑱C(jī)較慢所以實(shí)際上無需延時(shí) */
    }
    UINT8 mWaitInterrupt( void ) {  /* 等待CH375中斷并獲取狀態(tài),返回操作狀態(tài) */
    while( CH375_INT_WIRE );  /* 查詢等待CH375操作完成中斷(INT#低電平) */
    CH375_WR_CMD_PORT( CMD_GET_STATUS );  /* 產(chǎn)生操作完成中斷,獲取中斷狀態(tài) */
    return( CH375_RD_DAT_PORT( ) );
    }
    /* ********** BulkOnly傳輸協(xié)議層,被CH375內(nèi)置了,無需編寫單片機(jī)程序 */
    /* ********** RBC/SCSI命令層,雖然被CH375內(nèi)置了,但是要寫程序發(fā)出命令及收發(fā)數(shù)據(jù)  */
    UINT8  mInitDisk( void ) {  /* 初始化 */
    UINT8 Status;
    CH375_WR_CMD_PORT( CMD_GET_STATUS );  /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */
    Status = CH375_RD_DAT_PORT( );
    if ( Status == USB_INT_DISCONNECT ) return( Status );  /* USB設(shè)備斷開 */
    CH375_WR_CMD_PORT( CMD_DISK_INIT );  /* 初始化USB存儲(chǔ)器 */
    Status = mWaitInterrupt( );  /* 等待中斷并獲取狀態(tài) */
    if ( Status != USB_INT_SUCCESS ) return( Status );  /* 出現(xiàn)錯(cuò)誤 */
    CH375_WR_CMD_PORT( CMD_DISK_SIZE );  /* 獲取USB存儲(chǔ)器的容量 */
    Status = mWaitInterrupt( );  /* 等待中斷并獲取狀態(tài) */
    if ( Status != USB_INT_SUCCESS ) {  /* 出錯(cuò)重試 */
    mDelaymS( 250 );
    CH375_WR_CMD_PORT( CMD_DISK_SIZE );  /* 獲取USB存儲(chǔ)器的容量 */
    Status = mWaitInterrupt( );  /* 等待中斷并獲取狀態(tài) */
    }
    if ( Status != USB_INT_SUCCESS ) return( Status );  /* 出現(xiàn)錯(cuò)誤 */
    return( 0 );  /* U盤已經(jīng)成功初始化 */
    }
    UINT8  mReadSector( UINT32 iLbaStart, UINT8 iSectorCount, UINT8X *oDataBuffer )
    {
    UINT16  mBlockCount;
    UINT8  c;
    CH375_WR_CMD_PORT( CMD_DISK_READ );  /* 從USB存儲(chǔ)器讀數(shù)據(jù)塊 */
    CH375_WR_DAT_PORT( (UINT8)iLbaStart );  /* LBA的最低8位 */
    CH375_WR_DAT_PORT( (UINT8)( iLbaStart >> 8 ) );
    CH375_WR_DAT_PORT( (UINT8)( iLbaStart >> 16 ) );
    CH375_WR_DAT_PORT( (UINT8)( iLbaStart >> 24 ) );  /* LBA的最高8位 */
    CH375_WR_DAT_PORT( iSectorCount );  /* 扇區(qū)數(shù) */
    for ( mBlockCount = iSectorCount * 8; mBlockCount != 0; mBlockCount -- ) {
    c = mWaitInterrupt( );  /* 等待中斷并獲取狀態(tài) */
    if ( c == USB_INT_DISK_READ ) {  /* 等待中斷并獲取狀態(tài),請求數(shù)據(jù)讀出 */
    CH375_WR_CMD_PORT( CMD_RD_USB_DATA );  /* 從CH375緩沖區(qū)讀取數(shù)據(jù)塊 */
    c = CH375_RD_DAT_PORT( );  /* 后續(xù)數(shù)據(jù)的長度 */
    while ( c -- ) *oDataBuffer++ = CH375_RD_DAT_PORT( );
    CH375_WR_CMD_PORT( CMD_DISK_RD_GO );  /* 繼續(xù)執(zhí)行USB存儲(chǔ)器的讀操作 */
    }
    else break;  /* 返回錯(cuò)誤狀態(tài) */
    }
    if ( mBlockCount == 0 ) {
    c = mWaitInterrupt( );  /* 等待中斷并獲取狀態(tài) */
    if ( c== USB_INT_SUCCESS ) return( 0 );  /* 操作成功 */
    }
    return( c );  /* 操作失敗 */
    }
  
    FAT文件系統(tǒng)層的程序量較大,主要包括下列函數(shù): mIdenDisk,識別分析當(dāng)前邏輯盤;mLinkCluster,獲得指定簇號的鏈接簇,輸入:當(dāng)前簇號, 返回:原鏈接簇號, 如果為0則說明錯(cuò)誤;mStopIfError,若錯(cuò)誤則停止運(yùn)行并顯示錯(cuò)誤狀態(tài),等等,在此不予詳述。

2  工作流程

    基于嵌入式USB主機(jī)的交通監(jiān)測儀的工作流程見圖5:



圖 5 工作流程圖


    在實(shí)際測試中,將采集到的環(huán)境參數(shù)以“.txt”方式存儲(chǔ),目標(biāo)盤為64M和128M的U盤,成功存入自定的文件“Data.txt”,支持文件續(xù)寫和重定義文件名,并可在PC中打開該文件,也可以直接用上層測控軟件進(jìn)行進(jìn)一步的處理。

3  結(jié)束語

    本系統(tǒng)設(shè)計(jì)充分體現(xiàn)了便攜,可靠,實(shí)用的優(yōu)點(diǎn),可為城市環(huán)境規(guī)劃提供充分的數(shù)據(jù)參考。隨著進(jìn)一步的實(shí)際應(yīng)用,仍然有改進(jìn)的余地,如可以擴(kuò)展多路傳感器,測量如包括氣壓、二氧化碳濃度等其他環(huán)境參數(shù);相應(yīng)地,提高存儲(chǔ)容量;還可以考慮構(gòu)建區(qū)域服務(wù)器以增加效率等等。

參考文獻(xiàn):

[1] 馬偉 計(jì)算機(jī)USB系統(tǒng)原理及其主從機(jī)設(shè)計(jì) 北京:北京航空航天大學(xué)出版社,2004,94~98

[2] 張慧 USB ON-THE-GO技術(shù)及應(yīng)用 工業(yè)控制計(jì)算機(jī)學(xué)報(bào),2005,18,10

[3] 嵌入式USB-HOST解決方案[DB/OL] http://www.broadmaking.com,2002,6

熱點(diǎn)新聞

推薦產(chǎn)品

x
  • 在線反饋
1.我有以下需求:



2.詳細(xì)的需求:
姓名:
單位:
電話:
郵件:
主站蜘蛛池模板: 欧美一区二区精品系列在线观看 | 国产呦精品一区二区三区网站 | 国产乱弄视频在线观看 | 高清一本之道加勒比在线 | 欧美成人高清 | 天堂精品高清1区2区3区 | 一色屋精品亚洲香蕉网站 | 2020国产精品 | 欧美5g影院天天爽天天看 | 永久免费观看午夜视频在线 | 中国国产成人精品久久 | 一 级做人爱全视频在线看 一本不卡 | 91久国产在线观看 | 美国一级毛片片aa久久综合 | 美女黄页网站 | 欧美视频一区二区在线观看 | 亚洲综合一区二区不卡 | 亚洲精品一区二区中文 | a级毛片高清免费视频 | 国产99久久久久久免费看 | 国产三级中文字幕 | 一级毛片儿 | 久久99精品久久久久久三级 | 91大神大战丝袜美女在线观看 | 欧美一级毛片欧美一级无片 | 91久久99热青草国产 | 一本色道久久爱88av | 久久国产成人午夜aⅴ影院 久久国产成人亚洲精品影院老金 | 波多野结衣一区二区三区高清在线 | 草草日 | 性色aⅴ在线观看swag | 久久精品a一国产成人免费网站 | 国产韩国精品一区二区三区久久 | 中文字幕视频免费在线观看 | 九九久久视频 | 精品视频一区二区三区四区 | 久久久久国产成人精品 | 在线亚洲精品自拍 | 久久国产三级 | 精品呦女 | 加勒比久久综合 |