基于TMS320F2812的產(chǎn)品預(yù)置參數(shù)在線調(diào)試研究
掃描二維碼
隨時(shí)隨地手機(jī)看文章
0 引言
目前,各種光電設(shè)備被廣泛地應(yīng)用于軍事領(lǐng)域和公安、消防以及環(huán)境監(jiān)控等民用領(lǐng)域,它們?cè)谀繕?biāo)偵察、監(jiān)視、預(yù)警、定位、導(dǎo)航、通信等場(chǎng)合起著重要的作用。隨著需求的增加,機(jī)載光電設(shè)備的批量生產(chǎn)中由于元器件和結(jié)構(gòu)裝調(diào)導(dǎo)致的個(gè)體差異造成了每個(gè)設(shè)備的程序進(jìn)行適當(dāng)?shù)膮?shù)調(diào)整,為了產(chǎn)品的規(guī)范管理,本文通過上位機(jī)調(diào)試界面進(jìn)行參數(shù)設(shè)置,并燒寫到伺服控制DSP中。
TI公司推出的32位定點(diǎn)DSP控制器TMS320F2812,整合了DSP和微控制器的最佳特性,頻率高達(dá)150 MHz,是一款高性能32位控制專用芯片。采用它可以大大提高伺服系統(tǒng)的控制精度和速度。在存儲(chǔ)器方面,TMS320F2812包括128 KB 的FLASH Memory、18 KB 的片上RAM 和4 KB 的BOOT ROM.在產(chǎn)品研發(fā)和生產(chǎn)階段需要將用戶程序燒寫到FLASH 存儲(chǔ)器中,以實(shí)現(xiàn)用戶程序的脫機(jī)自動(dòng)運(yùn)行。當(dāng)系統(tǒng)需要更新參數(shù)時(shí),傳統(tǒng)的方法是通過實(shí)地取下設(shè)備,連接仿真器來更新程序數(shù)據(jù),尤其在戶外等較為復(fù)雜的場(chǎng)合,直接取下設(shè)備、連接仿真器存在較大困難,有時(shí)甚至難以實(shí)現(xiàn),此時(shí)通過上位機(jī)發(fā)指令的方法來更新程序中的數(shù)據(jù)就顯得尤為方便。
1 TMS320F2812 FLASH 燒寫介紹
TMS320F2812 FLASH 為了用戶使用方便,提供了專用的針對(duì)FLASH操作的庫文件及燒寫步驟。用戶在使用FLASH 用戶編程接口時(shí)必須使用Flash2812_API_V100.lib庫文件,然后按照以下步驟進(jìn)行:
(1)修改Flash281x_API_Config.h文件,此文件中主要是設(shè)置根據(jù)DSP的時(shí)鐘頻率;
(2)將Flash281x_API_Library.h文件加入到工程中;
(3)將Flash2812_API_V100.lib 文件加入到工程庫文件中;
(4)初始化PLL 控制寄存器(PLLCR);
(5)將FLASH API功能拷貝到內(nèi)部SARAM中;
(6)初始化Flash_CPUScaleFactor;
(7)調(diào)用擦除、寫入、檢查功能進(jìn)行參數(shù)的燒寫;
(8)返回主程序。
2 硬件
本文提出了一種通過雙口RAM與上位機(jī)通信來實(shí)現(xiàn)程序中參數(shù)更新的方法,該系統(tǒng)中DSP接收上位機(jī)發(fā)送控制指令及參數(shù),根據(jù)指令執(zhí)行不同的功能。DSP 接收控制指令,若程序不需更新,則直接跳轉(zhuǎn)到其他應(yīng)用程序入口;若參數(shù)需要更新,則調(diào)用更新服務(wù)程序,接收待更新數(shù)據(jù)、燒寫FLASH,復(fù)位、跳轉(zhuǎn)到應(yīng)用程序入口。硬件框圖如圖1所示。
3 軟件
3.1 軟件流程
DSP程序通過仿真器燒寫到FLASH,其功能為:實(shí)現(xiàn)讀取雙口RAM數(shù)據(jù)并判斷、燒寫FLASH、復(fù)位跳轉(zhuǎn)。
軟件流程圖如圖2所示。
3.2 讀取及處理雙口RAM數(shù)據(jù)軟件
DSP讀取外設(shè)雙口RAM中上位機(jī)發(fā)送的指令及參數(shù),根據(jù)協(xié)議讀取固定地址的指令和參數(shù),為了數(shù)據(jù)讀取的可靠性,指令和參數(shù)均重復(fù)寫在不同的三個(gè)地址,通過三判二,保證指令的可靠性。
3.3 對(duì)片內(nèi)FLASH的擦除、寫入操作軟件
3.3.1 對(duì)片內(nèi)FLASH的準(zhǔn)備
得到需要修改的參數(shù)值之后,需要將數(shù)據(jù)寫入FLASH存儲(chǔ)器進(jìn)行永久存儲(chǔ)。由于FLASH存儲(chǔ)器必須以扇區(qū)為單位進(jìn)行擦除和寫入操作,因此必須對(duì)cmd文件進(jìn)行相應(yīng)的配置,使參數(shù)值單獨(dú)放在一個(gè)扇區(qū)中,代碼存儲(chǔ)在其余的扇區(qū)中。把需要修改的數(shù)據(jù)值單獨(dú)放在J扇區(qū)。
3.3.2 片內(nèi)FLASH修改流程
把需要修改的數(shù)據(jù)值單獨(dú)放在了J扇區(qū),且J扇區(qū)中不再存儲(chǔ)其他任何內(nèi)容。這樣,就可以對(duì)J扇區(qū)進(jìn)行各種操作,而不用擔(dān)心對(duì)系統(tǒng)的代碼或數(shù)據(jù)產(chǎn)生影響了。
為了對(duì)FLASH進(jìn)行操作,需要用到TI為DSP2812提供的FLASH操作API函數(shù)庫:Flash2812_API_V210.lib.這個(gè)庫中包含了操作FLASH 的3 個(gè)重要函數(shù),F(xiàn)lash_Erase,Flash_Program和Flash_Verify.寫入完成后,程序切換到正常工作狀態(tài)。將參數(shù)值寫入FLASH的軟件流程如圖3所示。[!--empirenews.page--]
3.3.3 片內(nèi)FLASH修改軟件
完整的擦寫過程可分為以下幾個(gè)步驟:
關(guān)中斷:在對(duì)FLASH 進(jìn)行操作前,須先關(guān)閉全局中斷。
燒寫過程:代碼的搬移,將映射在“Flash28_API”段上的代碼,復(fù)制到RAM空間去執(zhí)行擦除過程:由于2812最小可擦除的FLASH 內(nèi)存空間就是一個(gè)扇區(qū),而不能單獨(dú)擦除一個(gè)字。由于上述擦除的是J扇區(qū),故可以在J扇區(qū)內(nèi)寫數(shù)據(jù)。
校驗(yàn)過程:將已燒寫數(shù)據(jù)與燒寫數(shù)據(jù)逐個(gè)比較。
在更新程序全部寫入到FLASH 后,恢復(fù)程序運(yùn)行主頻,開始執(zhí)行應(yīng)用程序。
代碼如下:
4 結(jié)語
通過上位機(jī)調(diào)整參數(shù),并傳遞燒寫指令并將參數(shù)寫入FLASH 中的成功應(yīng)用,在大批量生產(chǎn)產(chǎn)品時(shí)保證了程序版本的一致性,狀態(tài)可控,保證了產(chǎn)品管理的規(guī)范性;此方法可多次且可靠、快速地更新產(chǎn)品需調(diào)整特性的參數(shù),方便了產(chǎn)品的調(diào)試,提高了產(chǎn)品的系統(tǒng)可維護(hù)性,具有較強(qiáng)的應(yīng)用價(jià)值。