專注差異化嵌入式產(chǎn)品解決方案 給智能產(chǎn)品定制注入靈魂給予生命
提供開發(fā)工具、應(yīng)用測(cè)試 完善的開發(fā)代碼案例庫分享
從全面的產(chǎn)品導(dǎo)入到強(qiáng)大技術(shù)支援服務(wù) 全程貼心伴隨服務(wù),創(chuàng)造無限潛能!
提供新的芯片及解決方案,提升客戶產(chǎn)品競爭力
提供最新的單片機(jī)資訊,行業(yè)消息以及公司新聞動(dòng)態(tài)
摘要 探討了一種多CPU共享串行EEPROM的模塊化設(shè)計(jì)方法,使得系統(tǒng)設(shè)計(jì)簡單可靠,軟件編制容易。
關(guān)鍵詞 多CPU系統(tǒng) 可編程器件 串行EEPROM
1引言
隨著微電子技術(shù)的飛速發(fā)展,單片機(jī)的價(jià)格已變得十分低廉,特別是ATMEL公司的89系列單片機(jī),內(nèi)置閃速(Flash)存儲(chǔ)器,具有51系列單片機(jī)的內(nèi)核,尤其是89C2051只有20個(gè)引腳,2KFlash程序存儲(chǔ)器,本身已是一個(gè)完整的微處理機(jī)系統(tǒng),具有很高的性能價(jià)格比。此類CPU可以作為可編程器件用于構(gòu)成一個(gè)比較復(fù)雜的應(yīng)用系統(tǒng),此方法比使用PAL、GAL等產(chǎn)品的性能價(jià)格比更高。現(xiàn)今軟件工程中比較流行的方法是面向?qū)ο蟮哪K化設(shè)計(jì),其思想是將復(fù)雜的系統(tǒng)劃分成任務(wù)單一的模塊,有利于多人共同開發(fā)大規(guī)模軟件。工控機(jī)也大多采用模塊化設(shè)計(jì),根據(jù)工控具體情況可方便地組成應(yīng)用系統(tǒng)。同樣一個(gè)小的應(yīng)用系統(tǒng)也可用單片機(jī)作為可編程器件模塊來構(gòu)成。即將系統(tǒng)劃分成任務(wù)單一的模塊,每個(gè)器件模塊編程簡單,性能可靠,抗干擾性能強(qiáng),從而大大節(jié)省設(shè)計(jì)和編程時(shí)間。但同時(shí)也出現(xiàn)了一個(gè)怎樣實(shí)現(xiàn)各器件模塊間交換信息的問題,對(duì)于速度要求比較高時(shí),可采用并行通信或并行RAM共享方案;而對(duì)速度要求比較低時(shí),可采用串行通信方法,但此方案要占用CPU的串行口的資源,且多點(diǎn)對(duì)多點(diǎn)的通信編程也比較困難。而共享串行EEPROM的方案能夠解決這一矛盾,下面以智能熱量儀為例介紹此方案。
2系統(tǒng)的模塊化設(shè)計(jì)
根據(jù)具體情況將系統(tǒng)劃分成若干功能單一的模塊。劃分的原則是:實(shí)時(shí)性強(qiáng)的任務(wù)由一獨(dú)立器件模塊來完成,信息在器件模塊之間的交換要少,且時(shí)間性要求要低。
根據(jù)智能熱量儀要求將其劃分成三個(gè)器件模塊,功能框圖如圖1所示。CPU1完成智能熱量儀物理量的采集,即溫差、壓力、流量、壓差或頻率的采集,并能輸出控制信號(hào),包括電流和開關(guān)量輸出;CPU2實(shí)現(xiàn)人機(jī)對(duì)話功能:顯示各物理量(溫度、壓力、壓差、頻率、瞬時(shí)流量或累積熱量),接收儀表參數(shù)的輸入等;CPU3完成與上位機(jī)間的通信和打印功能。EEPROM93LC66連接這三個(gè)器件模塊。為了編程方便,三個(gè)CPU的P1.0~P1.3都依次連接EEPROM的CS、CLK、DI、DO;而三個(gè)CPU的P1.4、P1.5則連在一起,作為EEPROM狀態(tài)的標(biāo)志,用來協(xié)調(diào)三個(gè)CPU的工作。
3分時(shí)共享EEPROM
電路的核心器件是EEPROM(93LC66),它同時(shí)與三個(gè)CPU的P1.0~P1.3相接,所以,三個(gè)CPU只能分時(shí)訪問EEPROM。也就是說,同一時(shí)間只能有一個(gè)CPU訪問它,不訪問時(shí)將P1.0~P1.3初始化為高電平,否則會(huì)出現(xiàn)競爭。這就要求CPU在訪問EEPROM前,必須知道EEPROM的狀態(tài),為此,將三個(gè)CPU的P1.4、P1.5分別連接在一起作為標(biāo)志,三者的狀態(tài)編碼00、01、10分別表示CPU1至CPU3中的哪一個(gè)在訪問EEPROM;CPU都不訪問EEPROM時(shí),各CPU初始化標(biāo)志P1.4、P1.5為高電平,即11。某CPU要訪問EEPROM時(shí),先測(cè)試標(biāo)志P1.4、P1.5,若為11,說明此時(shí)CPU可以訪問EEPROM,立即將標(biāo)志P1.4、P1.5置成此CPU的標(biāo)志碼,表示EEPROM處于忙狀態(tài),其它CPU不能再訪問EEPROM;該CPU訪問完EEPROM后,再將P1.4、P1.5置為高電平。為了防止幾個(gè)CPU同時(shí)測(cè)試P1.4、P1.5位,可規(guī)定CPU1訪問EEPROM的優(yōu)先級(jí)比CPU2、CPU3的高。CPU2或CPU3在測(cè)試完P(guān)1.4、P1.5后,若為11,此CPU立即將P1.4、P1.5置成自己的標(biāo)志,再測(cè)試一下置為1的位是否還為1;若為0,說明有其它CPU在同時(shí)訪問EEPROM,則退出等待;若還為1,則進(jìn)行訪問EEPROM。
CPU1將采集來的數(shù)據(jù)進(jìn)行處理,根據(jù)EEPROM內(nèi)的儀表參數(shù)計(jì)算出瞬時(shí)的流量和熱量,進(jìn)行熱量的累積,每5s將數(shù)據(jù)寫入EEPROM一次,并根據(jù)瞬時(shí)量計(jì)算出輸出量送給D/A轉(zhuǎn)換電路,輸出控制電流;CPU2定時(shí)地從EEPROM內(nèi)讀出各物理量暫存在CPU內(nèi),根據(jù)從鍵盤接收的命令顯示相應(yīng)的物理量,還可將鍵盤送來的儀表參數(shù)寫入EEPROM;CPU3也定時(shí)地從EEPROM內(nèi)讀出數(shù)據(jù)存在CPU內(nèi),定時(shí)或立即打印出來,并和上位機(jī)進(jìn)行串行通信。各CPU在分時(shí)使用EEPROM的工作過程中,已實(shí)現(xiàn)了數(shù)據(jù)交換。
4延長EEPROM工作壽命的方法
各CPU頻繁地擦寫串行EEPROM,93LC′′系列的EEPROM擦寫次數(shù)典型值為100萬次,這是指某一位由1寫為0或由0寫為1的次數(shù)。而實(shí)際上寫入EEPROM的數(shù)據(jù),對(duì)于某一位來說,寫入的數(shù)據(jù)并不是每次都是要變化的,實(shí)際測(cè)試可證明擦寫次數(shù)大于500萬次。按300萬次算,若5s寫一次,只能寫150天左右,顯然,這是不能滿足要求的。為此,可采用一種利用存儲(chǔ)器空間延長EEPROM工作壽命的方法。其方法為:數(shù)據(jù)存放的地址不是固定的,而是用一個(gè)固定的基地址加上EEPROM內(nèi)的一個(gè)單元的內(nèi)容(即偏移地址)作為真正的地址;若發(fā)現(xiàn)存儲(chǔ)單元已壞(寫入和讀出的內(nèi)容不同),則偏移地址加一,重新寫入。如果采用100倍的存儲(chǔ)器空間冗余,可將EEPROM的實(shí)際壽命延長100倍。對(duì)于智能熱量儀,寫入EEPROM的數(shù)據(jù)為14字節(jié),采用35倍冗余,選用93LC66,可使其壽命大于14年。
5結(jié)束語
串行EEPROM(以93LC66為例)數(shù)據(jù)的讀過程時(shí)間比較短,約為150ms(89C51的晶振頻率為12MHz),但寫過程時(shí)間較長,技術(shù)手冊(cè)給出的是每字節(jié)4ms,實(shí)測(cè)為2ms。根據(jù)各CPU完成任務(wù)不同,可將讀寫程序放在不同位置來實(shí)現(xiàn)。
這種多CPU共享串行EEPROM的設(shè)計(jì)方法,各模塊的任務(wù)比較單一,又具有獨(dú)立性,因而降低了編程的工作量,也方便調(diào)試。若系統(tǒng)需要多于三個(gè)CPU時(shí),和EEPROM連接的四條線類似總線方式與其它CPU相連,再增加一條或幾條狀態(tài)線即可。構(gòu)成的系統(tǒng)如果要增加功能,可再增添一個(gè)或幾個(gè)模塊即可,而不影響原來設(shè)計(jì)的硬件和軟件,這就解決了過去一旦產(chǎn)品設(shè)計(jì)完成再想添加功能就很困難的問題。