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

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

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

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

 

 

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

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

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

 下列向移動存儲器的寫入數據的程序適用于PIC單片機,并已在批量生產的工業設備上可靠運行,可直接移植。該程序由WRITE、TX、BITOUT和BITIN等子程序構成。WRITE是向移動存儲器的某一地址寫入一個字節數據的子程序。該程序中的子程序BSTART和BSTOP分別是產生一個起始位和停止位的子程序,限于篇幅不再詳述。高低地址存入ADDR1、ADDR0寄存器,待發送數據存入DATAO寄存器。
WRITE                        
    CALL    BSTART      //調子程序,產生一個起始位。
    MOVLW    B′10100000′  //發送緩沖寄存器TXBUF置控
//制字內容,a2,a1,a0為‘0’
    MOVWF    TXBUF      //選擇1#芯片,“寫”方式。
    CALL    TX            //調字節發送子程序,將TXBUF
//中的控制字發送到總線上
    MOVF    ADDR1,W    //將高字節地址存入TXBUF中
    MOVWF    TXBUF
    CALL    TX            //調子程序,發送高字節地址
    MOVF    ADDR0,W    //將低字節地址存入TXBUF中
    MOVWF    TXBUF
    CALL    TX          //調子程序,發送低字節地址
    MOVF    DATAO,W; //將DATAO中的待存儲數據
//送入TXBUF中
    MOVWF    TXBUF
    CALL    TX    //調子程序,發送該數據字節到總線
    CALL    BSTOP  //調子程序,產生一個停止位
     RETLW    0
將發送寄存器TXBUF中的命令或數據內容向移動存儲器發送的子程序為:
TX
    MOVLW    .8
    MOVWF    COUNT         //循環計數器,連續發送8 bit
TXLP    
    BCF         EEPROM,DO //發送標識位清零
    BTFSC    TXBUF,7      //若發送寄存器高位為‘0’則
//EEPROM的‘DO’位為‘0’
    BSF         EEPROM,DO  //否則為‘1’
    CALL    BITOUT           //調用子程序發送該位
    RLF         TXBUF,1     //發送寄存器數據左移一位
    DECFSZ    COUNT,1       //若已將最低位移至最高
//位,則停止,否則繼續循環發送
    GOTO    TXLP            
    CALL    BITIN          //若8 bit數據發送完畢,則調
//用子程序接收應答信號‘ACK’
    BTFSC    EEPROM,DI     //若無應答信號
    CALL    KEY_VO    //則調用子程序‘KEY_VO’發音提示
    RETLW    0               //否則返回
發送一位數據的子程序為:
BITOUT
        BANKSEL TRISC//設置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
接收一位數據的子程序為:
BITIN
    BSF        EEPROM,DI     //EEPROM的DI位預置‘1’
    BANKSEL    TRISC       //將SDA口設為輸入模式
    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
 計算機端讀寫數據采集移動存儲器的程序可以用任何一種高級語言來編寫,其讀寫時序和讀寫流程與上述單片機端相似。只需將圖2電路中的SDA和SCL信號分別定義在并行打印口的13腳和2腳即可。
本文介紹了一種新穎的移動數據采集存儲器,其容量可達幾兆位,傳輸速度可達1 Mb/s。較好地解決了各種智能儀器上非實時數據的采集以及與計算機之間數據交換的問題。實踐證明,該存儲器可靠性強、成本低廉、易于實現,具有很強的適用性和非常廣泛的推廣價值。
參考文獻
[1] 竇振中,汪立森.PIC系列單片機應用設計與實例[M].北京:北京航空航天大學出版社,1999.
[2] 楊青川,甄興福,李芳.I2C總線器件與非I2C總線單片機之間數據傳輸的軟硬件設計[J].儀表技術與傳感器,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.

此內容為AET網站原創,未經授權禁止轉載。
主站蜘蛛池模板: 欧美日本韩国一区二区| 色费女人18毛片a级毛片视频| 女人18水真多毛片免费观看| 久久久久波多野结衣高潮| 榴莲下载app下载网站ios| 亚洲欧美综合另类| 男女下面一进一出免费无遮挡| 四虎永久免费地址在线网站| 麻绳紧缚奴隷女囚| 国产男女视频在线观看| 6580岁老太婆| 天堂中文8资源在线8| 一本之道在线视频| 成人麻豆日韩在无码视频| 久久亚洲国产精品五月天| 最新国产精品精品视频| 亚洲欧美在线观看| 波多野结衣一区在线| 人人看人人添人人谢| 男女猛烈无遮挡免费视频| 农民人伦一区二区三区| 老师吸大胸校花的奶水漫画| 国产亚洲精品第一综合| 麻豆影视视频高清在线观看| 国产无av码在线观看| 两个人看的www高清免费观看| 国产精品玩偶在线观看| 91欧美在线视频| 国外性xxxnxxxf视频| 99久久精品日本一区二区免费 | 国产精品久久香蕉免费播放| 8888四色奇米在线观看免费看| 国自产拍91大神精品| 99久无码中文字幕一本久道 | jizz中国jizz欧洲/日韩在线 | 国产一区二区三区精品视频| 青青免费在线视频| 国产免费变态视频网址网站 | 美美女高清毛片视频免费观看 | 亚洲永久精品ww47| 欧美高清性XXXXHDVIDEOSEX|