基于TMS320F2812的產(chǎn)品預置參數在線(xiàn)調試研究
目前,各種光電設備被廣泛地應用于軍事領(lǐng)域和公安、消防以及環(huán)境監控等民用領(lǐng)域,它們在目標偵察、監視、預警、定位、導航、通信等場(chǎng)合起著(zhù)重要的作用。隨著(zhù)需求的增加,機載光電設備的批量生產(chǎn)中由于元器件和結構裝調導致的個(gè)體差異造成了每個(gè)設備的程序進(jìn)行適當的參數調整,為了產(chǎn)品的規范管理,本文通過(guò)上位機調試界面進(jìn)行參數設置,并燒寫(xiě)到伺服控制DSP中。
本文引用地址:http://dyxdggzs.com/article/201612/328025.htmTI公司推出的32位定點(diǎn)DSP控制器TMS320F2812,整合了DSP和微控制器的最佳特性,頻率高達150 MHz,是一款高性能32位控制專(zhuān)用芯片。采用它可以大大提高伺服系統的控制精度和速度。在存儲器方面,TMS320F2812包括128 KB 的FLASH Memory、18 KB 的片上RAM 和4 KB 的BOOT ROM.在產(chǎn)品研發(fā)和生產(chǎn)階段需要將用戶(hù)程序燒寫(xiě)到FLASH 存儲器中,以實(shí)現用戶(hù)程序的脫機自動(dòng)運行。當系統需要更新參數時(shí),傳統的方法是通過(guò)實(shí)地取下設備,連接仿真器來(lái)更新程序數據,尤其在戶(hù)外等較為復雜的場(chǎng)合,直接取下設備、連接仿真器存在較大困難,有時(shí)甚至難以實(shí)現,此時(shí)通過(guò)上位機發(fā)指令的方法來(lái)更新程序中的數據就顯得尤為方便。
1 TMS320F2812 FLASH 燒寫(xiě)介紹
TMS320F2812 FLASH 為了用戶(hù)使用方便,提供了專(zhuān)用的針對FLASH操作的庫文件及燒寫(xiě)步驟。用戶(hù)在使用FLASH 用戶(hù)編程接口時(shí)必須使用Flash2812_API_V100.lib庫文件,然后按照以下步驟進(jìn)行:
(1)修改Flash281x_API_Config.h文件,此文件中主要是設置根據DSP的時(shí)鐘頻率;
(2)將Flash281x_API_Library.h文件加入到工程中;
(3)將Flash2812_API_V100.lib 文件加入到工程庫文件中;
(4)初始化PLL 控制寄存器(PLLCR);
(5)將FLASH API功能拷貝到內部SARAM中;
(6)初始化Flash_CPUScaleFactor;
(7)調用擦除、寫(xiě)入、檢查功能進(jìn)行參數的燒寫(xiě);
(8)返回主程序。
2 硬件
本文提出了一種通過(guò)雙口RAM與上位機通信來(lái)實(shí)現程序中參數更新的方法,該系統中DSP接收上位機發(fā)送控制指令及參數,根據指令執行不同的功能。DSP 接收控制指令,若程序不需更新,則直接跳轉到其他應用程序入口;若參數需要更新,則調用更新服務(wù)程序,接收待更新數據、燒寫(xiě)FLASH,復位、跳轉到應用程序入口。硬件框圖如圖1所示。

3 軟件
3.1 軟件流程
DSP程序通過(guò)仿真器燒寫(xiě)到FLASH,其功能為:實(shí)現讀取雙口RAM數據并判斷、燒寫(xiě)FLASH、復位跳轉。
軟件流程圖如圖2所示。

3.2 讀取及處理雙口RAM數據軟件
DSP讀取外設雙口RAM中上位機發(fā)送的指令及參數,根據協(xié)議讀取固定地址的指令和參數,為了數據讀取的可靠性,指令和參數均重復寫(xiě)在不同的三個(gè)地址,通過(guò)三判二,保證指令的可靠性。
3.3 對片內FLASH的擦除、寫(xiě)入操作軟件
3.3.1 對片內FLASH的準備
得到需要修改的參數值之后,需要將數據寫(xiě)入FLASH存儲器進(jìn)行永久存儲。由于FLASH存儲器必須以扇區為單位進(jìn)行擦除和寫(xiě)入操作,因此必須對cmd文件進(jìn)行相應的配置,使參數值單獨放在一個(gè)扇區中,代碼存儲在其余的扇區中。把需要修改的數據值單獨放在J扇區。
3.3.2 片內FLASH修改流程
把需要修改的數據值單獨放在了J扇區,且J扇區中不再存儲其他任何內容。這樣,就可以對J扇區進(jìn)行各種操作,而不用擔心對系統的代碼或數據產(chǎn)生影響了。
為了對FLASH進(jìn)行操作,需要用到TI為DSP2812提供的FLASH操作API函數庫:Flash2812_API_V210.lib.這個(gè)庫中包含了操作FLASH 的3 個(gè)重要函數,Flash_Erase,Flash_Program和Flash_Verify.寫(xiě)入完成后,程序切換到正常工作狀態(tài)。將參數值寫(xiě)入FLASH的軟件流程如圖3所示。

3.3.3 片內FLASH修改軟件
完整的擦寫(xiě)過(guò)程可分為以下幾個(gè)步驟:
關(guān)中斷:在對FLASH 進(jìn)行操作前,須先關(guān)閉全局中斷。
燒寫(xiě)過(guò)程:代碼的搬移,將映射在“Flash28_API”段上的代碼,復制到RAM空間去執行擦除過(guò)程:由于2812最小可擦除的FLASH 內存空間就是一個(gè)扇區,而不能單獨擦除一個(gè)字。由于上述擦除的是J扇區,故可以在J扇區內寫(xiě)數據。
校驗過(guò)程:將已燒寫(xiě)數據與燒寫(xiě)數據逐個(gè)比較。
在更新程序全部寫(xiě)入到FLASH 后,恢復程序運行主頻,開(kāi)始執行應用程序。
代碼如下:


4 結語(yǔ)
通過(guò)上位機調整參數,并傳遞燒寫(xiě)指令并將參數寫(xiě)入FLASH 中的成功應用,在大批量生產(chǎn)產(chǎn)品時(shí)保證了程序版本的一致性,狀態(tài)可控,保證了產(chǎn)品管理的規范性;此方法可多次且可靠、快速地更新產(chǎn)品需調整特性的參數,方便了產(chǎn)品的調試,提高了產(chǎn)品的系統可維護性,具有較強的應用價(jià)值。
評論