在我們做的一些儀表中,不可避免的要用到精度校準.如,
* 熱量表的溫度系數標定; * 流量表的正負誤差值標定; * 各種傳感器的溫度補償系數標定; * RF系統中調諧參數的標定
因為上述的這些參數都不是固定的,而是根據PCB以及外部傳感器,設備連接關系等來做進一步的精度調節的,這樣就有必要在產品成型后做一個參數標定.
那么這些標定值是如何設置進我們的MSP中(因為F系列的MSP430芯片內部是FLASH的,可重復編程,這樣就不需要像普通51那樣外擴EEPROM了)以及存放的區域都成為我們此次探討的重點.
1,存放這些標定系數的區域
在MSP430中,我們可以將這些標定系數存放在INFOMATION FLASH中,這個區域分128*2總計256字節的信息存儲空間,而且也是統一編址的.擦寫可以分兩塊小區域---128字節一個區域來操作,而不用整個扇區的擦除后再寫入.
另一個辦法就是針對標定數據量大的應用:直接在MSP430程序空間中開一塊512字節的常規FLASH扇區用做數據標定,這個標定前一定要對整個扇區的512字節做擦除操作.
還有一類非常特殊的應用,就是把標定參數放在RAM中,這些在下一次上電后就不存在了,這些標定數據是由程序根據某些外部輸入來定義的暫時值.
上述的三種標定的存儲方式比較常規
2,如何進行標定
A 首先想到的是用FET進行每塊產品的代碼重入,呵呵,這個最簡單,但是要每次編譯原代碼,安全系數受誤操作影響大,還有就是不容易控制代碼擴散.
B 通過BSL來進行標定,這個相對來說安全點,因為給的目標文件已經是HEX碼,原代碼得到安全的保護(不過解密仍然能通過HEX生成ASM)不過比較煩瑣的操作可以分為兩種,一種是直接修改HEX碼里某處數據,以達到標定目的,當然,這個操作可以通過PC軟件事先計算好,定位好.另一種方式就是將測試程序寫到MCU中,生成一組標定數據到INFO FLASH中,然后再次燒進去成熟的程序,這樣通過測試程序和正常程序分離標定的方法在計量儀表中使用比較方便.
C 通過串口進行標定.這個操作需要MCU程序支持,首先把存放標定數據的空間定義好,然后直接從串口接收標定命令/數據,然后寫入到標定區域,這樣的做法實際上最靈活最安全,因為所有的代碼都是不可見的,可以有效防止攻擊和代碼擴散.但是,有一個缺點,就是要損耗一個UART作為標定用,也就是說,在那些沒有UART的MSP430中,使用軟件模擬等都增加了這種方式標定的執行難度
D 特殊場合特殊的標定:如果不僅僅要標定,而且還有可能修改程序中已經過時的算法,而且這些設備有可能無法取回或者為了節約差旅成本不人工取回.這樣就要考慮遠程升級-----通過GPRS/CDMA/ISM RF等等
呵呵,上述是我們ZOLAB關于參數標定的一些制造經驗,可能還有一些更好的辦法,但是由于行業限制,我們也無法去一一驗證,歡迎各位多提建議
|
|