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