<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 單片機系統運行參數的保存及有效性判別

單片機系統運行參數的保存及有效性判別

作者: 時(shí)間:2011-10-25 來(lái)源:網(wǎng)絡(luò ) 收藏
1 引 言
  在構成的控制系統中,系統控制時(shí)需要使用和保存已經(jīng)設置或優(yōu)化的參數。如果將僅僅存儲于的RAM區中,則系統在掉電或重啟時(shí)將會(huì )丟失這些重要參數,不能正常運行。為了解決上述問(wèn)題,保證控制系統正常、可靠地運行,需要將這些保存在足夠容量的電可擦除存儲器(EEPROM)中。在寫(xiě)入或讀出EEPROM中的數據時(shí),為保證數據操作的正確性,則需要進(jìn)行數據校驗。在系統運行這些參數之前,為檢查的取值是否在許可范圍之內,則需要進(jìn)行參數取值范圍的檢驗。本文結合作者開(kāi)發(fā)的電梯轎廂門(mén)機控制系統,來(lái)詳細討論參數保存和校驗的設計及實(shí)現。
2 系統運行參數的存儲
  在組成的控制系統中,系統設置的運行參數是系統正常運行所必須使用的,既要保證運行參數的可修改性,又要保證運行參數在系統停機或掉電的情況下能夠正確保存,因而運行參數應保存在電可擦除存儲器(EEPROM)中。根據參數個(gè)數的多少,決定所使用EEPROM的存儲容量。例如,在本文的單片機系統中,電梯轎廂門(mén)機控制運行所需要的參數有:門(mén)寬參數、有無(wú)光電檢測、輸出保持力矩、開(kāi)門(mén)加速步頻、關(guān)門(mén)加速步頻、開(kāi)門(mén)減速步頻、關(guān)
門(mén)減速步頻、工作計數器等,設計中要求存儲的參數共需28個(gè)字節,再加上一個(gè)字節校驗和,所以選用32字節容量的EEPROM。Xicro公司的X24C44能滿(mǎn)足上述可修改性和容量的要求。
2.1 EPROM芯片簡(jiǎn)介及硬件組成
  電可擦除存儲芯片X24C44是一個(gè)八引腳的芯片,其內部有存儲矩陣和RAM兩個(gè)存儲區,外部引腳的功能如圖1所示。芯片各引腳的功能為:CE為芯片使能引腳;Vcc及Vss為電源引腳;電壓為+5V;SK是讀寫(xiě)X24C44數據時(shí)所用到的外部時(shí)鐘同步信號;DI為命令或數據串行輸入X24C44的信號引腳;DO為X24C44數據串行輸出的信號引腳;STORE為低電平時(shí),允許將EEPROM中RAM的內容保存到存儲矩陣;RECALL為低電平時(shí),允許將EEPROM的存儲矩陣的內容傳送到EEPROM的RAM中。

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


  按照向X24C44寫(xiě)入兩字節內容的時(shí)序,寫(xiě)入兩字節數據的操作類(lèi)似于讀出操作過(guò)程。
  X24C44采用串行讀寫(xiě)數據,其與單片機的接線(xiàn)簡(jiǎn)單,除了片選信號CE外,只要與單片機的三根I/O引腳相連即可,作用為時(shí)鐘CLK,數據輸入DI,數據輸出DO,其中DO引腳要接一個(gè)10kΩ的上拉
電阻。硬件電路接線(xiàn)如圖3所示。


2.2 EEPROM讀寫(xiě)的實(shí)現
  控制系統中所采用的是51系列單片機,其中讀寫(xiě)子程序設計用匯編也較容易  實(shí)現結構化編程。根據X24C44的時(shí)序和操作過(guò)程,下面給出讀出EEPROM中數據的匯編子程序。單片機將數據寫(xiě)入EEPROM的過(guò)程與讀出過(guò)程相類(lèi)似。讀出EEPROM中數據的匯編子程序如下:
read:push psw;讀數據子程序入口 



3 運行參數的數據校驗
  系統運行參數是單片機控制系統正確運行的關(guān)鍵數值,能確保系統按設置的特性運行。在許多單片機組成的控制系統中,系統在運行過(guò)程中需讀出EEPROM中的數據,為了確定所讀出的數據與原先寫(xiě)入的數據一致,就要用到數據校驗。在一般的校驗中,一是采用數據字節值進(jìn)行異或運算;二是字節值作相加運算并忽略進(jìn)位的方法。本文介紹了采用一種16位循環(huán)冗余法(CRC)思想的自定義數據校驗法。
3.1 循環(huán)冗余法的簡(jiǎn)介
  循環(huán)冗余法是基于將位串看成是系數為0或1的多項式,一個(gè)k位的幀可以看成是從xk-1到x0的k次多項式的系數序列,這個(gè)多項式的階數為k-1。高位(最左邊)是xk-1項的系數,下一位是xk-2項的系數,依此類(lèi)推。例如11001001有8位,表示成多項式是x7+x6+x3+x0,多項式的系數分別是1,1,0,0,1,0,0和1。
  如果采用循環(huán)冗余法進(jìn)行校驗,在產(chǎn)生校驗和時(shí)及檢驗數據時(shí),運算必須用相同的生成多項式G(x),生成多項式的高位和低位必須是1。以2為?! ≌归_(kāi)運算。運算法則是:加法不進(jìn)位,減法不借位;加法和減法兩者都異或運算相同。如果分計算m位的數據序列M(x)的校驗和,生成多項式G(x)必須比多項式M(x)短,即m>k。校驗的基本思想是:將校驗和加在數據序列M(x)的末尾,使這個(gè)帶校驗和的多項式能被G(x)除盡。當檢驗數據時(shí),用G(x)去除這個(gè)帶校驗和的多項式,如果余數不等于零,則所檢驗的數據有錯。
計算檢驗和的算法如下:
 ?。?)設G(x)為r階,在數據序列的末尾附加r個(gè)零,使數據序列為m+r位,則相應的多項式是xrM(x)。
 ?。?)按模2除法,用對應于G(x)的位串去除對應于xrM(x)的位串,得余數。
 ?。?)按模2減法,從對應于xrM(x)的位串中減去余數。結果就是帶校驗和的數據序列,叫多項式T(x)。
  該方法是經(jīng)過(guò)嚴密數學(xué)推導的,有三項多項式已成為國際標準,即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í)現
  循環(huán)冗余法在通訊中的實(shí)現一般是用一種簡(jiǎn)單的移位寄存器電路來(lái)進(jìn)行運算,并用硬件來(lái)完成對校驗和的校驗。實(shí)際應用中幾乎都在使用此硬件。在單片機控制系統中,參考這一產(chǎn)生數據序列校驗和的思想,由于單片機的運算速度已相當高,用軟件實(shí)現這一校驗也是可行的。在檢錯要求較高的情況下,并考慮到單片機的運算是基于字節(8位數據)的,數據校驗采用以下自定義數據校驗算法。自定義算法的生成多項式取G(x)=x7+x5+1,可以檢出1位錯和2位錯,顯然比字節和或者異或和的檢錯能力大。
  自定義數據序列校驗的軟件實(shí)現流程如圖4所示。根據流程圖,校驗用到異或和移位操作運算,軟件編程用相應的單片機匯編語(yǔ)言較易實(shí)現,程序簡(jiǎn)捷,實(shí)時(shí)性好。
  單片機控制系統在保存運行參數過(guò)程中,首先在RAM區中連續存儲運行參數,并用自定義數據校驗算法計算運行參數的校驗和。系統向X24C44寫(xiě)入運行參數值時(shí),也將校驗和寫(xiě)入。在讀出X24C44中的運行參數時(shí),再用同一算法計算檢驗和,與X24C44中原有的校驗和比較,判別數據是否合法,如果校驗和相同,則對運行參數的讀寫(xiě)是正確的。這一檢驗算法可有效保證程序所使用的運行參
數的有效性。
  在讀出X24C44的運行參數時(shí),如果所讀出的數據按同一方法計算校驗和與X24C44中原有的校驗和不一致,則表明讀出的是錯誤的數據。這時(shí)可不用這些數據,在程序中調用默認的運行參數值,從而
保證了門(mén)機控制系統的安全運行,提高了可靠性。

4 參數的取值范圍檢驗
  在單片機控制系統中,所使用的參數數值如果超過(guò)了系統的允許范圍,則有可能使系統運行出現不可預見(jiàn)的工作狀況。為了保證控制系統按所要求的功能運行,系統在使用運行參數之前要進(jìn)行取值范圍檢驗。
  在單片機組成的系統中,系統的運行參數絕大多數是正數。如果運行參數1的取值范圍為N11≤參數1≤N12,則在運行參數的取值范圍檢驗子程序中,系統進(jìn)行條件處理為:當參數1<N11時(shí),令參數1取值為N11;當參數1>N12時(shí),令參數1取值為N12;當參數1在許可范圍之內時(shí),參數1取值不變。運行參數的取值范圍檢驗子程序處理流程如圖5所示。
5 結束語(yǔ)
  本文所討論的運行參數的保存及參數的實(shí)現方法,在作者所開(kāi)發(fā)的電梯門(mén)機單片機控
制系統中使用,實(shí)際應用表明:可以保證運行參數在設計的許可范圍內,保證系統有較強的容錯能力,提高控制系統的運行可靠性。這一方法也可應用于需要保存參數的單片機組成系統中,如智能儀表、運動(dòng)控制等領(lǐng)域的系統。

 
  參考文獻
1 何立民編著(zhù).MCS-51系列單片機應用系統的設計—系統配置與接口技術(shù).北京:北京航空航天大學(xué)出版社,1999
2 Andrew S.Tanenbaum著(zhù),熊桂喜,王小虎等譯.計算機網(wǎng)絡(luò )(第三版).北京:清華大學(xué)出版社,1999
3 鄭人杰,殷人昆,陶永雷.實(shí)用軟件工程(第二版).北京:清華大學(xué)出版社,1998 


評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>