當(dāng)前位置: 首頁 > 儀表工具產(chǎn)品 > 通用儀表 > 萬用表
發(fā)布日期:2022-04-18 點(diǎn)擊率:63
1 引言
隨鉆測(cè)井儀器內(nèi)部電路由于受到工作環(huán)境中沖擊振動(dòng)因素的影響,往往采用灌膠注封的方法減震,起到保護(hù)電路板的目的。在儀器調(diào)試工作中難免需要調(diào)整各模塊控制功能和程序更新,由于電路板的編程接口被膠密封,加之隨鉆儀器特定的組裝工藝,每次更新電路程序都要消耗大量人力和時(shí)間進(jìn)行拆卸安裝,效率很低。
本文以某隨鉆測(cè)井儀器中的MSP430F2XX型單片機(jī)為例,設(shè)計(jì)了一種總線式多單片機(jī)在線升級(jí)方法,該方法利用上位機(jī)PC通過RS485總線對(duì)系統(tǒng)內(nèi)多個(gè)模塊在系統(tǒng)狀態(tài)實(shí)現(xiàn)了程序升級(jí)更新,很好的解決了上述問題。
2 MSP430F2XX在線編程方法
MSP430F2XX系列單片機(jī)是美國TI公司生產(chǎn)的16位超低功耗單片機(jī),內(nèi)部具有一定容量的閃速存儲(chǔ)器(Flash)[1],該存儲(chǔ)器是一個(gè)可獨(dú)立操作的物理存儲(chǔ)單元。全部模塊安排在同一個(gè)線性地址空間中, 存儲(chǔ)器被分為多個(gè)512字節(jié)的段(信息段大小為128/64字節(jié))。各段可單獨(dú)擦除,并且在正常工作電壓下程序可對(duì)Flash進(jìn)行擦寫操作,這一特點(diǎn)使得它特別適合在線程序升級(jí)。
MSP430FXXX系列單片機(jī)在線升級(jí)的基本原理[2]就是對(duì)其Flash空間進(jìn)行自定義劃分,并按程序指定地址順序執(zhí)行。以MSP430F2XX為例,打開Lnk430F2XX.xcl,修改此文件用于重新劃分單片機(jī)Flash存儲(chǔ)空間。該型號(hào)單片機(jī)存儲(chǔ)空間為4KB RAM,120KB+256B Flash[3]。 其原始存儲(chǔ)空間分布和在線編程空間分布如下圖1所示。
圖1中將2100H-FFBEH的Flash空間劃分為了3部分。一小部分用于存放引導(dǎo)程序,一小部分為用戶虛擬中斷地址區(qū),剩下的大部分為用戶的應(yīng)用程序空間。Flash空間的劃分目的是使程序的存放和程序的執(zhí)行按地址有序進(jìn)行。在線編程時(shí)的底層程序執(zhí)行流程[4]如下圖2所示。
圖2 單片機(jī)底層程序執(zhí)行流程圖
第一次對(duì)單片機(jī)進(jìn)行燒寫時(shí)須通過仿真器將包含引導(dǎo)程序的主程序?qū)懭雴纹瑱C(jī)Flash,通過該程序來選擇引導(dǎo)應(yīng)用程序,引導(dǎo)程序需要固定在Flash的一個(gè)位置上,且保證不能被擦除。以后再次更新程序時(shí)即可通過引導(dǎo)程序利用串口與上位機(jī)進(jìn)行交互,完成應(yīng)用程序的在線更新。
void main(void) {
WDTCTL = WDTPW + WDTHOLD;
if(ResetVectorValid()==1) // 判斷是否已經(jīng)下載過應(yīng)用程序
{
Application(); // 執(zhí)行應(yīng)用程序
}
Update(); // 執(zhí)行升級(jí)程序
}
每次上電執(zhí)行時(shí),單片機(jī)從引導(dǎo)程序開始執(zhí)行,首先
判斷應(yīng)用程序是否存在。若存在,直接執(zhí)行應(yīng)用程序;從引導(dǎo)程序進(jìn)入應(yīng)用程序只需將PC值轉(zhuǎn)移到相應(yīng)的應(yīng)用程序起始地址位置即可。
void Application(void)
{
asm(" mov &0xF9BE, PC;"); // 在C中調(diào)用匯編指令實(shí)現(xiàn)地址轉(zhuǎn)移
}
若不存在,則啟動(dòng)升級(jí)程序。在升級(jí)程序中,首先初始化串口,然后根據(jù)協(xié)議擦除Flash中指定用于存放應(yīng)用程序的存儲(chǔ)空間,完成后通過串口向上位機(jī)發(fā)送握手指令,通知上位機(jī)發(fā)送更新代碼,最后將上位機(jī)發(fā)送的應(yīng)用程序可執(zhí)行文件寫入單片機(jī)片內(nèi) Flash的應(yīng)用程序空 間,燒寫完成后執(zhí)行更新后的應(yīng)用程序。
void Update(void)
{
InitUart(); // 初始化串口
EraseFlash(unsigned int waddr); // 擦除指定位置Flash
uart_send("Update Ready !"); // 發(fā)送確認(rèn)
while(1)
{
/*接受數(shù)據(jù),并將數(shù)據(jù)寫入Flash指定地址空間*/
}
}
3 應(yīng)用方案設(shè)計(jì)
將上述方法擴(kuò)展,應(yīng)用于隨鉆測(cè)井儀器多模塊電路程序在線升級(jí)更新,其總體構(gòu)架設(shè)計(jì)如圖3所示。圖3系統(tǒng)中,為實(shí)現(xiàn)在系統(tǒng)狀態(tài)升級(jí)更新,以MSP430F2XX單片機(jī)為核心控制器的各子模塊電路,采用RS485總線方式與外部上位機(jī)連通,連接處為一塊RS485轉(zhuǎn)換電路,該電路將PC機(jī)發(fā)出的RS232串行數(shù)據(jù)轉(zhuǎn)換成RS485數(shù)據(jù)發(fā)送到RS485總線上[5]。工作時(shí),上位機(jī)PC軟件將各單片機(jī)的應(yīng)用程序的可執(zhí)行文件通過RS485總線以不同的地址、不同的波特率發(fā)送到相應(yīng)的模塊電路,實(shí)現(xiàn)各模塊的在系統(tǒng)狀態(tài)程序升級(jí)更新。
圖3 RS485總線式
多模塊在線升級(jí)更新總體構(gòu)架
4 方法實(shí)現(xiàn)
與單單片機(jī)系統(tǒng)在線編程不同,多單片機(jī)系統(tǒng)由于存在多個(gè)子機(jī),為使上位機(jī)程序能準(zhǔn)確到達(dá)指定的子模塊電路,首先要為各子模塊定義各自的地址和通信波特率,并確保地址和波特率各不相同。當(dāng)上位機(jī)以某一波特率發(fā)送地址位時(shí),各子模塊分別以自己的波特率接收,然后對(duì)比地址。若接收到的地址與自己地址相同,則該子模塊準(zhǔn)備進(jìn)行程序在線更新;若不相同,則放棄更新,進(jìn)入各自應(yīng)用程序。
4.1 底層程序執(zhí)行流程
對(duì)于處于多單片機(jī)系統(tǒng)中的各子模塊,其MSP430F2XX單片機(jī)存儲(chǔ)空間的重新劃分與單一系統(tǒng)在線編程時(shí)相同,見圖1。但其內(nèi)部底層程序執(zhí)行流程略有不同,主要體現(xiàn)在引導(dǎo)程序的編寫,如圖4所示。在引導(dǎo)程序中,首先要進(jìn)行時(shí)鐘初始化,串口初始化,設(shè)定通信波特率,定時(shí)器初始化,然后開啟定時(shí)器,等待上位機(jī)發(fā)送地址。若在規(guī)定的時(shí)間內(nèi)接收到上位機(jī)發(fā)送的地址,且與本子模塊地址相同,則向上位機(jī)發(fā)送確認(rèn)信息,等待接收更新后的程序代碼,將其寫入用戶應(yīng)用程序空間,完成程序在線升級(jí)更新;若在規(guī)定的時(shí)間內(nèi)沒有接收到地址指令或接收到的地址與本機(jī)指定的地址不同,則跳過程序更新,運(yùn)行原有應(yīng)用程序。
圖4 多單片機(jī)系統(tǒng)下
各子模塊單片機(jī)底層程序執(zhí)行流程
4.2 上位機(jī)軟件開發(fā)
圖5 上位機(jī)界面
上位機(jī)軟件采用LabVIEW設(shè)計(jì)開發(fā)[6],LabVIEW是NI公司推出的一種虛擬儀器軟件開發(fā)平臺(tái),采用了編譯圖形化編程語言,軟件開發(fā)快速,靈活。上位機(jī)軟件的功能是當(dāng)隨鉆測(cè)井儀器上電復(fù)位后,在規(guī)定時(shí)間內(nèi)向指定子模塊發(fā)出更新程序指令(即子模塊地址),在收到該子模塊應(yīng)答的確認(rèn)信息后,向該子模塊發(fā)送程序代碼的可執(zhí)行文件。上位機(jī)界面如圖5所示。在操作時(shí),首先打開PC機(jī)與RS485轉(zhuǎn)換電路相連的串口,根據(jù)協(xié)議選擇波特率和數(shù)據(jù)比特,在命令欄輸入擬更新子模塊的地址,點(diǎn)擊“發(fā)送”按鈕,發(fā)送子模塊地址,待收到確認(rèn)信息后,選擇要更新的程序文件,點(diǎn)擊“升級(jí)”按鈕,就可
以進(jìn)行子模塊程序的升級(jí)更新了。更改地址和波特率,選擇相應(yīng)的更新文件,即可對(duì)系統(tǒng)中其他子模塊進(jìn)行程序在線升級(jí)更新。
5 結(jié)束語
將MSP430F2xx在線編程方法擴(kuò)展到多單片機(jī)系統(tǒng)在線升級(jí)更新,并將其應(yīng)用到隨鉆測(cè)井儀器在線程序更新,經(jīng)實(shí)踐驗(yàn)證表明,該升級(jí)方式穩(wěn)定可靠,大大減少了隨鉆測(cè)井儀器電路維護(hù)的時(shí)間成本和人工成本,在實(shí)際應(yīng)用中起到了事半功倍的效果。同時(shí),此種方法同樣適用于采用了MSP430Fxxx系列的其他領(lǐng)域的多單片機(jī)系統(tǒng)程序在線更新。
參考文獻(xiàn):
[1] 潘衛(wèi)江等.MSP430單片機(jī)Flash存儲(chǔ)器的特性及應(yīng)用[J]. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2001,(4):38-41.
[2] 袁娟等.MSP430程序升級(jí)方式探討 [J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2006,(5):65-67.
[3] MSP430x2xx Family User’s Guide[EB/OL].Literature Number:SLAU144H.
[4] 張園等.MSP430單片機(jī)串口的程序升級(jí)方法[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2011,(10):23-24.
[5] 沈建華,楊艷琴編著.MSP430系列16位超低功耗單片機(jī)原理與實(shí)踐[M].北京航空航天大學(xué)出版社,2008.
[6] 鄭對(duì)元等編著.精通LabVIEW虛擬儀器程序設(shè)計(jì)[M].清華大學(xué)出版社,2012.
下一篇: PLC、DCS、FCS三大控
上一篇: 索爾維全系列Solef?PV