第一篇:基于ARMlinux的嵌入式遠(yuǎn)程測(cè)控系統(tǒng)設(shè)計(jì).
基于ARM linux的嵌入式遠(yuǎn)程測(cè)控系統(tǒng)
設(shè)計(jì)
基于ARM linux的嵌入式遠(yuǎn)程測(cè)控系統(tǒng)設(shè)計(jì)
類(lèi)別:嵌入式系統(tǒng)
前言 目前,大多數(shù)遠(yuǎn)程測(cè)控系統(tǒng)中,系統(tǒng)的硬件采用8/16位的單片機(jī),軟件多采用匯編語(yǔ)言編程,該編程僅包含一個(gè)簡(jiǎn)單的循環(huán)處理的控制流程;單片機(jī)與單片機(jī)(或上位機(jī))之間的通信通過(guò)RS232、RS485或CAN總線來(lái)組成局域網(wǎng),再用Pc機(jī)作為 Web服務(wù)器,與Internet進(jìn)行通訊。這樣的遠(yuǎn)程測(cè)控設(shè)備成本高、體積大、速度慢、功耗大?,F(xiàn)在,32位嵌入式CPU價(jià)格已下降,性能指標(biāo)也有提高,為嵌入式系統(tǒng)的廣泛應(yīng)用提供了可能性?;谏鲜銮闆r,我們將嵌入式系統(tǒng)應(yīng)用于遠(yuǎn)程測(cè)控系統(tǒng),大大提高了測(cè)控系統(tǒng)的性能,同時(shí)降低了成本和功耗,體積也大大減小。
嵌入式系統(tǒng)一般應(yīng)用嵌入式操作系統(tǒng)來(lái)開(kāi)發(fā)。在嵌入式操作系統(tǒng)的選擇上,由于Linux有完整開(kāi)放的源代碼,因而它具有修改和優(yōu)化系統(tǒng)、內(nèi)核穩(wěn)定、適用于多種CPU和多種硬件平臺(tái)、支持網(wǎng)絡(luò)等特點(diǎn),所以選擇Linux作為嵌入式操作系統(tǒng)較好。本文提出的基于 ARMlinux的嵌入式遠(yuǎn)程測(cè)控系統(tǒng)不僅能夠?qū)崿F(xiàn)本地?cái)?shù)據(jù)采集與控制,還能實(shí)現(xiàn)遠(yuǎn)程測(cè)控任務(wù)。
1、硬件系統(tǒng)
硬件系統(tǒng)如圖1。S3C2410包含一個(gè)16/32-bit的Risc(ARM920T)的CPU內(nèi)核,主頻200Hz,內(nèi)部含有8通道1O位AD轉(zhuǎn)換器和大量的I/O口、LCD控制器等豐富接口,能運(yùn)行Ucosll、ARMlinux和Wince嵌入式操作系統(tǒng),DM 9OOO是10M/100M以太網(wǎng)接口控制芯片。本硬件系統(tǒng)結(jié)構(gòu)簡(jiǎn)單,成本低,不需要Pc機(jī)就可直接接入Internet。
2、軟件系統(tǒng)
嵌入式操作系統(tǒng)是整個(gè)嵌入式系統(tǒng)的核心。本系統(tǒng)選擇ARMlinux系統(tǒng)。由于嵌入式系統(tǒng)的存儲(chǔ)容量很小,因此要把ARMLinux操作系統(tǒng)裝入有限的存儲(chǔ)器內(nèi),就要對(duì)它進(jìn)行裁剪。很多資料對(duì)此都有論述,這里就不再累述。下面主要介紹基于操作系統(tǒng)上的遠(yuǎn)程測(cè)控軟件設(shè)計(jì)。其體系結(jié)構(gòu)如圖2。
2.1 基于Boa的Web服務(wù)器
嵌入式linux主要有三個(gè)web Server:Hapd、Thttpd和Boa。Httpd是最簡(jiǎn)單的一個(gè)web Server。它的功能最弱,不支持認(rèn)證,不支持CG1。Thttpd和Boa都支持認(rèn)證、CGI等,功能都比較全。Boa是一個(gè)單任務(wù)的小型Httpd 服務(wù)器,源代碼開(kāi)放、性能優(yōu)秀,特別適合應(yīng)用在嵌入式系統(tǒng)中。下面介紹Boa的移植與編譯。
對(duì)于有MMU嵌入式linux,把Boa下載到Redhat宿主機(jī)上后,解壓到任意目錄,再修改Boa/src/Makefde里面的編譯器。例如:
CC=/opfhosfarmv41/bin/armv41—unkllown—linux—gcc CPP=/opt/host/army41/bin/armv41—unknown—linux—g++ 此后直接在Boa/src目錄下執(zhí)行make即可生成Boa可執(zhí)行文件。將其復(fù)制到ramdisk加載mount的目錄的bin里面后,等一同加入配置文件和HTML/CGI文件后,重做ramdisk即可。
配置文件Boa.conf的編制見(jiàn)下。
需要說(shuō)明的是,Linux下的應(yīng)用程序的配置都是以配置文件的形式提供的,~般都是放在目標(biāo)板/ete/目錄下或者/ctc/config目錄下,但Boa 的配置文件Boa.conf一般都放置在目標(biāo)板/home/httpd/目錄下。本系統(tǒng)Boa.conf文件的編寫(xiě)程序?yàn)椋?/p>
Servername S A M S U N G—A R M DocumentRoot/home/httpd/cgi—bin/
ScfiptAlias/index.html/home/httpd/html/index.html 它指定了HTML頁(yè)面index.html必須放/home/httpd/html目錄下,CGI可執(zhí)行文件必須放到/home/httpd/cgi~bin目錄下。
2.2 CGI程序技術(shù)原理
CGI(Common Gateway Interface)是外部擴(kuò)展應(yīng)用程序與WWW服務(wù)器交互的一個(gè)標(biāo)準(zhǔn)接口。按照CGI標(biāo)準(zhǔn)編寫(xiě)的外部擴(kuò)展應(yīng)用程序可以處理客戶端瀏覽器輸入的數(shù)據(jù),從而完成客戶端與服務(wù)器的交互操作。而CGI規(guī)范定義了Web服務(wù)器如何向擴(kuò)展應(yīng)用程序發(fā)送消息,在收到擴(kuò)展應(yīng)用程序的信息后又如何進(jìn)行處理等內(nèi)容。通過(guò) CGI可以提供許多靜態(tài)的Html網(wǎng)頁(yè)無(wú)法實(shí)現(xiàn)的功能。其www與CGI的工作原理如下。
HTTP協(xié)議是WWW的基礎(chǔ),它基于客戶/服務(wù)器模型。一個(gè)服務(wù)器可以為分布在網(wǎng)絡(luò)各處的客戶提供服務(wù)。它是建立在TCP/IP協(xié)議之上的“無(wú)連接”協(xié)議。每次連接只處理一個(gè)請(qǐng)求。當(dāng)一個(gè)請(qǐng)求到來(lái)時(shí),便創(chuàng)建一個(gè)子進(jìn)程為用戶的連接服務(wù)。根據(jù)請(qǐng)求的不同,服務(wù)器會(huì)返回HTML文件或通過(guò)CGI凋用外部應(yīng)用程序,返回處理結(jié)果。服務(wù)器通過(guò)CGI與外部程序和腳本之問(wèn)進(jìn)行交互,根據(jù)客戶端在進(jìn)行請(qǐng)求時(shí)所采取的方法,服務(wù)器會(huì)收集客戶所提供的信息,并將該部分信息發(fā)送給指定的CGI擴(kuò)展程序。CGI擴(kuò)展程序?qū)π畔⑦M(jìn)行處理并將結(jié)果返回服務(wù)器。服務(wù)器對(duì)信息進(jìn)行分析后,將結(jié)果發(fā)送網(wǎng)客戶端。
外部CGI程序與www服務(wù)器進(jìn)行通信、傳遞有關(guān)參數(shù)和處理結(jié)果是通過(guò)環(huán)境變量、命令行參數(shù)和標(biāo)準(zhǔn)輸入來(lái)進(jìn)行的。服務(wù)器提供了客戶端(瀏覽器)與CGI擴(kuò)展程序之問(wèn)的信息交換的通道??蛻舻恼?qǐng)求通過(guò)服務(wù)器的標(biāo)準(zhǔn)輸出傳送給CGI的標(biāo)準(zhǔn)輸入。CGI對(duì)信息進(jìn)行處理后,會(huì)將結(jié)果發(fā)回到它的標(biāo)準(zhǔn)輸入,然后由眼務(wù)器將處理結(jié)果發(fā)送給客戶端。
2.3 CGI外部擴(kuò)展程序的編制
服務(wù)器程序可以通過(guò)三種途徑接收信息:環(huán)境變量、命令行和標(biāo)準(zhǔn)輸入。具體使用哪一種方法要由標(biāo)簽的Method屬性來(lái)決定。在“Method=GET”時(shí),向CGI程序傳遞表單編碼信息的正常做法是通過(guò)命令來(lái)進(jìn)行的。
大多數(shù)表單編碼信息都是通過(guò)Qucry-String的環(huán)境變量來(lái)傳遞的。如果“Method=POST”,表單信息將通過(guò)標(biāo)準(zhǔn)輸入來(lái)讀取。還有一種不使用表單就可以向CGI傳送信息的方法。那就是把信息直接追回在URL地址后面,信息和URL之間用問(wèn)號(hào)(?)來(lái)分隔。本測(cè)控系統(tǒng)采用的是GET方法。下面是遠(yuǎn)程控制LED閃爍快慢的程序。其網(wǎng)頁(yè)如下頁(yè)圖3,其程序如下。
;LED測(cè)試
<input type=“radio”name=“speed”value=“show”checked>慢速
<input type=“radio”name=“speed”value=“normal”>中速 <input type=“radio”name=“speed”value=“rast”>高速
<input type=“submit”value=確定“name=”submit>
其中l(wèi)eds.cgi程序如下:
#!/bin/sh Period=1+case $QUERY-STRING in slow)
period=0.25 ;;
normal)period = 0.125 ;;
fast period=0.0625+;;
fast)+ period =0.0626 ;;
esac /bin/echo $ period ? /tmp/led-control//通過(guò)Query_String的環(huán)境變量傳遞給應(yīng)用程序。
echo “Content-type:texe/html;charset=gb2312”
echo /bin/cat led =result.template exit 0 led—control是編譯好的可執(zhí)行的應(yīng)用程序,通過(guò)led驅(qū)動(dòng)來(lái)實(shí)現(xiàn)對(duì)LED的控制。因?yàn)镾3C2410有MMU,所以通過(guò)操作系統(tǒng)來(lái)對(duì)硬件控制需要驅(qū)動(dòng)程序來(lái)實(shí)現(xiàn)。其數(shù)據(jù)采集部分也類(lèi)似,不再單獨(dú)說(shuō)明。
圖3 實(shí)驗(yàn)結(jié)果
3、測(cè)試結(jié)果
首先建立好基于S3C2410嵌入式開(kāi)發(fā)環(huán)境,把編譯好的booloader、嵌入式linux內(nèi)核和ramdisk燒人Flash中,然后起動(dòng)Boa服務(wù)器,在PC機(jī)的瀏覽器上輸人嵌入式系統(tǒng)的IP地址,即顯示出如圖3的網(wǎng)頁(yè)。通過(guò)點(diǎn)擊慢速、中速和高速,再點(diǎn)擊確定,測(cè)控板上LED的閃爍由慢變快,圓滿實(shí)現(xiàn)了設(shè)計(jì)目標(biāo)。
4、結(jié)論
找們開(kāi)發(fā)的基于ARMLinux的遠(yuǎn)程測(cè)控系統(tǒng),在真正意義上實(shí)現(xiàn)了通過(guò)互聯(lián)網(wǎng)進(jìn)行遠(yuǎn)程測(cè)控。它具有一般通用平臺(tái)性能,特別適合實(shí)時(shí)性要求不很強(qiáng)的家電網(wǎng)絡(luò)監(jiān)控和遠(yuǎn)程工業(yè)控制。當(dāng)然隨著硬件和網(wǎng)絡(luò)速度提高及操作系統(tǒng)實(shí)時(shí)性的改善,將會(huì)大大提高此測(cè)控系統(tǒng)的性能,因此有很好的應(yīng)用前景。
第二篇:基于ARM嵌入式的遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)
基于ARM嵌入式的遠(yuǎn)程監(jiān)控系統(tǒng)設(shè)計(jì)
摘要:基于ARM 內(nèi)核的嵌入式系統(tǒng)在遠(yuǎn)程監(jiān)控報(bào)警系統(tǒng)中的設(shè)計(jì)實(shí)現(xiàn)與應(yīng)用。核心部分主要包 括 ARM 嵌入式平臺(tái)設(shè)計(jì)及 μC-OS 嵌入式實(shí)時(shí)操作系統(tǒng)移植;人機(jī)交互界面 μCGUI 的設(shè)計(jì)與實(shí)現(xiàn);遠(yuǎn)程通訊及自動(dòng)報(bào)警等;系統(tǒng)的設(shè)計(jì)還考慮到了擴(kuò)展性和通用性以及與其他監(jiān)控設(shè)備無(wú)縫連接等問(wèn)題。
關(guān)鍵詞: ARM;μC/OS-II;μCGUI;遠(yuǎn)程監(jiān)控 引言
監(jiān)控系統(tǒng)現(xiàn)已成為現(xiàn)代化生產(chǎn)、生活中不可缺少的重要組成部分。目前,監(jiān)控系列產(chǎn)品 種類(lèi)繁多,大部分廣泛應(yīng)用于交通、醫(yī)院、銀行、家居、學(xué)校等安防領(lǐng)域。
隨著嵌入式系統(tǒng)的出現(xiàn),尤其是基于 ARM 內(nèi)核芯片的嵌入式系統(tǒng)的出現(xiàn),使得監(jiān)控系統(tǒng)的應(yīng)用領(lǐng)域更為廣泛。本文設(shè)計(jì)的遠(yuǎn)程監(jiān)控報(bào)警系統(tǒng)除了作為安防功能外,還可以應(yīng)用于以下領(lǐng)域:通訊領(lǐng)域:遠(yuǎn)程通訊、視頻會(huì)議和視頻點(diǎn)播、證券、遠(yuǎn)程教育等。醫(yī)療領(lǐng)域:病房監(jiān)護(hù)、遠(yuǎn)程診斷等。工業(yè)領(lǐng)域:遠(yuǎn)程設(shè)備診斷、維護(hù)、維修,遠(yuǎn)程生產(chǎn)監(jiān)控等。家用領(lǐng)域:家用電器遠(yuǎn)程維護(hù);電、氣、火等重大事故自動(dòng)報(bào)警等。
系統(tǒng)設(shè)計(jì)
2.1系統(tǒng)組成
本文設(shè)計(jì)的遠(yuǎn)程監(jiān)控系統(tǒng)主要由中心控制器、數(shù)據(jù)終端、傳感器模塊、通訊模塊、接口模塊等幾部分組成。系統(tǒng)組成圖(如圖 1)。
2.2中心控制器 系統(tǒng)核心負(fù)責(zé)數(shù)據(jù)采集判斷處理。為了提高系統(tǒng)工作效率,這里使用的是三星公司的 S3C2410芯片作為處理器。S3C2410 芯片是一款高性價(jià)比的 ARM 芯片,非常適合作手機(jī)、PDA 等手持設(shè)備。主要特性包括: ARM920T 內(nèi)核,最高工作頻率 203MHz,LCD 控制器:可直接驅(qū)動(dòng)真彩液晶屏,最高支持 2048×1024 真彩液晶屏,2 個(gè) USB Host端口,1 個(gè)USB Device端口,支持 Nand flash 啟動(dòng)模式,SD 卡接口,UART、IIC、SPI、IIS 等多種類(lèi) 型串行接口,4 通道DMA。
本文的監(jiān)控系統(tǒng)的 CPU 核心部分使用的是標(biāo)準(zhǔn)的 SO-DIMM200 金手指接口,便于后期維護(hù)和升級(jí)。如果該監(jiān)控系統(tǒng)的使用環(huán)境較為苛刻,可以將 CPU替換為S3C2440芯片。S3C2440完全兼容S3C2410全部特性(注意:芯片引腳不完全兼容)。與S3C2410芯片相比,S3C2440的性能更為優(yōu)越:最高工作頻率可達(dá)500MHz,內(nèi)部集成CMOS攝像頭接口,但價(jià)格較昂貴。
圖1 監(jiān)控系統(tǒng)組成框圖
2.3數(shù)據(jù)終端 數(shù)據(jù)終端的主要功能是對(duì)監(jiān)控?cái)?shù)據(jù)進(jìn)行分析、處理,及時(shí)將數(shù)據(jù)匯報(bào)給監(jiān)控人員。同時(shí),監(jiān)控人員可以根據(jù)現(xiàn)場(chǎng)情況,使用數(shù)據(jù)終端對(duì)監(jiān)控的設(shè)備進(jìn)行遠(yuǎn)程控制。數(shù)據(jù)終端最大優(yōu)勢(shì) 就是安全、可靠、便于攜帶。一般情況下為了節(jié)約成本,可以將手機(jī)、PDA 等移動(dòng)通訊設(shè)備作為數(shù)據(jù)終端使用。但是如果作為對(duì)高危環(huán)境或精密儀器的監(jiān)控系統(tǒng),數(shù)據(jù)終端需要專(zhuān)業(yè)定制。這里使用的是中心控制器的作為數(shù)據(jù)終端,即中心控制器既作為數(shù)據(jù)采集發(fā)送中心,也可數(shù)據(jù)接收處理中心使用。
2.4通訊模塊
通訊模塊主要負(fù)責(zé)遠(yuǎn)程數(shù)據(jù)通訊。帶有 RS232/485、GPRS、CDMA 等一種或多種通訊 方式。需要根據(jù)現(xiàn)場(chǎng)環(huán)境和用戶需要進(jìn)行定制。通訊模塊與控制器通過(guò)接口總線連接,連接 方式為 TTL/RS232/RS485 等。
2.5傳感器模塊
傳感器模塊的主要功能是感知外部環(huán)境,對(duì)外部環(huán)境進(jìn)行實(shí)時(shí)監(jiān)測(cè)。由人體紅外傳感器、振動(dòng)傳感器、超聲波傳感器、可燃?xì)怏w傳感器、溫度傳感器、濕度傳感器等一種或多種傳感 器組成??筛鶕?jù)現(xiàn)場(chǎng)監(jiān)測(cè)環(huán)境不同進(jìn)行定制。
2.6接口模塊
接口模塊主要作為系統(tǒng)擴(kuò)展功能使用,將控制器的 A/D 轉(zhuǎn)換、I2C、SPI 等多種接口進(jìn)行 外部擴(kuò)展。接口模塊沒(méi)有特定的功能,但可以根據(jù)需要與其他設(shè)備連接,例如可以與工業(yè)儀 器儀表或設(shè)備連接,實(shí)時(shí)對(duì)儀器或設(shè)備進(jìn)行監(jiān)控。
接口模塊雖然不是監(jiān)控系統(tǒng)的主要部分,但是對(duì)于整個(gè)系統(tǒng)來(lái)說(shuō)卻是不可缺少。因?yàn)楸疚牡谋O(jiān)控系統(tǒng)主要考慮到了系統(tǒng)的可擴(kuò)展性和與其它系統(tǒng)無(wú)縫連接。通過(guò)接口模塊可以很方 便的對(duì)監(jiān)控系統(tǒng)進(jìn)行升級(jí),并且可以實(shí)現(xiàn)與其他系統(tǒng)或設(shè)備的無(wú)縫連接。這也是本系統(tǒng)區(qū)優(yōu) 于其他監(jiān)控系統(tǒng)的主要功能。軟件設(shè)計(jì)
3.1工作軟件
系統(tǒng)的軟件設(shè)計(jì)較為復(fù)雜,這里只給出了整個(gè)工作軟件流程(如圖 2)。
圖2 軟件流程圖
3.2操作系統(tǒng)移植
S3C2410 芯片支持多種嵌入式操作系統(tǒng),如 WINCE、uCLinux 等。但考慮到監(jiān)控系統(tǒng) 的實(shí)時(shí)性要求,這里使用的是 μC/OS-II 嵌入式實(shí)時(shí)操作系統(tǒng)。μC/OS-II 是一個(gè)源碼公開(kāi)、可移植、可固化、可裁剪、占先式的實(shí)時(shí)多任務(wù)操作系統(tǒng)。其絕大部分源碼是用 ANSI C 寫(xiě)的。整個(gè)嵌入式系統(tǒng)分為兩大層:硬件層和軟件層。這里主要研究軟件層的架構(gòu)。軟件層主要分為四個(gè)部分:實(shí)時(shí)操作系統(tǒng)內(nèi)核,與處理器相關(guān)部分,與應(yīng)用程序相關(guān)部分,用戶的應(yīng)用程序。移植 μC/OS-II 系統(tǒng)需要修改的文件有:應(yīng)用程序相關(guān)文件: OS_CFG.H INCLUDE.H; 處理器相關(guān)文件: OS_CPU.H、OS_CPU_A.ASM、OS_CPU_C.C。
3.2.1 與處理器相關(guān)的代碼
這是移植中最關(guān)鍵的部分。內(nèi)核將應(yīng)用系統(tǒng)和底層硬件有機(jī)的結(jié)合成一個(gè)實(shí)時(shí)系統(tǒng),要 使同一個(gè)內(nèi)核能適用于不同的硬件體系,就需要在內(nèi)核和硬件之間有一個(gè)中間層,這就是與 處理器相關(guān)的代碼。處理器不同。這部分代碼也不同。我們?cè)谝浦矔r(shí)需要自己移植這部分代 碼。
a)OS_CPU.H
包括了用#define 定義的與處理器相關(guān)的常量,宏和類(lèi)型定義,有系統(tǒng)數(shù)據(jù)類(lèi)型定義,棧 增長(zhǎng)方向定義,關(guān)中斷和開(kāi)中斷定義,系統(tǒng)軟中斷的定義等等。
b)OS_CPU_A.ASM
這部分需要對(duì)處理器的寄存器進(jìn)行操作,所以必須用匯編語(yǔ)言來(lái)編寫(xiě)。包括四個(gè)子函數(shù): OSStartHighRdy(),OSCtxSw(),OSIntCtxSw(),OSTickISR()。OSStartHighRdy()在多任務(wù)系統(tǒng)啟動(dòng)函數(shù) OSStart()中調(diào)用。完成的功能是:設(shè)置系統(tǒng)運(yùn)行標(biāo)志位 OSRunning = TRUE;將就緒表中最高優(yōu)先級(jí)任務(wù)的棧指針 Load 到 SP 中,并強(qiáng)制中斷返回。這樣就緒的最高優(yōu)先級(jí)任務(wù)就如同從中斷里返回到運(yùn)行態(tài)一樣,使得整個(gè)系統(tǒng)得以運(yùn)轉(zhuǎn)。OSCtxSw()在任務(wù)級(jí)任 務(wù)切換函數(shù)中調(diào)用的。任務(wù)級(jí)切換是通過(guò) SWI 或者 TRAP 人為制造的中斷來(lái)實(shí)現(xiàn)的。ISR 的向 量地址必須指向 OSCtxSw()。這一中斷完成的功能:保存任務(wù)的環(huán)境變量(主要是寄存器的值, 通過(guò)入棧來(lái)實(shí)現(xiàn)),將當(dāng)前 SP 存入任務(wù) TCB 中,載入就緒最高優(yōu)先級(jí)任務(wù)的 SP,恢復(fù)就緒最高優(yōu)先級(jí)任務(wù)的環(huán)境變量,中斷返回。這樣就完成了任務(wù)級(jí)的切換。OSIntCtxSw()在退出中斷 服務(wù)函數(shù) OSIntExit()中調(diào)用,實(shí)現(xiàn)中斷級(jí)任務(wù)切換.由于是在中斷里調(diào)用,所以處理器的寄存器入棧工作已經(jīng)做完,就不用作這部分工作了。具體完成的任務(wù);調(diào)整棧指針(因?yàn)檎{(diào)用函數(shù)會(huì)使任務(wù)棧結(jié)構(gòu)與系統(tǒng)任務(wù)切換時(shí)堆棧標(biāo)準(zhǔn)結(jié)構(gòu)不一致),保存當(dāng)前任務(wù) SP,載入就緒 最高優(yōu)先級(jí)任務(wù)的 SP,恢復(fù)就緒最高優(yōu)先級(jí)任務(wù)的環(huán)境變量,中斷返回。這樣就完成了中斷級(jí)任務(wù)切換。OSTickISR()系統(tǒng)時(shí)鐘節(jié)拍中斷服務(wù)函數(shù),這是一個(gè)周期性中斷,為內(nèi)核提供
時(shí)鐘節(jié)拍。頻率越高系統(tǒng)負(fù)荷越重。其周期的大小決定了內(nèi)核所能給應(yīng)用系統(tǒng)提供的最小時(shí) 間間隔服務(wù)。一般只限于 ms 級(jí)(跟 MCU 有關(guān)),對(duì)于要求更加苛刻的任務(wù)需要用戶自己建立中斷來(lái)解決.該函數(shù)具體內(nèi)容:保存寄存器(如果硬件自動(dòng)完成就可以省略),調(diào) OSIntEnter(),調(diào)用 OSTimeTick(),調(diào)用 OSIntExit(),恢復(fù)寄存器,中斷返回。
c)OS_CPU_C.C
該文件中共定義了 6 個(gè)函數(shù),但是最重要的是 OSTaskStkInit().其他都是對(duì)系統(tǒng)內(nèi)核的擴(kuò)展 時(shí)用的.OSTaskStkInit()是在用戶建立任務(wù)時(shí)系統(tǒng)內(nèi)部自己調(diào)用的,對(duì)用戶任務(wù)的堆棧進(jìn)行初始化。使建立好的進(jìn)入就緒態(tài)任務(wù)的堆棧與系統(tǒng)發(fā)生中斷并且將環(huán)境變量保存完畢時(shí) 的棧結(jié)構(gòu)一致。這樣就可以用中斷返回指令使就緒的任務(wù)運(yùn)行起來(lái)。
3.2.2與應(yīng)用相關(guān)的代碼
這部分包括兩個(gè)文件:OS_CFG.H, INCLUDES.H。用戶根據(jù)自己的應(yīng)用系統(tǒng)來(lái)定制合適 的內(nèi)核服務(wù)功能。OS_CFG.H 來(lái)配置內(nèi)核,用戶根據(jù)需要對(duì)內(nèi)核進(jìn)行定制,留下需要的部分,去掉不需要的部分,設(shè)置系統(tǒng)的基本情況。比如系統(tǒng)可提供的最大任務(wù)數(shù)量,是否定制郵箱服務(wù),是否需要系統(tǒng)提供任務(wù)掛起功能,是否提供任務(wù)優(yōu)先級(jí)動(dòng)態(tài)改變功能等等。INCLUDES.H 系統(tǒng)頭文件,整個(gè)實(shí)時(shí)系統(tǒng)程序所需要的文件,包括了內(nèi)核和用戶的頭文件。
3.3用戶圖形接口
雖然 μC/OS-II 操作系統(tǒng)具有很高的實(shí)時(shí)性,但不像 WINCE、uCLinux 等操作系統(tǒng)那樣 有良好的圖形界面支持。所以,在使用液晶和觸摸屏的情況下需要移植用戶圖形接口程序。這里使用的是 μC/GUI。μC/GUI 是一個(gè)軟件模塊集合,通過(guò)該模塊可以在我們的嵌入式產(chǎn)品 中加入用戶圖形接口(GUI)。μC/GUI 具有很高的執(zhí)行效率,并且與處理器和 LCD 控制器相 獨(dú)立。該模塊可以工作在單任務(wù)或者多任務(wù)環(huán)境,可以支持不同大小的顯示方式。
通過(guò) μC/GUI 我們可以很方便的在液晶屏繪制圖形和界面。如果需要多種字體支持,必 須自己將相應(yīng)的字體字庫(kù)加入到 μC/GUI 中。為了避免出現(xiàn)亂碼,盡量使用 GB2312 國(guó)標(biāo)字庫(kù)。
3.4關(guān)于字庫(kù)的兼容性問(wèn)題
我們國(guó)內(nèi)通常使用的漢字字庫(kù)是 GB 碼,但國(guó)際上使用的是 UNICODE 碼,所以如果數(shù)據(jù)終端使用的是手機(jī)、PDA 等移動(dòng)通信設(shè)備,那么在數(shù)據(jù)發(fā)送前必須進(jìn)行字碼轉(zhuǎn)換,即 GB 碼 轉(zhuǎn)換為 UNICODE 碼或者 UNICODE 碼轉(zhuǎn)換為 GB 碼。由于 GB 碼與 UNICODE 碼在排列組合上沒(méi)有任何規(guī)律,所以通常字碼轉(zhuǎn)換的方法就是 查表法。
4結(jié)束語(yǔ)
基于 ARM9 嵌入式系統(tǒng)的遠(yuǎn)程監(jiān)控系統(tǒng)與以往的監(jiān)控系統(tǒng)不同,高性能的處理器芯片大大提高了系統(tǒng)的性能。使監(jiān)控系統(tǒng)能夠工作在比較惡劣的環(huán)境中。并且在設(shè)計(jì)上充分考慮到了系統(tǒng)的可擴(kuò)展性和兼容性問(wèn)題,實(shí)現(xiàn)了本系統(tǒng)與其他系統(tǒng)的無(wú)縫連接。以滿足不同工作環(huán) 境的需要。
作者創(chuàng)新觀點(diǎn):本文設(shè)計(jì)的遠(yuǎn)程監(jiān)控系統(tǒng)應(yīng)用范圍更廣,更靈活、方便。通過(guò)各個(gè)功能模塊 的不同組合,可以十分方便快速的應(yīng)用于各個(gè)領(lǐng)系域,真正實(shí)現(xiàn)智能化、自動(dòng)化且具有較高 的性價(jià)比。
第三篇:嵌入式遠(yuǎn)程醫(yī)療監(jiān)護(hù)系統(tǒng)(范文模版)
嵌入式遠(yuǎn)程醫(yī)療監(jiān)護(hù)系統(tǒng)
嵌入式醫(yī)療監(jiān)護(hù)系統(tǒng)設(shè)計(jì)
一、整體設(shè)計(jì)
MSP430系列單片機(jī)是美國(guó)德州儀器(TI)1996年開(kāi)始推向市場(chǎng)的一種16位超低耗(具有精簡(jiǎn)指令集的混合信號(hào)處理器(Mixed Signal Processor)。稱(chēng)之為混合信號(hào)處理器,是由于其針對(duì)實(shí)際應(yīng)用需求,將多個(gè)不同功能的模擬電路、數(shù)字電路模塊和微處理器集成在一個(gè)芯片上,以提供“單片”解決方案。該系列單片機(jī)多應(yīng)用于需要電池供電的便攜式儀器儀表中。MSP430特點(diǎn)
MSP430系列單片機(jī)是一個(gè)16位的單片機(jī),采用了精簡(jiǎn)指令集(RISC)結(jié)構(gòu),具有豐富的尋址方式(7 種源操作數(shù)尋址、4 種目的操作數(shù)尋址)、簡(jiǎn)潔的 27 條內(nèi)核指令以及大量的模擬指令;大量的寄存器以及片內(nèi)數(shù)據(jù)存儲(chǔ)器都可參加多種運(yùn)算;還有高效的查表處理指令。這些特點(diǎn)保證了可編制出高效率的源程序。
MSP430 系列單片機(jī)能在25MHz晶體的驅(qū)動(dòng)下,實(shí)現(xiàn)40ns的指令周期。16位的數(shù)據(jù)寬度、40ns的指令周期以及多功能的硬件乘法器(能實(shí)現(xiàn)乘加運(yùn)算)相配合,能實(shí)現(xiàn)數(shù)字信號(hào)處理的某些算法(如 FFT 等)。
MSP430 單片機(jī)之所以有超低的功耗,是因?yàn)槠湓诮档托酒碾娫措妷汉挽`活而可控的運(yùn)行時(shí)鐘方面都有其獨(dú)到之處。
首先,MSP430 系列單片機(jī)的電源電壓采用的是1.8-3.6V 電壓。因而可使其在1MHz 的時(shí)鐘條件下運(yùn)行時(shí),芯片的電流最低會(huì)在165μA左右,RAM 保持模式下的最低功耗只有0.1μA。
其次,獨(dú)特的時(shí)鐘系統(tǒng)設(shè)計(jì)。在 MSP430 系列中有兩個(gè)不同的時(shí)鐘系統(tǒng):基本時(shí)鐘系統(tǒng)、鎖頻環(huán)(FLL 和FLL+)時(shí)鐘系統(tǒng)和DCO數(shù)字振蕩器時(shí)鐘系統(tǒng)??梢灾皇褂靡粋€(gè)晶體振蕩器(32768Hz),也可以使用兩個(gè)晶體振蕩器。由系統(tǒng)時(shí)鐘系統(tǒng)產(chǎn)生 CPU 和各功能所需的時(shí)鐘。并且這些時(shí)鐘可以在指令的控制下,打開(kāi)和關(guān)閉,從而實(shí)現(xiàn)對(duì)總體功耗的控制。
由于系統(tǒng)運(yùn)行時(shí)開(kāi)啟的功能模塊不同,即采用不同的工作模式,芯片的功耗有著顯著的不同。在系統(tǒng)中共有一種活動(dòng)模式(AM)和五種低功耗模式(LPM0~LPM4)。在實(shí)時(shí)時(shí)鐘模式下,可達(dá)2.5μA,在RAM 保持模式下,最低可達(dá)0.1μA。
MSP430 系列單片機(jī)的各系列都集成了較豐富的片內(nèi)外設(shè)。它們分別是看門(mén)狗(WDT)、模擬比較器A、定時(shí)器A0(Timer_A0)、定時(shí)器A1(Timer_A1)、定時(shí)器B0(Timer_B0)、UART、SPI、I2C、硬件乘法器、液晶驅(qū)動(dòng)器、10位/12位ADC、16位Σ-Δ ADC、DMA、I/O端口、基本定時(shí)器(Basic Timer)、實(shí)時(shí)時(shí)鐘(RTC)和USB控制器等若干外圍模塊的不同組合。其中,看門(mén)狗可以使程序失控時(shí)迅速?gòu)?fù)位;模擬比較器進(jìn)行模擬電壓的比較,配合定時(shí)器,可設(shè)計(jì)出 A/D 轉(zhuǎn)換器;16 位定時(shí)器(Timer_A 和 Timer_B)具有捕獲/比較功能,大量的捕獲/比較寄存器,可用于事件計(jì)數(shù)、時(shí)序發(fā)生、PWM 等;有的器件更具有可實(shí)現(xiàn)異步、同步及多址訪問(wèn)串行通信接口可方便的實(shí)現(xiàn)多機(jī)通信等應(yīng)用;具有較多的 I/O 端口,P0、P1、P2 端口能夠接收外部上升沿或下降沿的中斷輸入;10/12位硬件 A/D 轉(zhuǎn)換器有較高的轉(zhuǎn)換速率,嵌入式遠(yuǎn)程醫(yī)療監(jiān)護(hù)系統(tǒng)
最高可達(dá)200kbps,能夠滿足大多數(shù)數(shù)據(jù)采集應(yīng)用;能直接驅(qū)動(dòng)液晶多達(dá) 160 段;實(shí)現(xiàn)兩路的 12 位 D/A 轉(zhuǎn)換;硬件I2C串行總線接口實(shí)現(xiàn)存儲(chǔ)器串行擴(kuò)展;以及為了增加數(shù)據(jù)傳輸速度,而采用的DMA模塊。MSP430 系列單片機(jī)的這些片內(nèi)外設(shè)為系統(tǒng)的單片解決方案提供了極大的方便。
另外,MSP430 系列單片機(jī)的中斷源較多,并且可以任意嵌套,使用時(shí)靈活方便。當(dāng)系統(tǒng)處于省電的低功耗狀態(tài)時(shí),中斷喚醒只需5μs。
MSP430 系列有 OPT 型、FLASH 型和 ROM 型三種類(lèi)型的器件,這些器件的開(kāi)發(fā)手段不同。對(duì)于 OPT 型和 ROM 型的器件是使用仿真器開(kāi)發(fā)成功之后燒寫(xiě)或掩膜芯片;對(duì)于 FLASH 型則有十分方便的開(kāi)發(fā)調(diào)試環(huán)境,因?yàn)槠骷瑑?nèi)有 JTAG 調(diào)試接口,還有可電擦寫(xiě)的 FLASH 存儲(chǔ)器,因此采用先下載程序到 FLASH 內(nèi),再在器件內(nèi)通過(guò)軟件控制程序的運(yùn)行,由 JTAG 接口讀取片內(nèi)信息供設(shè)計(jì)者調(diào)試使用的方法進(jìn)行開(kāi)發(fā)。這種方式只需要一臺(tái) PC 機(jī)和一個(gè) JTAG 調(diào)試器,而不需要仿真器和編程器。開(kāi)發(fā)語(yǔ)言有匯編語(yǔ)言和 C 語(yǔ)言。
考慮以上原因,我們決定采用該型號(hào)單片機(jī)為本系統(tǒng)的微處理器。
二、溫度采集芯片 18B20 DS18B20數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,具有線路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一根通信線,可以掛很多這樣的數(shù)字溫度計(jì),十分方便。
1、DS18B20產(chǎn)品的特點(diǎn)
(1)、只要求一個(gè)端口即可實(shí)現(xiàn)通信。
(2)、在DS18B20中的每個(gè)器件上都有獨(dú)一無(wú)二的序列號(hào)。
(3)、實(shí)際應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測(cè)溫。
(4)、測(cè)量溫度范圍在-55。C到+125。C之間。
(5)、數(shù)字溫度計(jì)的分辨率用戶可以從9位到12位選擇。(6)、內(nèi)部有溫度上、下限告警設(shè)置。2. DS18B20的使用方法
由于DS18B20采用的是1-Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)AT89S51單片機(jī)來(lái)說(shuō),硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來(lái)模擬單總線的協(xié)議時(shí)序來(lái)完成對(duì)DS18B20芯片的訪問(wèn)。
由于DS18B20是在一根I/O線上讀寫(xiě)數(shù)據(jù),因此,對(duì)讀寫(xiě)的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來(lái)保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫(xiě)時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫(xiě)時(shí)序開(kāi)始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫(xiě)命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。
DS18B20的復(fù)位時(shí)序
DS18B20的讀時(shí)序
對(duì)于DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過(guò)程。
對(duì)于DS18B20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過(guò)程,至少需要60us才能完成。
嵌入式遠(yuǎn)程醫(yī)療監(jiān)護(hù)系統(tǒng)
DS18B20的寫(xiě)時(shí)序
對(duì)于DS18B20的寫(xiě)時(shí)序仍然分為寫(xiě)0時(shí)序和寫(xiě)1時(shí)序兩個(gè)過(guò)程。對(duì)于DS18B20寫(xiě)0時(shí)序和寫(xiě)1時(shí)序的要求不同,當(dāng)要寫(xiě)0時(shí)序時(shí),單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的“0”電平,當(dāng)要寫(xiě)1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線。
綜合各方原因我們采用該芯片模擬所有醫(yī)用傳感器,來(lái)完成整個(gè)系統(tǒng)設(shè)計(jì)。
三、無(wú)線模塊 NRF2401 nRF2401是單片射頻收發(fā)芯片,工作于2.4~2.5GHz ISM頻段,芯片內(nèi)置頻率合成器、功率放大器、晶體振蕩器和調(diào)制器等功能模塊,輸出功率和通信頻道可通過(guò)程序進(jìn)行配置。芯片能耗非常低,以-5dBm的功率發(fā)射時(shí),工作電流只有10.5mA,接收時(shí)工作電流只有18mA,多種低功率工作模式,節(jié)能設(shè)計(jì)更方便。其DuoCeiverTM技術(shù)使nRF2401可以使用同一天線,同時(shí)接收兩個(gè)不同頻道的數(shù)據(jù)。nRF2401適用于多種無(wú)線通信的場(chǎng)合,如無(wú)線數(shù)據(jù)傳輸系統(tǒng)、無(wú)線鼠標(biāo)、遙控開(kāi)鎖、遙控玩具等。nRF2401內(nèi)置地址解碼器、先入先出堆棧區(qū)、解調(diào)處理器、時(shí)鐘處理器、GFSK濾波器、低噪聲放大器、頻率合成器,功率放大器等功能模塊,需要很少的外圍元件,因此使用起來(lái)非常方便。QFN24引腳封裝,外形尺寸只有5×5mm。
nRF2401的收發(fā)模式有ShockBurstTM收發(fā)模式和直接收發(fā)模式兩種,收發(fā)模式由器件配置字決定,具體配置將在器件配置部分詳細(xì)介紹。
ShockBurstTM收發(fā)模式
ShockBurstTM收發(fā)模式下,使用片內(nèi)的先入先出堆棧區(qū),數(shù)據(jù)低速?gòu)奈⒖刂破魉腿耄咚?1Mbps)發(fā)射,這樣可以盡量節(jié)能,因此,使用低速的微控制器也能得到很高的射頻數(shù)據(jù)發(fā)射速率。與射頻協(xié)議相關(guān)的所有高速信號(hào)處理都在片內(nèi)進(jìn)行,這種做法有三大好處:盡量節(jié)能;低的系統(tǒng)費(fèi)用(低速微處理器也能進(jìn)行高速射頻發(fā)射);數(shù)據(jù)在空中停留時(shí)間短,抗干擾性高。nRF2401的ShockBurstTM技術(shù)同時(shí)也減小了整個(gè)系統(tǒng)的平均工作電流。
在ShockBurstTM收發(fā)模式下,nRF2401自動(dòng)處理字頭和CRC校驗(yàn)碼。在接收數(shù)據(jù)時(shí),自動(dòng)把字頭和CRC校驗(yàn)碼移去。在發(fā)送數(shù)據(jù)時(shí),自動(dòng)加上字頭和CRC校驗(yàn)碼,當(dāng)發(fā)送過(guò)程完成后,數(shù)據(jù)準(zhǔn)備好引腳通知微處理器數(shù)據(jù)發(fā)射完畢。
ShockBurstTM發(fā)射流程
接口引腳為CE,CLK1,DATA
A.當(dāng)微控制器有數(shù)據(jù)要發(fā)送時(shí),其把CE置高,使nRF2401工作;
B.把接收機(jī)的地址和要發(fā)送的數(shù)據(jù)按時(shí)序送入nRF2401;
C.微控制器把CE置低,激發(fā)nRF2401進(jìn)行ShockBurstTM發(fā)射;
D.nRF2401的ShockBurstTM發(fā)射
給射頻前端供電;
射頻數(shù)據(jù)打包(加字頭、CRC校驗(yàn)碼);
高速發(fā)射數(shù)據(jù)包;
發(fā)射完成,nRF2401進(jìn)入空閑狀態(tài)。
嵌入式遠(yuǎn)程醫(yī)療監(jiān)護(hù)系統(tǒng)
ShockBurstTM接收流程
接口引腳CE、DR1、CLK1和DATA(接收通道1)
A.配置本機(jī)地址和要接收的數(shù)據(jù)包大??;
B.進(jìn)入接收狀態(tài),把CE置高;
C.200us后,nRF2401進(jìn)入監(jiān)視狀態(tài),等待數(shù)據(jù)包的到來(lái);
D.當(dāng)接收到正確的數(shù)據(jù)包(正確的地址和CRC校驗(yàn)碼),nRF2401自動(dòng)把字頭、地址和CRC校驗(yàn)位移去;
E.nRF2401通過(guò)把DR1(這個(gè)引腳一般引起微控制器中斷)置高通知微控制器;
F.微控制器把數(shù)據(jù)從nRF2401移出;
G.所有數(shù)據(jù)移完,nRF2401把DR1置低,此時(shí),如果CE為高,則等待下一個(gè)數(shù)據(jù)包,如果CE為低,開(kāi)始其它工作流程。
直接收發(fā)模式
在直接收發(fā)模式下,nRF2401如傳統(tǒng)的射頻收發(fā)器一樣工作。
直接發(fā)送模式
接口引腳為CE、DATA
A.當(dāng)微控制器有數(shù)據(jù)要發(fā)送時(shí),把CE置高;
B.nRF2401射頻前端被激活;
C.所有的射頻協(xié)議必須在微控制器程序中進(jìn)行處理(包括字頭、地址和CRC校驗(yàn)碼)。
直接接收模式
接口引腳為CE、CLK1和DATA
A.一旦nRF2401被配置為直接接收模式,DATA引腳將根據(jù)天線接收到的信號(hào)開(kāi)始高低變化(由于噪聲的存在);
B.CLK1引腳也開(kāi)始工作;
C.一旦接收到有效的字頭,CLK1引腳和DATA引腳將協(xié)調(diào)工作,把射頻數(shù)據(jù)包以其被發(fā)射時(shí)的數(shù)據(jù)從DATA引腳送給微控制器;
D.這頭必須是8位;
E.DR引腳沒(méi)用上,所有的地址和CRC校驗(yàn)必須在微控制器內(nèi)部進(jìn)行。
配置模式
在配置模式,15字節(jié)的配置字被送到nRF2401,這通過(guò)CS、CLK1和DATA三個(gè)引腳完成,具體的配置方法請(qǐng)參考本文的器件配置部分。
空閑模式
nRF2401的空閑模式是為了減小平均工作電流而設(shè)計(jì),其最大的優(yōu)點(diǎn)是,實(shí)現(xiàn)節(jié)能的同時(shí),縮短芯片的起動(dòng)時(shí)間。在空閑模式下,部分片內(nèi)晶振仍在工作,此時(shí)的工
嵌入式遠(yuǎn)程醫(yī)療監(jiān)護(hù)系統(tǒng)
作電流跟外部晶振的頻率有關(guān),如外部晶振為4MHz時(shí)工作電流為12uA,外部晶振為16MHz時(shí)工作電流為32uA。在空閑模式下,配置字的內(nèi)容保持在nRF2401片內(nèi)。
關(guān)機(jī)模式
在關(guān)機(jī)模式下,為了得到最小的工作電流,一般此時(shí)的工作電流小于1uA。關(guān)機(jī)模式下,配置字的內(nèi)容也會(huì)被保持在nRF2401片內(nèi),這是該模式與斷電狀態(tài)最大的區(qū)別。
nRF2401的所有配置工作都是通過(guò)CS、CLK1和DATA三個(gè)引腳完成,把其配置為ShockBurstTM收發(fā)模式需要15字節(jié)的配置字,而如把其配置為直接收發(fā)模式只需要2字節(jié)的配置字。由上文對(duì)nRF2401工作模式的介紹,我們可以知道,nRF2401一般工作于ShockBurstTM收發(fā)模式,這樣,系統(tǒng)的程序編制會(huì)更加簡(jiǎn)單,并且穩(wěn)定性也會(huì)更高,因此,下文著重介紹把nRF2401配置為ShockBurstTM收發(fā)模式的器件配置方法。
ShockBurstTM的配置字使nRF2401能夠處理射頻協(xié)議,在配置完成后,在nRF2401工作的過(guò)程中,只需改變其最低一個(gè)字節(jié)中的內(nèi)容,以實(shí)現(xiàn)接收模式和發(fā)送模式之間切換。ShockBurstTM的配置字可以分為以下四個(gè)部分:
數(shù)據(jù)寬度:聲明射頻數(shù)據(jù)包中數(shù)據(jù)占用的位數(shù)。這使得nRF2401能夠區(qū)分接收數(shù)據(jù)包中的數(shù)據(jù)和CRC校驗(yàn)碼;
地址寬度:聲明射頻數(shù)據(jù)包中地址占用的位數(shù)。這使得nRF2401能夠區(qū)分地址和數(shù)據(jù);
地址:接收數(shù)據(jù)的地址,有通道1的地址和通道2的地址;
CRC:使nRF2401能夠生成CRC校驗(yàn)碼和解碼。
當(dāng)使用nRF2401片內(nèi)的CRC技術(shù)時(shí),要確保在配置字中CRC校驗(yàn)被使能,并且發(fā)送和接收使用相同的協(xié)議。
在配置模式下,注意保證PWR_UP引腳為高電平,CE引腳為低電平。配置字從最高位開(kāi)始,依次送入nRF2401。在CS引腳的下降沿,新送入的配置字開(kāi)始工作。PCB設(shè)計(jì)
PCB設(shè)計(jì)對(duì)nRF2401的整體性能影響很大,所以PCB設(shè)計(jì)在nRF2401收發(fā)系統(tǒng)的開(kāi)發(fā)過(guò)程中主要的工作之一,在PCB設(shè)計(jì)時(shí),必須考慮到各種電磁干擾,注意調(diào)整電阻、電容和電感的位置,特別要注意電容的位置。
nRF2401的PCB一般都是雙層板,底層一般不放置元件,為地層,頂層的空余地方一般都敷上銅,這些敷銅通過(guò)過(guò)孔與底層的地相連。直流電源及電源濾波電容盡量靠近VDD引腳。nRF2401的供電電源應(yīng)通過(guò)電容隔開(kāi),這樣有利于給nRF2401提供穩(wěn)定的電源。在PCB中,盡量多打一些通孔,使頂層和底層的地能夠充分接觸。
nRF2401通過(guò)ShockBurstTM收發(fā)模式進(jìn)行無(wú)線數(shù)據(jù)發(fā)送,收發(fā)可靠,其外形尺寸小,需要的外圍元器件也少,因此,使用方便,在工業(yè)控制、消費(fèi)電子等各個(gè)領(lǐng)域都具有廣闊的應(yīng)用前景。
由于2401的諸多優(yōu)點(diǎn),我們決定選用此芯片完成無(wú)線部分。至此我們已經(jīng)完成整體設(shè)計(jì)。
嵌入式遠(yuǎn)程醫(yī)療監(jiān)護(hù)系統(tǒng)
二、軟件部分
接收程序:
#include “msp430.h” #include “cry1602.h” typedef unsigned char uchar;typedef unsigned intuint;
/**************宏定義***************/ #define DataDir P4DIR #define DataPort P4OUT
#define Busy 0x80 #define CtrlDir P3DIR #define CLR_RS P3OUT&=~BIT0;//RS = P3.0 #define SET_RS P3OUT|=BIT0;
#define CLR_RW P3OUT&=~BIT1;//RW = P3.1 #define SET_RW P3OUT|=BIT1;
#define CLR_EN P3OUT&=~BIT2;//EN = P3.2 #define SET_EN P3OUT|=BIT2;
/*********************************************** 函數(shù)名稱(chēng):DispStr 功 能:讓液晶從某個(gè)位置起連續(xù)顯示一個(gè)字符串 參 數(shù):x--位置的列坐標(biāo) y--位置的行坐標(biāo) ptr--指向字符串存放位置的指針 返回值 :無(wú)
***********************************************/ voidDispStr(ucharx,uchary,uchar *ptr){ uchar *temp;uchari,n = 0;
temp = ptr;while(*ptr++!= '