《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 嵌入式技術(shù) > 設(shè)計應(yīng)用 > 一種基于單片機(jī)系統(tǒng)的移動存儲器的設(shè)計與應(yīng)用
一種基于單片機(jī)系統(tǒng)的移動存儲器的設(shè)計與應(yīng)用
來源:微型機(jī)與應(yīng)用2012年第1期
梁西銀,馬小倩,蘭建平
(西北師范大學(xué) 物理與電子工程學(xué)院,甘肅 蘭州 730070)
摘要: 設(shè)計了一種基于單片機(jī)系統(tǒng)的數(shù)據(jù)采集移動存儲器,其容量可達(dá)幾兆位,傳輸速度可達(dá)1 Mb/s。為更好地解決智能儀器中非實時數(shù)據(jù)的采集、存儲以及與計算機(jī)之間數(shù)據(jù)交換的問題提供了一種新的方法和思路。
Abstract:
Key words :

摘  要: 設(shè)計了一種基于單片機(jī)系統(tǒng)的數(shù)據(jù)采集移動存儲器,其容量可達(dá)幾兆位,傳輸速度可達(dá)1 Mb/s。為更好地解決智能儀器中非實時數(shù)據(jù)的采集、存儲以及與計算機(jī)之間數(shù)據(jù)交換的問題提供了一種新的方法和思路。
關(guān)鍵詞: 移動存儲器;I2C總線;EEPROM;PIC單片機(jī)

 智能儀器是工業(yè)控制的重要部分,它所采集的數(shù)據(jù)是最珍貴的資料。目前,廣泛應(yīng)用于工業(yè)控制領(lǐng)域的智能儀表一般都采用RS-232串行接口實現(xiàn)對所采集的數(shù)據(jù)的上傳。這就要求智能儀表和計算機(jī)最好處于同一個物理空間,或連接關(guān)系固定,才能夠比較容易地完成數(shù)據(jù)的交換與傳遞。這種模式對于大多數(shù)以非實時數(shù)據(jù)采集為目標(biāo)的測量與檢測設(shè)備來說,實現(xiàn)起來很不方便。例如,有些測量與檢測設(shè)備體積龐大、不便移動,有些設(shè)備已經(jīng)固定在機(jī)架或管道上,要和計算機(jī)進(jìn)行串口互連和數(shù)據(jù)上傳是一件非常困難的事。為此,本文研制了一種數(shù)據(jù)采集移動存儲器,較好地解決了智能儀器上非實時數(shù)據(jù)的采集以及與計算機(jī)之間數(shù)據(jù)交換的問題。
 數(shù)據(jù)采集移動存儲器采用先進(jìn)的串行存儲芯片和簡單易行的并行接口技術(shù),體積小、重量輕且無須額外供電。使用時,只需將此存儲器插于測量或檢測儀表的接口,便會自動采集到測量或檢測數(shù)據(jù),采集結(jié)束后,即可將此存儲器拔下攜帶至計算機(jī)房,插入計算機(jī)的并行口,讀出數(shù)據(jù)。一般的U盤雖然可以存儲數(shù)據(jù),但它需要特定的USB接口和非常復(fù)雜的難于用單片機(jī)系統(tǒng)實現(xiàn)的USB接口協(xié)議。
 由于所采用的串行數(shù)據(jù)存儲器具有很好的保密性,因此,該存儲器還可以作為智能儀器的鑰匙,或作為計算機(jī)軟件的“加密狗”。在這種情況下,如果不插入移動數(shù)據(jù)采集存儲器,智能儀器便不會響應(yīng)操作者的指令,從而實現(xiàn)對智能儀器的一些重要功能的加鎖保護(hù)。
這種數(shù)據(jù)采集、存儲、移動、上傳的“無線”技術(shù),大大簡化了串口連線帶來的種種麻煩,可以在一定范圍和應(yīng)用領(lǐng)域內(nèi)取代RS-232串口數(shù)據(jù)上傳的實現(xiàn)方案。這種技術(shù)彌補(bǔ)了目前使用廣泛的U盤無法或難于在智能儀表與計算機(jī)之間進(jìn)行數(shù)據(jù)交換的缺陷,從而使串行存儲器在工業(yè)測量、檢測領(lǐng)域內(nèi)得到新的應(yīng)用。
1 移動數(shù)據(jù)采集存儲器的基本原理
 一般測量檢測類智能儀器端的原理如圖1(a)所示。其中,MCU為測量、檢測類智能儀器中的CPU;端口P1.0和P1.1用來實現(xiàn)I2C總線的主機(jī)端口。VCC為智能儀器的電源端;GND為智能儀器的接地端;10 kΩ的上拉電阻用在SCL時鐘頻率為100 kHz的情況下,如果時鐘頻率為400 kHz或更高,則上拉電阻應(yīng)為2 kΩ。
圖1(b)為移動數(shù)據(jù)采集存儲器,它主要由串行存儲芯片和并行接口電路組成。SCL是同步時鐘端口;SDA是串行數(shù)據(jù)端口;VCC為存儲器的電源;GND為存儲器的接地端。存儲器由智能儀器供電。

 在測量、檢測類智能儀器工作時,數(shù)據(jù)采集移動存儲器通過25芯的并行接口插入智能儀器相應(yīng)的接口,智能儀器產(chǎn)生的數(shù)據(jù)會按約定的格式保存在串行存儲芯片中。測量結(jié)束后,可將移動數(shù)據(jù)采集存儲器拔下,攜帶至他處,利用計算機(jī)讀取存儲的數(shù)據(jù)或進(jìn)行數(shù)據(jù)的再次采集與存儲。
 移動數(shù)據(jù)采集存儲器及接口電路如圖2所示。其中,U1為DB25型的25芯并口插頭,可插入任何類型計算機(jī)的并行打印口插座。串行存儲器芯片組的電源由計算機(jī)并行口的4~7和25管腳提供,并聯(lián)電容用于濾波。SCL時鐘信號由第2管腳產(chǎn)生,SDA信號接第13管腳。圖2中的三極管用于防止干擾電平對存儲芯片內(nèi)部數(shù)據(jù)的損壞。傳送數(shù)據(jù)時,將第3管腳置為高電平;在不傳輸數(shù)據(jù)時,將第3管腳置為低電平可將SDA信號鎖定到低電平,屏蔽來自第13管腳的干擾。A0、A1、A2為片選或塊選地址輸入,通過接入固定高低電平,可以用這3個管腳進(jìn)行容量擴(kuò)展,最多可擴(kuò)展8個芯片。

 

 

2 I2C串行存儲器的特點與讀寫方式
 串行存儲器是移動數(shù)據(jù)采集存儲器的主要器件,本文選擇美國Microchip公司24xxx系列的串行存儲器作為主要存儲單元。24xxx系列是采用I2C串行總線進(jìn)行數(shù)據(jù)傳輸?shù)?管腳EEPROM器件。其容量從1 KB~256 KB(如24xx256),擦除寫入周期可達(dá)100萬次。采用單一電源供電(+5 V±10%),低功耗工作電流1 mA,備用狀態(tài)時只有10 μA,三態(tài)輸出,與TTL電平兼容。片內(nèi)數(shù)據(jù)保存壽命達(dá)40年以上,工業(yè)品工作溫度范圍為-40℃~+85℃。
 I2C總線是由Philips公司設(shè)計的兩線制串行傳輸總線,由時鐘線(SCL)和數(shù)據(jù)線(SDA)兩根線組成。時鐘線用于產(chǎn)生時鐘節(jié)拍信號,數(shù)據(jù)線用于讀/寫數(shù)據(jù)。操作總是從啟動位開始,在停止位后結(jié)束。I2C總線時序如圖3所示。

 (A)段:總線空閑狀態(tài)。SDA和SCL都保持高電平。
?。˙)段:啟動數(shù)據(jù)傳輸。當(dāng)SCL為高電平狀態(tài)時,SDA由高電平變?yōu)榈碗娖降南陆笛貢r被認(rèn)為是“啟動”信號。只有出現(xiàn)“啟動”信號以后,其他命令才有效。
?。–)段:停止數(shù)據(jù)傳輸。SCL保持高電平的狀態(tài)下,SDA出現(xiàn)上升沿視為結(jié)束傳送數(shù)據(jù)。停止信號過后,總線被認(rèn)為空閑。
?。―)段:數(shù)據(jù)有效(或總線忙)。為了保持?jǐn)?shù)據(jù)穩(wěn)定,只有當(dāng)SCL為低電平的時候才允許SDA上的數(shù)據(jù)改變。這時數(shù)據(jù)線的狀態(tài)就表示要傳送的數(shù)據(jù)。
 24xx256芯片的控制字與地址格式如圖4所示。圖4(a)中的固定序列“1010”是專門分配給24系列的從設(shè)備地址,緊跟其后的是3 bit片選位,最低位的R/W是讀寫標(biāo)識,用來確定接下來的操作是讀(“1”)還是寫(“0”)。圖4(b)中的高、低字節(jié)構(gòu)成了215 B的存儲容量。該系列芯片有單字節(jié)和頁模式兩種寫入方式,有當(dāng)前地址讀取、隨機(jī)讀取和順序讀取3種數(shù)據(jù)讀出模式。在寫模式中,頁寫模式可一次性連續(xù)寫入64 B;在讀模式中,順序讀取模式具有最快的讀取速度,可達(dá)到與同步時鐘頻率幾乎相同的速度。對該存儲器的操作可分為兩個方面:存儲器地址指針的定位操作以及數(shù)據(jù)的發(fā)送或接收操作。尤其在隨機(jī)讀模式中,應(yīng)該先定位后讀取。進(jìn)行地址指針定位時,首先要依照上圖3中的時序向總線發(fā)出寫命令(R/W為“0”)的控制字節(jié),接著發(fā)出高字節(jié)地址和低字節(jié)地址。讀寫操作時,首先應(yīng)向總線發(fā)出控制字節(jié)(讀為“1”,寫為“0”),然后即可從總線讀出此地址所指的字節(jié)數(shù)據(jù)或?qū)⒖偩€上的字節(jié)數(shù)據(jù)寫入該地址。存儲器芯片每接到一個命令、地址或數(shù)據(jù)字節(jié),或發(fā)送完一個完整的數(shù)據(jù)字節(jié),都會向總線發(fā)送一個低電平應(yīng)答信號“ACK”。MCU可通過檢測“ACK”信號的響應(yīng)來判斷每一次的讀寫是否成功。

3 單片機(jī)端移動存儲器的讀寫程序
 串行存儲器讀和寫的方法相似,這里只針對字節(jié)寫入模式的流程和程序予以說明。圖5(a)是向EEPROM寫入一個字節(jié)的流程,圖5(b)是如何向I2C總線發(fā)送一個字節(jié)的流程。向總線發(fā)送一個字節(jié)并判斷是否被應(yīng)答是單片機(jī)與串行存儲器通信的基本操作,所以本例中用一個子程序來實現(xiàn)。這樣,無論是命令、地址還是數(shù)據(jù),只需賦予不同的初值,即可調(diào)用這段通用的子程序。

 下列向移動存儲器的寫入數(shù)據(jù)的程序適用于PIC單片機(jī),并已在批量生產(chǎn)的工業(yè)設(shè)備上可靠運行,可直接移植。該程序由WRITE、TX、BITOUT和BITIN等子程序構(gòu)成。WRITE是向移動存儲器的某一地址寫入一個字節(jié)數(shù)據(jù)的子程序。該程序中的子程序BSTART和BSTOP分別是產(chǎn)生一個起始位和停止位的子程序,限于篇幅不再詳述。高低地址存入ADDR1、ADDR0寄存器,待發(fā)送數(shù)據(jù)存入DATAO寄存器。
WRITE                        
    CALL    BSTART      //調(diào)子程序,產(chǎn)生一個起始位。
    MOVLW    B′10100000′  //發(fā)送緩沖寄存器TXBUF置控
//制字內(nèi)容,a2,a1,a0為‘0’
    MOVWF    TXBUF      //選擇1#芯片,“寫”方式。
    CALL    TX            //調(diào)字節(jié)發(fā)送子程序,將TXBUF
//中的控制字發(fā)送到總線上
    MOVF    ADDR1,W    //將高字節(jié)地址存入TXBUF中
    MOVWF    TXBUF
    CALL    TX            //調(diào)子程序,發(fā)送高字節(jié)地址
    MOVF    ADDR0,W    //將低字節(jié)地址存入TXBUF中
    MOVWF    TXBUF
    CALL    TX          //調(diào)子程序,發(fā)送低字節(jié)地址
    MOVF    DATAO,W; //將DATAO中的待存儲數(shù)據(jù)
//送入TXBUF中
    MOVWF    TXBUF
    CALL    TX    //調(diào)子程序,發(fā)送該數(shù)據(jù)字節(jié)到總線
    CALL    BSTOP  //調(diào)子程序,產(chǎn)生一個停止位
     RETLW    0
將發(fā)送寄存器TXBUF中的命令或數(shù)據(jù)內(nèi)容向移動存儲器發(fā)送的子程序為:
TX
    MOVLW    .8
    MOVWF    COUNT         //循環(huán)計數(shù)器,連續(xù)發(fā)送8 bit
TXLP    
    BCF         EEPROM,DO //發(fā)送標(biāo)識位清零
    BTFSC    TXBUF,7      //若發(fā)送寄存器高位為‘0’則
//EEPROM的‘DO’位為‘0’
    BSF         EEPROM,DO  //否則為‘1’
    CALL    BITOUT           //調(diào)用子程序發(fā)送該位
    RLF         TXBUF,1     //發(fā)送寄存器數(shù)據(jù)左移一位
    DECFSZ    COUNT,1       //若已將最低位移至最高
//位,則停止,否則繼續(xù)循環(huán)發(fā)送
    GOTO    TXLP            
    CALL    BITIN          //若8 bit數(shù)據(jù)發(fā)送完畢,則調(diào)
//用子程序接收應(yīng)答信號‘ACK’
    BTFSC    EEPROM,DI     //若無應(yīng)答信號
    CALL    KEY_VO    //則調(diào)用子程序‘KEY_VO’發(fā)音提示
    RETLW    0               //否則返回
發(fā)送一位數(shù)據(jù)的子程序為:
BITOUT
        BANKSEL TRISC//設(shè)置SDA和SCK口為輸出模式
        BCF        TRISC,SDA
        BCF        TRISC,SCK
        BANKSEL    PORTC        //選擇PORTC口
        BTFSS    EEPROM,DO    //若DO位為‘1’,則SDA
//口置‘1’,否則置‘0’
        GOTO    BITLOW
        BSF        PORTC,SDA
        GOTO    CLKOUT
BITLOW    BCF        PORTC,SDA
CLKOUT    BSF        PORTC,SCK    //SCK置‘1’,延時后置‘0’
        NOP                        
        NOP
        NOP
        NOP
        BCF        PORTC,SCK            
        RETLW    0
接收一位數(shù)據(jù)的子程序為:
BITIN
    BSF        EEPROM,DI     //EEPROM的DI位預(yù)置‘1’
    BANKSEL    TRISC       //將SDA口設(shè)為輸入模式
    BSF        TRISC,SDA
    BANKSEL    PORTC
    BSF        PORTC,SCK      //SCK時鐘線置‘1’,并延時
    NOP
    NOP
    NOP
    NOP
    NOP
    BTFSS    PORTC,SDA    //測試SDA口的電平,并暫存
//在DI位
    BCF        EEPROM,DI
    BCF        PORTC,SCK  //SCK時鐘線返回‘0’
    RETLW    0
 計算機(jī)端讀寫數(shù)據(jù)采集移動存儲器的程序可以用任何一種高級語言來編寫,其讀寫時序和讀寫流程與上述單片機(jī)端相似。只需將圖2電路中的SDA和SCL信號分別定義在并行打印口的13腳和2腳即可。
本文介紹了一種新穎的移動數(shù)據(jù)采集存儲器,其容量可達(dá)幾兆位,傳輸速度可達(dá)1 Mb/s。較好地解決了各種智能儀器上非實時數(shù)據(jù)的采集以及與計算機(jī)之間數(shù)據(jù)交換的問題。實踐證明,該存儲器可靠性強(qiáng)、成本低廉、易于實現(xiàn),具有很強(qiáng)的適用性和非常廣泛的推廣價值。
參考文獻(xiàn)
[1] 竇振中,汪立森.PIC系列單片機(jī)應(yīng)用設(shè)計與實例[M].北京:北京航空航天大學(xué)出版社,1999.
[2] 楊青川,甄興福,李芳.I2C總線器件與非I2C總線單片機(jī)之間數(shù)據(jù)傳輸?shù)能浻布O(shè)計[J].儀表技術(shù)與傳感器,2004(5):40-41,48.
[3] Microchip Technology Inc.. 256K I2C CMOS serial EEPROM DS21203M[Z]. 2004.
[4] Microchip Technology Inc.. 28/40-pin 8-bit CMOS Flash microcontrollers DS30292A[Z]. 1998.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
亚洲女同性videos| 亚洲精品一品区二品区三品区| 亚洲视频一起| 亚洲精品欧洲精品| 亚洲激情电影中文字幕| 亚洲免费观看| 亚洲欧洲综合另类| 亚洲精品女人| 亚洲欧美日韩精品久久奇米色影视| 欧美一区二区三区四区在线观看| 免费成人在线观看视频| 欧美激情日韩| 国产欧美视频在线观看| 午夜一区在线| 亚洲一区免费视频| 一区二区三区精品国产| 一区二区国产日产| 一区二区三区精品视频| 亚洲无毛电影| 亚洲欧美一区二区原创| 香蕉成人伊视频在线观看| 午夜精品国产精品大乳美女| 午夜精品一区二区三区在线播放| 亚洲免费视频网站| 午夜视频精品| 久久精品视频va| 亚洲欧洲一区二区在线播放| 日韩午夜av在线| 亚洲一区二区在线播放| 午夜视频久久久| 久久精品亚洲一区二区三区浴池| 久久久久久一区二区| 久久先锋影音| 欧美精品色综合| 欧美视频专区一二在线观看| 免费成人性网站| 欧美日韩1234| 国产精品成人一区二区艾草| 国产乱码精品一区二区三区不卡| 国产午夜精品理论片a级探花| 韩日精品中文字幕| 亚洲高清三级视频| 亚洲最新在线视频| 午夜精品免费视频| 亚洲国产精品久久久久秋霞影院| 99视频精品免费观看| 亚洲综合精品自拍| 久久er精品视频| 免费久久99精品国产| 欧美日韩国产高清| 国产欧美亚洲视频| 亚洲成人原创| 一区二区高清| 久久大香伊蕉在人线观看热2| 亚洲国产精品va在线观看黑人 | 亚洲电影有码| 日韩午夜精品| 亚洲男女自偷自拍| 亚洲精品黄色| 欧美一区二区三区精品电影| 久久一二三区| 欧美丝袜一区二区三区| 国产日韩欧美91| 亚洲国产激情| 亚洲欧美日本在线| 亚洲精品免费在线观看| 午夜在线观看欧美| 欧美电影免费观看高清完整版| 欧美性事在线| 激情久久婷婷| 亚洲视频 欧洲视频| 欧美在线亚洲综合一区| 一区二区三区毛片| 久久婷婷麻豆| 国产精品无码永久免费888| 一色屋精品视频在线看 | 亚洲高清久久| 午夜精品久久久久久久久久久 | 一本一本久久a久久精品综合麻豆| 久久se精品一区二区| 欧美日韩精品免费观看视一区二区 | 国产精品福利在线观看网址| 亚洲国产成人av在线| 亚洲宅男天堂在线观看无病毒| 亚洲春色另类小说| 午夜亚洲福利| 欧美精品激情在线| 国内久久精品视频| 亚洲综合色激情五月| 亚洲精品久久久久久久久久久| 欧美在线视频一区| 欧美日韩免费一区二区三区| 狠狠做深爱婷婷久久综合一区| 一本色道久久综合亚洲精品不| 久久精品亚洲国产奇米99| 亚洲免费一在线| 欧美日韩国产区一| 亚洲第一区在线| 久久se精品一区精品二区| 一区二区91| 久久综合一区二区三区| 国产日韩综合一区二区性色av| 日韩视频三区| 亚洲精品在线视频| 女女同性女同一区二区三区91| 国产亚洲成精品久久| 亚洲图色在线| 亚洲一区在线观看免费观看电影高清 | 欧美精品aa| 亚洲国产精品激情在线观看| 久久精品国产久精国产一老狼 | 久久不射网站| 国产精品区一区| 一区二区三区高清在线 | 999亚洲国产精| 免费在线一区二区| 激情久久久久久久| 亚洲美女视频网| 99成人在线| 欧美另类videos死尸| 亚洲精品国产无天堂网2021| 亚洲精品一区二区三区av| 另类亚洲自拍| 在线不卡欧美| 亚洲精品久久久蜜桃| 欧美大片在线观看| 亚洲国产色一区| 日韩视频在线观看免费| 久久久av毛片精品| 国产一区二区三区四区三区四| 亚洲欧美日韩一区在线观看| 久久精品99久久香蕉国产色戒| 国产亚洲精品v| 欧美一区二区三区精品电影| 久久一区二区视频| 亚洲国产精品va在线看黑人动漫| 亚洲精品在线视频观看| 欧美日韩国产123| 亚洲无毛电影| 久久精品在线播放| 在线日韩av| 亚洲作爱视频| 国产精品久久久久久五月尺| 亚洲欧美中日韩| 久久另类ts人妖一区二区| 尤物yw午夜国产精品视频| 亚洲精品在线观看视频| 欧美午夜不卡影院在线观看完整版免费 | 在线亚洲精品| 久久成人免费视频| 在线播放豆国产99亚洲| 亚洲人在线视频| 99综合在线| 欧美怡红院视频| 伊人久久久大香线蕉综合直播| 亚洲人体大胆视频| 欧美视频中文一区二区三区在线观看 | 亚洲欧美www| 国产在线国偷精品产拍免费yy| 亚洲人成亚洲人成在线观看图片 | 亚洲自拍啪啪| 巨乳诱惑日韩免费av| 日韩视频―中文字幕| 欧美在线视频网站| 亚洲国产日韩在线一区模特| 亚洲欧美日韩在线观看a三区| 激情自拍一区| 亚洲一区二区3| 一区二区三区在线免费观看| 中文网丁香综合网| 国产日韩在线视频| 99伊人成综合| 国产综合久久| 亚洲一区二区网站| 一区二区三区中文在线观看| 这里是久久伊人| 黄色日韩网站视频| 亚洲直播在线一区| 在线看片成人| 先锋影音一区二区三区| 亚洲高清一区二| 欧美在线看片| 9久草视频在线视频精品| 羞羞漫画18久久大片| 亚洲欧洲一区二区天堂久久| 久久精品观看| 一本久久a久久精品亚洲| 免费观看日韩| 午夜在线精品| 欧美日韩一区二区国产| 亚洲国产成人久久综合| 国产精品日日摸夜夜摸av| 日韩视频免费大全中文字幕| 国产一区视频网站| 亚洲欧美日本另类| 亚洲日本在线视频观看| 性久久久久久久久| 日韩亚洲欧美一区| 欧美国产激情| 亚洲国产精品热久久|