新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于ARM44B0x的信號發(fā)射機控制器設計

基于ARM44B0x的信號發(fā)射機控制器設計

作者:黃勇亮 時間:2008-05-29 來源:微計算機信息 收藏

[摘要]文章選用了處理器作為控制器內核,開發(fā)完成了約定鍵盤、菜單操作及LCD顯示程序數(shù)據(jù)采集及處理實現(xiàn)軟件PC通訊協(xié)議及實現(xiàn)軟件,在其控制下完成數(shù)據(jù)地采集和處理并實現(xiàn)對廣播發(fā)射機的工作狀態(tài)進行監(jiān)控,同時具有人機交互的功能。
關鍵詞:; ;;

本文引用地址:http://2s4d.com/article/83305.htm

1.前言

       船舶上使用的信號發(fā)射機是連續(xù)工作的,所以需要一個控制器對發(fā)射機的工作狀態(tài)進行監(jiān)控,常見的是用單片機作控制器的內核,但由于32位微處理器具有更好的精度和可靠性且低成本低功耗,所以在工業(yè)控制領域的應用日益廣泛。采用的32位微處理ARM作為控制器的內核,設計的控制器將比用單片機作內核的處理器具有更全面的功能和更好的使用性能。

  發(fā)射機控制器的主要功能是對多路模擬量和開關量的數(shù)據(jù)采集和處理監(jiān)控發(fā)射機的工作狀態(tài);控制器控制發(fā)射機同時控制器又受上位機的控制,它要能在任意時刻準備好接收從上位機串口、網(wǎng)口發(fā)來的數(shù)據(jù),它們之間的相對關系如圖:

 

圖1   控制器系統(tǒng)結構圖

  上位機向控制器發(fā)送數(shù)據(jù)從而實現(xiàn)對控制器的控制,首先上位機送出機號,再送命令字;控制器也要向上位機上傳數(shù)據(jù)完成通訊應答,它首先解析機號是否與自己的機號一致,若一致則再解析命令字,根據(jù)命令字來送出上傳的數(shù)據(jù)完成應答;若不一致則不再作進一步的數(shù)據(jù)解析。它們的通訊方式有串口通訊和以太網(wǎng)通訊兩種;控制器和發(fā)射機的數(shù)據(jù)傳輸主要有模擬量的采集和開關量的輸入輸出;另外,模塊實現(xiàn)發(fā)射機工作過程中的參數(shù)的實時顯示和參數(shù)修改和查詢。實時采集的數(shù)據(jù)是由AD采樣得到的,需要注意的是S3c44B0沒有采樣保持電路所以通道的切換頻率不能超過100Hz,在ADC開啟路時都需要一個延時,利用這段時間來對上一路進行濾波而提高程序的效率。整個采樣的過程可以描述為開啟當前通道,然后濾波上次采樣的通道(中位值平均濾波法)。

2.開關機描述及軟件設計

 

圖2 傳口通訊流程圖

  項目的開發(fā)首先要完成開關機功能、功能模塊、通訊模塊的程序設計和調試,先討論開關機的程序設計;用戶要求控制器上鍵的功能是能編輯的即每一個鍵的功能不固定,可以通過PC機修改;開機時要按優(yōu)先級順序由高到低輸出一系列的動作,每個動作都有可編輯的優(yōu)先級(通過PC機編輯),一個動作輸出后可能會引起其它同一優(yōu)先級水平動作的發(fā)生,這就是動作的關聯(lián)。在開當前優(yōu)先級動作時必須要檢測更高優(yōu)先級動作的狀態(tài),遇到故障需要進行故障處理。針對上述的較復雜的需求設計如下數(shù)據(jù)結構:www.51kaifa.com

     圖3 開機流程

typedef struct{

char   *pName;        //動作名稱

char  FunctionID; //動作(功能)編號

char   Priority;      //動作優(yōu)先級

short KeepTime1;  //等待前一個輸出動  作穩(wěn)定需要的時間

short     DelayTime1;//下一動作執(zhí)行前的延時

short  DelayTime2;    //當檢測模擬量或開關量不正常時需要重復檢測的延時

short  RepeatNum;//有故障重新檢測的次數(shù)

}OutputAction;

  把所有的功能依次編號,把這個編號賦給某個鍵則該鍵就具備了該功能,功能的編輯通過修改OutputAction.FunctionID的值實現(xiàn);每個鍵最多有16個功能,最少沒有功能;在每一個鍵的所有功能都是輪循有效的,用一個循環(huán)鏈表來存放功能編號,始終是處于表頭位置編號對應的功能有效,每個功能(動作)只能歸屬于一個鍵,在每次開機時首先由串口把已定義好的鍵功能送到控制器并燒寫到固定位置的ROM中;動作優(yōu)先級的編輯是通過修改結構體中OutputAction.Priority的值實現(xiàn);開機時再從ROM中把這些數(shù)據(jù)讀出來,若上位機沒有進行鍵功能編輯就按默認形式進行,需要指出的是關機時,按和開機向反的順序依次關閉所有的輸出動作.開機時根據(jù)固定位置ROM中的內容或按默認的定義獲取動作的屬性,①首先搜索優(yōu)先級最高的動作編號,然后根據(jù)不同的延時把這些動作依次送出;②把優(yōu)先級降一級,檢測比當前優(yōu)先級更高的所有的輸入、輸出的狀態(tài)是否正常如果正常則送出當前優(yōu)先級的動作,再重復②的過程,否則進入故障處理程序,如果處理故障成功則繼續(xù)重復②的過程,否則關機并返回開機失敗信息。開機流程圖如圖3所示。www.51kaifa.com

  在軟件設計中的一個特色就是利用I/O端口來模擬IIC總線來讀取鍵值,其總體思路是用兩個端口一個模擬IIC的時鐘信號,另一個模擬IIC的數(shù)據(jù)線。需要注意的是在配制I/O端口時,時鐘線始對應的端口終是輸出口而數(shù)據(jù)線端口是不確定的。通過給端口置位和清零結合延時來模擬IIC的數(shù)據(jù)傳輸協(xié)議。在調試的過程中發(fā)現(xiàn),這種方法能很好的完成鍵值的獲取和對CPLD器件的訪問。

linux操作系統(tǒng)文章專題:linux操作系統(tǒng)詳解(linux不再難懂)

上一頁 1 2 下一頁

評論


相關推薦

技術專區(qū)

關閉