當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]文章選用了S3C44B0x處理器作為控制器內(nèi)核,開發(fā)完成了約定鍵盤、菜單操作及LCD顯示程序數(shù)據(jù)采集及處理實(shí)現(xiàn)軟件PC通訊協(xié)議及實(shí)現(xiàn)軟件,在其控制下完成數(shù)據(jù)地采集和處理并實(shí)現(xiàn)對(duì)廣播發(fā)射機(jī)的工作狀態(tài)進(jìn)行監(jiān)控,同時(shí)具有人機(jī)交互的功能。

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

1.前言

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

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

圖1   控制器系統(tǒng)結(jié)構(gòu)圖

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

2.開關(guān)機(jī)描述及軟件設(shè)計(jì)

 

圖2 傳口通訊流程圖

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

     圖3 開機(jī)流程

typedef struct{

char   *pName;        //動(dòng)作名稱

char  FunctionID; //動(dòng)作(功能)編號(hào)

char   Priority;      //動(dòng)作優(yōu)先級(jí)

short KeepTime1;  //等待前一個(gè)輸出動(dòng)  作穩(wěn)定需要的時(shí)間

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

short  DelayTime2;    //當(dāng)檢測(cè)模擬量或開關(guān)量不正常時(shí)需要重復(fù)檢測(cè)的延時(shí)

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

}OutputAction;

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

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

3.人機(jī)接口模塊設(shè)計(jì)

要監(jiān)控發(fā)射機(jī)工作狀態(tài)就必須具備良好的人機(jī)接口,需要給控制器選配合適的顯示設(shè)備,在本項(xiàng)目中選用7.8寸640×480象素STN型彩色液晶顯示屏(LCD),采用8位數(shù)據(jù)單掃描方式,在實(shí)際應(yīng)用中顯示效果很好不僅成本低且美觀大方,STN型LCD屏與44B0x的接口比較簡(jiǎn)單但需要注意的是第18引腳(Vcom)通過(guò)一個(gè)變阻器與電源相連,調(diào)整該引腳上的電壓就可以調(diào)整LCD屏的對(duì)比度。軟件設(shè)計(jì)中的關(guān)鍵是菜單的設(shè)計(jì)和按鍵響應(yīng)及處理,由于本項(xiàng)目中的界面較多且存在翻屏所以宜設(shè)計(jì)一個(gè)統(tǒng)一處理的算法,為此,把每個(gè)界面統(tǒng)一編號(hào)WndID,把按鍵作為一個(gè)消息處理MessageFun();每次按一個(gè)鍵就調(diào)用MessageFun(),找到需要顯示的界面并在LCD上顯示。LCD翻屏的方法是每次記錄顯示的內(nèi)容在整個(gè)菜單數(shù)組中的偏移,若當(dāng)前行超過(guò)偏移就需要翻屏否則不翻屏。對(duì)于菜單的設(shè)計(jì)作如下處理:用一個(gè)結(jié)構(gòu)體把一個(gè)菜單的屬性完整地封裝好,其屬性包括菜單名稱、坐標(biāo)、參數(shù)標(biāo)志、參數(shù)。

typedef    struct{www.51kaifa.com

       UINT8T  Menu_ID;//菜單編號(hào)

       UINT8T *Text;      //菜單名稱

       UINT16T       xPos;      //菜單x坐標(biāo)

       UINT16T       yPos;      //菜單y坐標(biāo)

       UINT8T  ParaFlag; //參數(shù)標(biāo)志

       UINT8T  pData[7]; //參數(shù)

}Menu;                                                

    圖4 菜單顯示

利用結(jié)構(gòu)體將每一個(gè)菜單的屬性都封裝好再放到一個(gè)數(shù)組里面,這樣對(duì)菜單的個(gè)數(shù)沒(méi)有限制且容易管理,每一個(gè)菜單的信息都很清晰,編程不易出錯(cuò)。

       人機(jī)界面操作的核心工作就是界面的切換、主菜單和子菜單操作。根據(jù)按鍵來(lái)確定對(duì)應(yīng)的界面ID號(hào),切換界面的方法通常有兩種改變顯存的內(nèi)容和改變顯存的基址,改變顯存的基址就需要定義很大的顯存,這樣做的優(yōu)點(diǎn)是利用硬件資源使LCD屏顯示的刷新速度很高、界面切換快,缺點(diǎn)是很大地浪費(fèi)了系統(tǒng)資源;若改變顯存中的內(nèi)容就需要用軟件的方法來(lái)更新顯存中的內(nèi)容,這種方法的好處就是節(jié)約了系統(tǒng)資源,但是增加的軟件設(shè)計(jì)的復(fù)雜度;本項(xiàng)目采用的就是更新顯存內(nèi)容的方法在實(shí)際的調(diào)試中發(fā)現(xiàn)能夠很好地滿足要求。關(guān)于主菜單和子菜單的操作設(shè)計(jì)了一種統(tǒng)一調(diào)度的算法,其思想是根據(jù)獲取的按鍵信息來(lái)確定主菜單的ID號(hào)和子菜單的ID號(hào),使用焦點(diǎn)標(biāo)記當(dāng)前菜單的ID號(hào),由這兩個(gè)ID號(hào)就可以確定相應(yīng)的主、子菜單同時(shí)進(jìn)入對(duì)應(yīng)的功能處理程序。www.51kaifa.com

4.以太網(wǎng)通信模塊設(shè)計(jì)

在硬件設(shè)計(jì)時(shí)選擇RTL8019AS網(wǎng)絡(luò)控制芯片,它可以工作在8/16 位總線寬度下傳輸速度為10Mbps,遵循IEEE 802.3 協(xié)議。內(nèi)部具有16KB SRAM集成了MAC收發(fā)緩沖區(qū)和物理層的功能,它用來(lái)接收和發(fā)送以太網(wǎng)的物理傳輸數(shù)據(jù),當(dāng)RTL8019AS收到網(wǎng)絡(luò)數(shù)據(jù)包后,RTL8019AS內(nèi)部的某些控制寄存器的狀態(tài)就被改變,通過(guò)設(shè)置中斷或者查詢的方法來(lái)讀取這些寄存器的狀態(tài)判斷數(shù)據(jù)是否收到;發(fā)送數(shù)據(jù)時(shí),將數(shù)據(jù)放入到RTL8019AS內(nèi)部數(shù)據(jù)緩沖區(qū)后,通過(guò)控制內(nèi)部的寄存器,將緩沖區(qū)的網(wǎng)絡(luò)數(shù)據(jù)發(fā)送到網(wǎng)絡(luò)上去。該芯片有三種工作模式:跳線模式,即插即用模式,免跳線模式。在項(xiàng)目中網(wǎng)卡芯片RTL8019AS是在跳線模式下工作。對(duì)該芯片的驅(qū)動(dòng)主要包括以下幾個(gè)步驟:復(fù)位、初始化、收發(fā)數(shù)據(jù)。RTL8019的復(fù)位引腳RSTDRV是高電平有效,有效的保持時(shí)間宜大于800ns,且在由高到低切換后的100ms后才對(duì)芯片操作。在對(duì)芯片初始化之前需要預(yù)先分配好片內(nèi)RAM中的空間即接收和發(fā)送緩存的大小,在把所有的設(shè)置參數(shù)在初始化的時(shí)候一起寫入RTL8019的寄存器完成初始化。

5.結(jié)語(yǔ)

       項(xiàng)目開發(fā)調(diào)試的過(guò)程中有許多軟件和硬件方面的困難,但是問(wèn)題最后都是在不斷地解決,如系統(tǒng)的了串口,LCD,AD采樣,F(xiàn)lash操作的調(diào)試等工作以及控制器所要具備的人機(jī)交互功能的程序設(shè)計(jì)且需調(diào)試通過(guò)。把以太網(wǎng)模塊加到工程中后,其物理層芯片的驅(qū)動(dòng)程序需進(jìn)一步調(diào)試,把TCP/IP協(xié)議加入模塊,參照成功的案例,完成系統(tǒng)的調(diào)試任務(wù)。同時(shí),本文具有以下創(chuàng)新點(diǎn):

(1)開發(fā)應(yīng)用32位微處理ARMS3C44B0x作為控制器的內(nèi)核,使控制器比用單片機(jī)作內(nèi)核的處理器具有更全面的功能和更好的使用性能。

(2)在菜單的設(shè)計(jì)中,用一個(gè)結(jié)構(gòu)體把一個(gè)菜單的屬性完整地封裝好,其屬性包括菜單名稱、坐標(biāo)、參數(shù)標(biāo)志、參數(shù)。

(3)解決了該網(wǎng)卡芯片使RTL8019AS正常工作的問(wèn)題,在對(duì)芯片初始化之前需要預(yù)先分配好片內(nèi)RAM中的空間即接收和發(fā)送緩存的大小,在把所有的設(shè)置參數(shù)在初始化的時(shí)候一起寫入RTL8019的寄存器完成初始化。

[參考文獻(xiàn)]

[1] 田澤.嵌入式系統(tǒng)開發(fā)與應(yīng)用實(shí)驗(yàn)教程[M].北京:北京航空航天大學(xué)出版社,2005.

[2] 賈志平,張瑞華.嵌入式原理與接口技術(shù)[M].北京:清華大學(xué)出版社,2005.

[3] 王田苗.嵌入式系統(tǒng)設(shè)計(jì)與實(shí)例開發(fā)[M].清華大學(xué)出版社,2003.

[4] 崔登志,戴學(xué)豐,劉樹東,等.用ARM控制CAMD無(wú)線Modem發(fā)送短信息[J].微計(jì)算機(jī)信息,2006,11-2:136-138.

[5] 徐偉,譚樹人,黃浩亮.基于AT91RM9200的圖象采集系統(tǒng)設(shè)計(jì)[J]. 微計(jì)算機(jī)信息,2006,11-2:120-122.

[6] 楊占華,揚(yáng)燕.數(shù)據(jù)挖掘在智能搜索引擎中的應(yīng)用[J].微計(jì)算機(jī)信息,2006(4)下:244-245.

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉