楊偉



【摘 要】參數的動態配置對于單片機控制設備而言至關重要。通過參數配置的需求分析,明確了參數的硬件相關性和參數數據量小的特點,選擇C8051F120作為實現平臺,在C8051F120上實現了對參數的讀寫及動態配置,并通過了實際使用和測試,簡單實用。
【關鍵詞】C8051F120 參數配置 FLASH
Design of Dynamic Parameter Configuration Based on C8051F120
YANG Wei
[Abstract] The dynamic parameter configuration is crucial for the control equipment of MCU. Based on the requirement analysis on parameter configuration, the features of hardware correlation and small amount of parameters were determined. C8051F120 selected as the implementation platform, the read-write and dynamic configuration of parameters was realized. The practical use and test demonstrate the simplicity and feasibility.
[Key words]C8051F120 parameter configuration FLASH
1 引言
對于單片機控制設備而言,或多或少都有些重要的參數需要配置。控制設備可以根據所配置的不同參數,實現不同的功能和作用。在硬件平臺不改變的情況下,僅通過讀取所配置的數據就可以啟動不同的程序,完成不同的任務。同樣,部分調試功能的程序也可以通過參數配置的方式進行開啟或關閉。顯而易見,參數動態配置對單片機控制設備極為重要。
在需要校準和基準需要調整的單片機控制設備上,校準數據和基準就是需要動態保存的參數。通常情況下,需要動態保存的參數的數據量較小。因此,在控制設備中實現參數的動態更新和保存,并不需要選擇硬盤或光盤大容量的存儲方式,只需要選擇合適的平臺。這樣既可以簡化設計,又提高了可靠性。
2 配置參數的需求分析
在控制設備中需要保存的參數包括2個基準值及3個補償值。基準值和補償值均是和硬件電路特性相關,受到濾波器、AD轉換器、混頻器等器件的影響。因此,在不同的硬件平臺上基準值和補償值有所差異。其中,基準值的范圍為-60~5,補充值的范圍為-10~10,均為有符號的數。根據需要選擇參數類型signed char。所需配置的參數一共5個字節,數據量很小。定義參數語句如下:
signed char refValue//基準值,
signed char compAD9874 //補償值。
3 實現平臺C8051F120的FLASH簡介
C8051F120芯片具有DA/AD轉換器、片內看門狗定時器、VDD監視器和溫度傳感器等豐富的片內資源,同時具有高速、低功耗、工業級等特點,很適合用于控制場合。本文就選用C8051F120作為控制設備的實現平臺。
C8051F120內部有128 kB的FLASH存儲器,可用于程序代碼和非易失性數據存儲。另外,FLASH存儲器中有兩個附加的128字節的扇區(共256字節),只能用于非易失性數據存儲。而且,FLASH寫/擦除壽命在-40 ℃~+85 ℃的工業溫度范圍內保證在10 000次以上,適合多次配置。FLASH存儲器中256字節很適合用來存儲信息量小的數據,可以簡化設計和節省成本。
FLASH存儲器可以每次寫一個字節,但必須首先擦除整個扇區。如果要修改一個多字節數據集中的某一個字節,數據必須被移動到臨時存儲區域。128字節的扇區規模使數據更新更加容易,可以不浪費程序存儲器。這兩個128字節的扇區在128 k字節FLASH存儲器中是雙映射的,只能用MOVC讀和用MOVX寫,它們的地址范圍是0x00~0x7F和0x80~0xFF。要訪問這兩個128字節的扇區,PSCTL寄存器中的SFLE位必須被設置為邏輯“1”。
SFLE位含義:臨時FLASH存儲器訪問允許位。當該位為1時,軟件對FLASH的讀/寫操作將指向兩個128字節的FLASH臨時存儲扇區。當SFLE被設置為邏輯“1”時,不應訪問0x00~0xFF以外的地址范圍。
4 寫參數與讀參數的實現
參數的配置過程就是參數的寫入和讀出的反復過程。要實現參數的動態配置,首先可以做到參數的寫入保存,再次做到參數的讀取,即先寫后讀。由于選用FLASH存儲器中的256字節作為參數保存區,讀/寫參數也就是對FLASH的寫/讀操作。FLASH寫操作是用MOVX指令實現的,所以用于寫(或擦除)操作的FLASH指針必須是xdata類型。由于FLASH讀操作是用MOVC指令實現的,用于讀操作的FLASH指針必須是code類型。
4.1 寫參數操作
寫參數就是把參數寫到FLASH中。由于寫一個FLASH字節只能對各位寫入0,因此在寫一個FLASH字節之前,該字節必須被初始化為0xff。而一個FLASH擦除操作將一頁內的所有字節初始化為0xff。即寫入FLASH前,需要對FLASH進行擦除操作。flash_write是用C語言實現的寫參數操作,可以將l_len個字節的數據寫入到以0x00地址為開頭的FLASH內。
4.2 讀參數操作
讀參數就是把參數從FLASH中讀取出來并賦值給指定的參數中。flash_read是用C語言實現的讀參數操作,可以將l_len個字節的數據讀取出來,并拷貝到以l_string為開頭的地址內。
4.3 參數的動態配置
參數的動態配置是由上位機通過串口完成的,連接圖如圖2所示。上位機和控制設備的信息交互是按照預定的串口協議進行的。上位機軟件是VC++6.0編寫的串口程序。配置參數時,由上位機通過串口向單片機發送攜帶參數信息的指令。單片機接收到相關指令后,進行解析,提取出基準值和補償值,寫入FLASH,再從FLASH中讀出,通過串口向外發送確認信息。用戶在上位機通過反饋信息,就可以識別參數配置過程是否成功。
C8051F120具有兩個UART串行端口。通過軟件設置,串行口以115 200 bps的波特率和上位機進行通信。串行口接收數據的方式采用中斷方式。
控制設備中涉及參數的動態配置包括參數的首次寫入、參數的更改。參數的首次寫入指單片機程序剛下載時FLASH中數據不是預期的數據,需要通過上位機發送設置指令,把參數保存到單片機的FLASH中。參數的更改指單片機的使用環境或硬件特性等發生改變時,參數也需要隨之改變。
參數的動態配置就是調用參數讀寫的過程。由于上面已經實現了將參數寫入FLASH和從FLASH中讀取參數操作,這里主要介紹參數的解析和讀寫函數的調用。exec_data()將上位機發送過來的數據拷貝到write _buf數組中,并寫入FLASH中,再從FLASH中讀取數據到read_buf,最后設置給參數refValue和comp_AD9874。
5 參數的有效性
考慮到參數的讀寫過程中可能會受到周圍干擾誤碼,進而導致所獲取的參數超出預定范圍。所以,對讀取出來的參數進行有效性判斷,采用范圍判斷和奇偶檢驗判斷。范圍判斷指判斷讀取的參考值和補償值是否超出預定范圍,如果超出,則給出錯誤提示,如亮燈指示。奇偶檢驗判斷指對讀取出來的參數進行奇偶檢驗判斷,如果校驗的結果不對,表明所讀取的參數不正確,則給出錯誤提示,如亮燈指示。
6 總結
本文根據參數配置的需求,選擇了C8051F120芯片作為平臺,并介紹了如何在C8051F120芯片進行參數的讀寫操作,實現了上位機對控制設備參數的動態配置。該實現方法已在控制設備上使用,操作方便,且效果良好。
參考文獻:
[1] SILABS. C8051F120芯片的datasheet[Z].
[2] 馮順萍,劉文澤,方昌始. 單片機系統運行參數的保存及有效性判別[J]. 信息化研究, 2002,28(6): 1-3.
[3] 陳富安,張瑩. C8051F35X單片機內部FLASH存儲器的擦寫方法[J]. 電子設計工程, 2010,18(2): 105-106.
[4] 江賢志,劉華章,張教育,等. 基于C8051F020單片機的RS485串行通信設計[J]. 電子測量技術, 2014,37(3): 121-124.
[5] 張培仁,孫力. 基于C語言C8051F系列微控制器原理與應用[M]. 北京: 清華大學出版社, 2007.
[6] 潘琢金,施國君. C8051FXXX高速SOC單片機原理及應用[M]. 北京: 北京航空航天大學出版社, 2003.
[7] 王幸之,王雷,翟成,等. 單片機應用系統抗干擾技術[M]. 北京: 北京航空航天大學出版社, 2000.
[8] 尹海宏,陳雷. 基于單片機技術的數據采集系統的設計[J]. 信息技術, 2008(12): 5-7.
[9] 傅務謹. Flash存儲器在嵌入式系統設計中的應用[J]. 福建電腦, 2008,7(22): 91-93.
[10] 趙海艦. 嵌入式系統的Flash編程技術研究[J]. 計算機工程與設計, 2005,11(26): 3006-3008.