《電子技術應用》
您所在的位置:首頁 > 其他 > 設計應用 > 一種串行E2PROM在工業(yè)電爐中的應用設計
一種串行E2PROM在工業(yè)電爐中的應用設計
來源:微型機與應用2013年第8期
吳曉光
(中鋼集團洛陽耐火材料研究院有限公司, 河南 洛陽471039)
摘要: 為了降低設備成本并保證數(shù)據(jù)存儲的穩(wěn)定性,選取并正確使用合適的存儲器十分重要。分析了串行E2PROM在設備中使用的方法以及注意事項,并結合實際設計要求,著重從軟件方面提出了使用此存儲器的措施和方案。通過實踐驗證其電路結構簡單明了,成本較低,穩(wěn)定性非常好,非常適合機電設備存儲大量數(shù)據(jù)。
Abstract:
Key words :

摘  要: 為了降低設備成本并保證數(shù)據(jù)存儲的穩(wěn)定性,選取并正確使用合適的存儲器十分重要。分析了串行E2PROM在設備中使用的方法以及注意事項,并結合實際設計要求,著重從軟件方面提出了使用此存儲器的措施和方案。通過實踐驗證其電路結構簡單明了,成本較低,穩(wěn)定性非常好,非常適合機電設備存儲大量數(shù)據(jù)。
關鍵詞:串行E2PROM;連續(xù)讀寫;可編程/擦除100萬次;性能穩(wěn)定

     串行E2PROM是可在線電擦除和電寫入的存儲器,具有體積小、接口簡單、數(shù)據(jù)保存可靠、可在線改寫、功耗低等特點,而且為低電壓寫入,在單片機系統(tǒng)中應用十分普遍。
    Catalyst公司的串行E2PROM兼容工業(yè)上最受歡迎的三種總線——I2C總線、Microwire總線及SPI總線。Catalyst公司的產品提供1 KB~256 KB的高密度存儲,以及1.8 V~6 V的寬電壓操作范圍。本文以CAT24WC64為例著重介紹串行E2PROM。CAT24WC64是一個64 KB串行CMOS E2PROM,內部含有8 192 B(每字節(jié)為8 bit)。CATALYST公司的先進CMOS技術實質上減少了器件的功耗,CAT24WC64有一個32 B頁寫緩沖器,該器件通過I2C總線接口進行操作。
1 E2PROM存儲原理   
    E2PROM的電路結構經歷了一個發(fā)展過程,目前大多采用FLOTOX(Floating Tunnel Oxide)結構。這種結構的基本存儲單元的主體是一個特殊的MOS管,如圖1所示。它的特點是:浮置柵向下凸出一塊,使得浮置柵與漏區(qū)之間的隧道氧化層面積很小、厚度很薄。它的編程原理與EPROM相似,即讓浮置柵上帶電荷。具體實現(xiàn)是在控制柵加高電位,此時漏端的電子將借助Fowler-Nordheim隧道效應穿過薄氧化層而進入浮置柵。它的擦除原理與EPROM不同,是在控制柵加低電位,使存儲在浮置柵中的電子被抽出,于是又恢復到初始狀態(tài)。

 

 

2 系統(tǒng)硬件結構
    系統(tǒng)的硬件部分主要包括前段信號采集放大電路和人機交互界面電路兩部分,系統(tǒng)硬件結構[1] 框圖如圖2所示。

    系統(tǒng)硬件結構包括主控制器SST89E516RD2、 CAT24WC64存儲器、電源電路、溫度傳感器、壓力傳感器以及采樣放大電路。主控制器SST89E516RD2是一款來自SST公司的8位低功耗處理器,比常規(guī)8位處理器多了一個P4口,更有利于擴展,片內有64 KB的Flash和1 KB的RAM,性能更加出色。CAT24WC64存儲器采用I2C串行方式存儲,節(jié)省了CPU資源,而且數(shù)據(jù)在傳輸中不易受外界干擾。前段信號采樣采用熱電偶和壓力傳感器來完成。此外,對于熱電偶測得的微弱電流信號需通過運算放大器實現(xiàn)信號的放大和抬升。而人機交互(即顯示和鍵盤操作)通過簡單的電路得以實現(xiàn)。
    CAT24WC64是Catalyst公司的一款支持I2C等多種協(xié)議的串行存儲器,具有體積小、接口簡單、數(shù)據(jù)保存可靠、可在線改寫、功耗低等特點,而且為低電壓寫入,在單片機系統(tǒng)中應用十分普遍;相比Atmel等公司的串行存儲器性價比更加突出;使用靈活性強,大大降低了系統(tǒng)開發(fā)的難度,而且降低了系統(tǒng)設計的成本。CAT24WC64外圍接口電路圖3所示。

3 系統(tǒng)軟件設計
3.1 系統(tǒng)總體設計

    系統(tǒng)軟件部分的設計主要按功能塊劃分為若干個模塊進行編寫設計,主體循環(huán)就是對各個功能函數(shù)進行調用,完成系統(tǒng)的數(shù)據(jù)采集、處理以及大量客戶使用數(shù)據(jù)的存儲調用。整個軟件的編寫使用靈活性強、可讀性和可移植性強的C語言[3],在Keil C51集成開發(fā)環(huán)境下完成開發(fā)和最終調試。
    主要的函數(shù)包括主函數(shù)、溫度測量、壓力測量、用戶數(shù)據(jù)存儲、鍵盤顯示等功能函數(shù)模塊。溫度測量功能塊實現(xiàn)對S型熱電偶測溫電路的模/數(shù)轉換以及線性化[4]和放大功能;壓力測量功能塊負責壓力信號的轉換;用戶數(shù)據(jù)存儲功能模塊主要是通過對I2C串行存儲器CAT24WC64的控制函數(shù)和協(xié)議棧的調用來完成數(shù)據(jù)的串行存儲。各個子函數(shù)之間保持各自獨立的完整性,能在主函數(shù)中實現(xiàn)無縫調用。
3.2 I2C串行存儲器CAT24WC64軟件設計[5]   
      CAT24WC64操作包括啟動、停止、隨機字節(jié)讀寫、連續(xù)讀寫、應答信號、校驗、延時等。下面重點說明連續(xù)讀寫以及包含的頁寫代碼的實現(xiàn)。
      連續(xù)寫函數(shù):
bit ISendStr(unsigned char sla,unsigned int add,unsigned char *s,unsigned char no)
{
    unsigned char i,ch;
       i2c_start();            // Send I2C Start Transfer
       i2c_write(sla);     // Send identifier I2C address-Write
    WaitAck();
       ch=add/256;
       i2c_write(ch);      // Send identifier I2C son address-Write
       WaitAck();
       ch=add%256;
       i2c_write(ch);      // Send identifier I2C son address-Write
       WaitAck();
       for(i=0;i<no;i++)    
       {
        i2c_write(*s);                            // Send data to memory
         s++;
    if(i!=no-1)SendAck();
        }
       SendNotAck();
       i2c_stop();
       return(1);
}
    因為i2c存儲器一般都是按頁存儲的,所以在寫的時候也要按照此規(guī)定進行操作,如若跨頁寫則會出現(xiàn)錯誤。在此采用了循環(huán)寫入的方法避免了跨頁寫容易出錯的問題。例如CAT24WC64存儲是按照32 B為一頁,下面給出具體的實現(xiàn)函數(shù)可以不受頁寫限制:
       add=NUM-Guhua;
       add=add*48;
       add+=8;
    for(i=0;i<24;i++)
       {   
    DelayXms(5);
        mm[0]=cs[i]/256;mm[1]=cs[i]%256;
        ISendStr(at24C02,add+2*i,&mm[0],2);
        DelayXms(5);
    }
    此函數(shù)避免了在連續(xù)寫入遇到跨頁時的限制,可以實現(xiàn)無縫連續(xù)寫入。
    連續(xù)讀函數(shù):
bit IRcvStr(unsigned char sla,unsigned int add,unsigned char *s,unsigned char no)
{
       unsigned char i,ch;
       i2c_start();                             // Send I2C Start Transfer
       i2c_write(sla);         // Send identifier I2C address-Write
       WaitAck();
         ch=add/256;
       i2c_write(ch);       //Send identifier I2C son address-Write
       WaitAck();
       ch=add%256;
       i2c_write(ch);       //Send identifier I2C son address-Write
       WaitAck();
       i2c_start();                             // Send I2C Start Transfer
      i2c_write(sla+1);       // Send identifier I2C address-Read
       WaitAck();
       for(i=0;i<no;i++)
       {
    *s=i2c_read();                    // Read the memory number
        s++;
    if(i!=no-1)SendAck();
        }
       SendNotAck();
       i2c_stop();                         // Send I2C Stop Transfer
          return(1);
}  
    連續(xù)讀函數(shù)的具體實現(xiàn)原理與連續(xù)寫入函數(shù)一樣,也實現(xiàn)了無縫連續(xù)讀出函數(shù)。
4 系統(tǒng)實驗結果和結論
    本系統(tǒng)測試包括軟件測試、硬件測試、穩(wěn)定性和存儲速度測試。通過溫度傳感器和壓力傳感器實現(xiàn)了信號采集并進行分析利用;通過相應的軟件校正消除了非線性誤差,在一定范圍內提升到比較高的測量精度,滿足了設計要求。選用了廉價可靠、性能出色的I2C存儲器CAT24WC64,可滿足使用者設計多種應用程序;對牙科市場多種瓷粉材料的燒結工藝參數(shù)進行存儲并加以應用,大大方便了使用者的操作。
參考文獻
[1] 何立民.單片機應用系統(tǒng)設計[M].北京:北京航空航天大學出版社,1989.
[2] 張載鴻.微型機(PC系列)接口控制教程[M].北京:清華大學出版社,1992.
[3] 徐愛鈞,彭秀華.單片機高級語言C51Windows環(huán)境編程與應用[M].北京:電子工業(yè)出版社, 2001.
[4] 王士杰.一種適用于微機型溫度儀表的熱電偶非線性校正[J]. 自動化儀表,1994(1):36-37.
[5] 范風強,蘭嬋麗.單片機語言C51應用實戰(zhàn)集錦[M].北京:電子工業(yè)出版社,2002.

此內容為AET網(wǎng)站原創(chuàng),未經授權禁止轉載。