《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 微波|射頻 > 設(shè)計(jì)應(yīng)用 > 片機(jī)系統(tǒng)運(yùn)行參數(shù)的保存及有效性判別
片機(jī)系統(tǒng)運(yùn)行參數(shù)的保存及有效性判別
摘要: 在單片機(jī)構(gòu)成的控制系統(tǒng)中,系統(tǒng)控制時需要使用和保存已經(jīng)設(shè)置或優(yōu)化的參數(shù),。如果將運(yùn)行參數(shù)僅僅存儲于單片機(jī)的RAM區(qū)中,,則系統(tǒng)在掉電或重啟時將會丟失這些重要參數(shù),,不能正常運(yùn)行。為了解決上述問題,,保證控制系統(tǒng)正常,、可靠地運(yùn)行,需要將這些運(yùn)行參數(shù)保存在足夠容量的電可擦除存儲器(EEPROM)中,。在寫入或讀出EEPROM中的數(shù)據(jù)時,,為保證數(shù)據(jù)操作的正確性,則需要進(jìn)行數(shù)據(jù)校驗(yàn),。在系統(tǒng)運(yùn)行這些參數(shù)之前,,為檢查運(yùn)行參數(shù)的取值是否在許可范圍之內(nèi),則需要進(jìn)行參數(shù)取值范圍的檢驗(yàn),。本文結(jié)合作者開發(fā)的電梯轎廂門機(jī)控制系統(tǒng),,來詳細(xì)討論參數(shù)保存和校驗(yàn)的設(shè)計(jì)及實(shí)現(xiàn)。
Abstract:
Key words :
  1 引言

  在單片機(jī)構(gòu)成的控制系統(tǒng)中,,系統(tǒng)控制時需要使用和保存已經(jīng)設(shè)置或優(yōu)化的參數(shù),。如果將運(yùn)行參數(shù)僅僅存儲于單片機(jī)的RAM區(qū)中,則系統(tǒng)在掉電或重啟時將會丟失這些重要參數(shù),,不能正常運(yùn)行,。為了解決上述問題,保證控制系統(tǒng)正常,、可靠地運(yùn)行,,需要將這些運(yùn)行參數(shù)保存在足夠容量的電可擦除存儲器(EEPROM)中。在寫入或讀出EEPROM中的數(shù)據(jù)時,,為保證數(shù)據(jù)操作的正確性,,則需要進(jìn)行數(shù)據(jù)校驗(yàn)。在系統(tǒng)運(yùn)行這些參數(shù)之前,,為檢查運(yùn)行參數(shù)的取值是否在許可范圍之內(nèi),,則需要進(jìn)行參數(shù)取值范圍的檢驗(yàn)。本文結(jié)合作者開發(fā)的電梯轎廂門機(jī)控制系統(tǒng),,來詳細(xì)討論參數(shù)保存和校驗(yàn)的設(shè)計(jì)及實(shí)現(xiàn),。

  2 系統(tǒng)運(yùn)行參數(shù)的存儲

  在單片機(jī)組成的控制系統(tǒng)中,系統(tǒng)設(shè)置的運(yùn)行參數(shù)是系統(tǒng)正常運(yùn)行所必須使用的,,既要保證運(yùn)行參數(shù)的可修改性,,又要保證運(yùn)行參數(shù)在系統(tǒng)停機(jī)或掉電的情況下能夠正確保存,因而運(yùn)行參數(shù)應(yīng)保存在電可擦除存儲器(EEPROM)中,。根據(jù)參數(shù)個數(shù)的多少,,決定所使用EEPROM的存儲容量。例如,,在本文的單片機(jī)系統(tǒng)中,,電梯轎廂門機(jī)控制運(yùn)行所需要的參數(shù)有:門寬參數(shù)、有無光電檢測,、輸出保持力矩,、開門加速步頻、關(guān)門加速步頻,、開門減速步頻,、關(guān)門減速步頻、工作計(jì)數(shù)器等,,設(shè)計(jì)中要求存儲的參數(shù)共需28個字節(jié),,再加上一個字節(jié)校驗(yàn)和,所以選用32字節(jié)容量的EEPROM。Xicro公司的X24C44能滿足上述可修改性和容量的要求,。

  2.1 EPROM芯片簡介及硬件組成

  電可擦除存儲芯片X24C44是一個八引腳的芯片,,其內(nèi)部有存儲矩陣和RAM兩個存儲區(qū),外部引腳的功能如圖1所示,。芯片各引腳的功能為:CE為芯片使能引腳,;Vcc及Vss為電源引腳;電壓為+5V,;SK是讀寫X24C44數(shù)據(jù)時所用到的外部時鐘同步信號,;DI為命令或數(shù)據(jù)串行輸入X24C44的信號引腳;DO為X24C44數(shù)據(jù)串行輸出的信號引腳,;STORE為低電平時,,允許將EEPROM中RAM的內(nèi)容保存到存儲矩陣;RECALL為低電平時,,允許將EEPROM的存儲矩陣的內(nèi)容傳送到EEPROM的RAM中,。

  對X24C44的讀寫操作是串行數(shù)據(jù)操作,其讀時序如圖2所示,。結(jié)合圖2中的讀時序,,讀出X24C44中某兩字節(jié)的數(shù)據(jù)操作為:芯片的使能引腳CE為高電平,在時鐘SK信號的同步下,,先向X24C44的數(shù)據(jù)串行輸入引腳DI送讀出兩字節(jié)的命令1AAAA11X(其中AAAA為要讀出的起始地址,,X表示X24C44對該值忽略),數(shù)據(jù)串行輸出引腳在第9個時鐘由高阻態(tài)轉(zhuǎn)為數(shù)據(jù)串行輸出,,16個比特為一個讀出內(nèi)容,,通過將CE信號置為低電平,先關(guān)閉芯片的讀出數(shù)據(jù)操作,。

  按照向X24C44寫入兩字節(jié)內(nèi)容的時序,,寫入兩字節(jié)數(shù)據(jù)的操作類似于讀出操作過程。

  X24C44采用串行讀寫數(shù)據(jù),,其與單片機(jī)的接線簡單,,除了片選信號CE外,只要與單片機(jī)的三根I/O引腳相連即可,,作用為時鐘CLK,,數(shù)據(jù)輸入DI,數(shù)據(jù)輸出DO,,其中DO引腳要接一個10kΩ的上拉電阻,。硬件電路接線如圖3所示。

  2.2 EEPROM讀寫的實(shí)現(xiàn)

  控制系統(tǒng)中所采用的是51系列單片機(jī),,其中讀寫子程序設(shè)計(jì)用匯編也較容易實(shí)現(xiàn)結(jié)構(gòu)化編程,。根據(jù)X24C44的時序和操作過程,,下面給出讀出EEPROM中數(shù)據(jù)的匯編子程序。單片機(jī)將數(shù)據(jù)寫入EEPROM的過程與讀出過程相類似,。讀出EEPROM中數(shù)據(jù)的匯編子程序如下:

  read:push psw,;讀數(shù)據(jù)子程序入口 

  3 運(yùn)行參數(shù)的數(shù)據(jù)校驗(yàn)

  系統(tǒng)運(yùn)行參數(shù)是單片機(jī)控制系統(tǒng)正確運(yùn)行的關(guān)鍵數(shù)值,能確保系統(tǒng)按設(shè)置的特性運(yùn)行,。在許多單片機(jī)組成的控制系統(tǒng)中,,系統(tǒng)在運(yùn)行過程中需讀出EEPROM中的數(shù)據(jù),,為了確定所讀出的數(shù)據(jù)與原先寫入的數(shù)據(jù)一致,,就要用到數(shù)據(jù)校驗(yàn)。在一般的校驗(yàn)中,,一是采用數(shù)據(jù)字節(jié)值進(jìn)行異或運(yùn)算,;二是字節(jié)值作相加運(yùn)算并忽略進(jìn)位的方法。本文介紹了采用一種16位循環(huán)冗余法(CRC)思想的自定義數(shù)據(jù)校驗(yàn)法,。

  3.1 循環(huán)冗余法的簡介

  循環(huán)冗余法是基于將位串看成是系數(shù)為0或1的多項(xiàng)式,,一個k位的幀可以看成是從xk-1到x0的k次多項(xiàng)式的系數(shù)序列,這個多項(xiàng)式的階數(shù)為k-1,。高位(最左邊)是xk-1項(xiàng)的系數(shù),,下一位是xk-2項(xiàng)的系數(shù),依此類推,。例如11001001有8位,,表示成多項(xiàng)式是x7+x6+x3+x0,多項(xiàng)式的系數(shù)分別是1,,1,,0,0,,1,,0,0和1,。

  如果采用循環(huán)冗余法進(jìn)行校驗(yàn),,在產(chǎn)生校驗(yàn)和時及檢驗(yàn)數(shù)據(jù)時,運(yùn)算必須用相同的生成多項(xiàng)式G(x),,生成多項(xiàng)式的高位和低位必須是1,。以2為模展開運(yùn)算。運(yùn)算法則是:加法不進(jìn)位,,減法不借位,;加法和減法兩者都異或運(yùn)算相同。如果分計(jì)算m位的數(shù)據(jù)序列M(x)的校驗(yàn)和,,生成多項(xiàng)式G(x)必須比多項(xiàng)式M(x)短,,即m>k,。校驗(yàn)的基本思想是:將校驗(yàn)和加在數(shù)據(jù)序列M(x)的末尾,使這個帶校驗(yàn)和的多項(xiàng)式能被G(x)除盡,。當(dāng)檢驗(yàn)數(shù)據(jù)時,,用G(x)去除這個帶校驗(yàn)和的多項(xiàng)式,如果余數(shù)不等于零,,則所檢驗(yàn)的數(shù)據(jù)有錯,。

  計(jì)算檢驗(yàn)和的算法如下:

  (1)設(shè)G(x)為r階,,在數(shù)據(jù)序列的末尾附加r個零,,使數(shù)據(jù)序列為m+r位,則相應(yīng)的多項(xiàng)式是xrM(x),。

 ?。?)按模2除法,用對應(yīng)于G(x)的位串去除對應(yīng)于xrM(x)的位串,,得余數(shù),。

  (3)按模2減法,,從對應(yīng)于xrM(x)的位串中減去余數(shù),。結(jié)果就是帶校驗(yàn)和的數(shù)據(jù)序列,叫多項(xiàng)式T(x),。

  該方法是經(jīng)過嚴(yán)密數(shù)學(xué)推導(dǎo)的,,有三項(xiàng)多項(xiàng)式已成為國際標(biāo)準(zhǔn),即12位的CRC-12:x12+x11+x3+x2+x1+1,;16位的CRC-16:x16+x15+x2+1和CRC-CCITT:x16+x12+x5+1,。

  3.2 自定義數(shù)據(jù)校驗(yàn)的軟件實(shí)現(xiàn)

  循環(huán)冗余法在通訊中的實(shí)現(xiàn)一般是用一種簡單的移位寄存器電路來進(jìn)行運(yùn)算,并用硬件來完成對校驗(yàn)和的校驗(yàn),。實(shí)際應(yīng)用中幾乎都在使用此硬件,。在單片機(jī)控制系統(tǒng)中,參考這一產(chǎn)生數(shù)據(jù)序列校驗(yàn)和的思想,,由于單片機(jī)的運(yùn)算速度已相當(dāng)高,,用軟件實(shí)現(xiàn)這一校驗(yàn)也是可行的。在檢錯要求較高的情況下,,并考慮到單片機(jī)的運(yùn)算是基于字節(jié)(8位數(shù)據(jù))的,,數(shù)據(jù)校驗(yàn)采用以下自定義數(shù)據(jù)校驗(yàn)算法。自定義算法的生成多項(xiàng)式取G(x)=x7+x5+1,,可以檢出1位錯和2位錯,,顯然比字節(jié)和或者異或和的檢錯能力大。

  自定義數(shù)據(jù)序列校驗(yàn)的軟件實(shí)現(xiàn)流程如圖4所示,。根據(jù)流程圖,,校驗(yàn)用到異或和移位操作運(yùn)算,,軟件編程用相應(yīng)的單片機(jī)匯編語言較易實(shí)現(xiàn),程序簡捷,,實(shí)時性好,。

  單片機(jī)控制系統(tǒng)在保存運(yùn)行參數(shù)過程中,首先在RAM區(qū)中連續(xù)存儲運(yùn)行參數(shù),,并用自定義數(shù)據(jù)校驗(yàn)算法計(jì)算運(yùn)行參數(shù)的校驗(yàn)和,。系統(tǒng)向X24C44寫入運(yùn)行參數(shù)值時,也將校驗(yàn)和寫入,。在讀出X24C44中的運(yùn)行參數(shù)時,,再用同一算法計(jì)算檢驗(yàn)和,與X24C44中原有的校驗(yàn)和比較,,判別數(shù)據(jù)是否合法,,如果校驗(yàn)和相同,則對運(yùn)行參數(shù)的讀寫是正確的,。這一檢驗(yàn)算法可有效保證程序所使用的運(yùn)行參數(shù)的有效性。

  在讀出X24C44的運(yùn)行參數(shù)時,,如果所讀出的數(shù)據(jù)按同一方法計(jì)算校驗(yàn)和與X24C44中原有的校驗(yàn)和不一致,,則表明讀出的是錯誤的數(shù)據(jù)。這時可不用這些數(shù)據(jù),,在程序中調(diào)用默認(rèn)的運(yùn)行參數(shù)值,,從而保證了門機(jī)控制系統(tǒng)的安全運(yùn)行,提高了可靠性,。

 

  4 參數(shù)的取值范圍檢驗(yàn)

  在單片機(jī)控制系統(tǒng)中,,所使用的參數(shù)數(shù)值如果超過了系統(tǒng)的允許范圍,則有可能使系統(tǒng)運(yùn)行出現(xiàn)不可預(yù)見的工作狀況,。為了保證控制系統(tǒng)按所要求的功能運(yùn)行,,系統(tǒng)在使用運(yùn)行參數(shù)之前要進(jìn)行取值范圍檢驗(yàn)。

  在單片機(jī)組成的系統(tǒng)中,,系統(tǒng)的運(yùn)行參數(shù)絕大多數(shù)是正數(shù),。如果運(yùn)行參數(shù)1的取值范圍為N11≤參數(shù)1≤N12,則在運(yùn)行參數(shù)的取值范圍檢驗(yàn)子程序中,,系統(tǒng)進(jìn)行條件處理為:當(dāng)參數(shù)1<N11時,,令參數(shù)1取值為N11;當(dāng)參數(shù)1>N12時,,令參數(shù)1取值為N12,;當(dāng)參數(shù)1在許可范圍之內(nèi)時,參數(shù)1取值不變,。運(yùn)行參數(shù)的取值范圍檢驗(yàn)子程序處理流程如圖5所示,。

  5 結(jié)束語

  本文所討論的運(yùn)行參數(shù)的保存及參數(shù)有效性判別的實(shí)現(xiàn)方法,,在作者所開發(fā)的電梯門機(jī)單片機(jī)控

  制系統(tǒng)中使用,實(shí)際應(yīng)用表明:可以保證運(yùn)行參數(shù)在設(shè)計(jì)的許可范圍內(nèi),,保證系統(tǒng)有較強(qiáng)的容錯能力,,提高控制系統(tǒng)的運(yùn)行可靠性。這一方法也可應(yīng)用于需要保存參數(shù)的單片機(jī)組成系統(tǒng)中,,如智能儀表,、運(yùn)動控制等領(lǐng)域的系統(tǒng)。

此內(nèi)容為AET網(wǎng)站原創(chuàng),,未經(jīng)授權(quán)禁止轉(zhuǎn)載,。