無(wú)線(xiàn)數(shù)傳設(shè)備DTD433可以提供高穩(wěn)定,、高可靠,、低成本的數(shù)據(jù)傳輸。它提供了透明的RS232/RS485接口,,具有安裝維護(hù)方便,、繞射能力強(qiáng)、組網(wǎng)結(jié)構(gòu)靈活,、大范圍覆蓋等特點(diǎn),,適合于點(diǎn)多而分散、地理環(huán)境復(fù)雜等應(yīng)用場(chǎng)合,。該設(shè)備提供點(diǎn)對(duì)點(diǎn)通信,,也可以實(shí)現(xiàn)點(diǎn)對(duì)多點(diǎn)通信,不需要編寫(xiě)程序,,不需要布線(xiàn),。一般電工調(diào)試也可以通過(guò)。無(wú)線(xiàn)數(shù)據(jù)傳輸設(shè)備廣泛應(yīng)用于無(wú)線(xiàn)數(shù)傳領(lǐng)域,,典型應(yīng)用包括遙控,、遙感,、遙測(cè)系統(tǒng)中的數(shù)據(jù)采集,、檢測(cè)、報(bào)警,、過(guò)程控制等環(huán)節(jié),。
1 射頻數(shù)傳模塊開(kāi)發(fā)平臺(tái)的構(gòu)建
建立軟硬件開(kāi)發(fā)平臺(tái)是模塊開(kāi)發(fā)的首要任務(wù),比較了幾種射頻數(shù)傳模塊方案,,最后決定采用由LPC900系列FLASH單片機(jī)和CC1000射頻傳輸芯片為主芯片的開(kāi)發(fā)方案,。
1.1 主芯片簡(jiǎn)介
LPC2900 FLASH單片機(jī)是恩智浦半導(dǎo)體(NXP Semiconductors)(由飛利浦創(chuàng)建的獨(dú)立半導(dǎo)體公司)發(fā)布了LPC2900系列微控制器,,進(jìn)一步擴(kuò)展了其ARM7和ARM9微控制器業(yè)界最廣泛的生產(chǎn)線(xiàn)。恩智浦LPC2900基于廣受歡迎的,、高性能的ARM968E-S處理器,,針對(duì)工業(yè)、醫(yī)療,、發(fā)動(dòng)機(jī)控制和汽車(chē)電子行業(yè)內(nèi)的應(yīng)用,,為設(shè)計(jì)師提供一個(gè)具有高成本效益、靈活的,、低功耗的解決方案,。
CC1000是根據(jù)Chipcon公司的SmartRF技術(shù),在0.35μm CMOS 工藝下制造的一種理想的超高頻單片收發(fā)通信芯片,。它的工作頻帶在315,、868及915MHz,但CC1000很容易通過(guò)編程使其工作在300~1000MHz范圍內(nèi),。它具有低電壓(2.3~3.6V),,極低的功耗,可編程輸出功率(-20~10dBm),,高靈敏度(一般-109dBm),,小尺寸(TSSOP-28封裝),集成了位同步器等特點(diǎn),。其FSK數(shù)傳可達(dá)72.8Kbps,,具有250Hz步長(zhǎng)可編程頻率能力,適用于跳頻協(xié)議;主要工作參數(shù)能通過(guò)串行總線(xiàn)接口編程改變,,使用非常靈活,。
1.2 開(kāi)發(fā)平臺(tái)構(gòu)建
LPC900系列單片機(jī)提供了較為完善的軟硬件開(kāi)發(fā)工具,在系統(tǒng)開(kāi)發(fā)中采用TKS932仿真器,,用于系統(tǒng)的仿真,、調(diào)試。該仿真器支持目前流行的KEILC公司的μVisionⅡ集成開(kāi)發(fā)環(huán)境,。
通過(guò)自行設(shè)計(jì)的射頻模塊開(kāi)發(fā)板以及附加一些輔助電路,,配合TKS932仿真器及軟件開(kāi)發(fā)工具μVisionⅡ,構(gòu)成的射頻數(shù)傳模塊開(kāi)發(fā)平臺(tái)的框圖如圖1所示,。

PC機(jī)的COM1口與TKS932仿真器進(jìn)行通信,,對(duì)模塊軟件進(jìn)行軟、硬件仿真,。COM2口則與LPC922進(jìn)行通訊,,一方面可以把軟件調(diào)試信息更加直觀地反映出來(lái),配合軟件調(diào)試;另一方面可以通過(guò)該串口接收或者發(fā)送數(shù)據(jù)到射頻模塊。
2 軟件開(kāi)發(fā)及調(diào)試
2.1 數(shù)傳模塊軟件基本結(jié)構(gòu)說(shuō)明
射頻傳輸芯片CCl000具有3種狀態(tài):IDEL(空閑),,RX(接收數(shù)據(jù)),,TX(發(fā)送數(shù)據(jù))。整體上看,,這是個(gè)具有3種狀態(tài)的狀態(tài)機(jī)模型,,狀態(tài)之間的相互轉(zhuǎn)換見(jiàn)圖2。模塊主程序除了完成基本的芯片初始化工作外,,程序的運(yùn)行主要是根據(jù)在CC1000的DCLK管腳產(chǎn)生的中斷,,由中斷管理程序進(jìn)行狀態(tài)檢測(cè)及切換.

2.2 軟件調(diào)試開(kāi)發(fā)中遇到的問(wèn)題分析
該開(kāi)發(fā)平臺(tái)采用的軟件開(kāi)發(fā)環(huán)境為μVisionⅡ。該環(huán)境內(nèi)嵌多種符合當(dāng)前工業(yè)標(biāo)準(zhǔn)的開(kāi)發(fā)工具,,可以完成從工程建立和管理,、編譯、連接,、目標(biāo)代碼的生成,,軟件仿真,硬件仿真等完整的開(kāi)發(fā)流程,。即使不使用C語(yǔ)言而僅用匯編語(yǔ)言編程,,其方便的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會(huì)令開(kāi)發(fā)進(jìn)度大大加快,。但是其開(kāi)發(fā)環(huán)境又有其自身的特色,,需要對(duì)其中一些特殊的問(wèn)題加以考慮。
關(guān)鍵字:LPC900單片機(jī) 射頻數(shù)傳模塊
2.2.1 程序中的關(guān)鍵字
在進(jìn)行程序設(shè)計(jì)時(shí)不能使用C51編譯器的關(guān)鍵字來(lái)定義變量名或者函數(shù)名,。C51是區(qū)別大,、小字母的,而關(guān)鍵字都是小寫(xiě)字母,。
一些函數(shù)定義從字面上看沒(méi)有問(wèn)題,,但在編譯時(shí)均指示錯(cuò)誤,查看C51關(guān)鍵字有關(guān)目錄,,查出原因在于變量參數(shù)data為其關(guān)鍵字,,造成了編譯時(shí)的錯(cuò)誤。
下面列出了一些常用的關(guān)鍵字,,在程序設(shè)計(jì)時(shí)定義變量或函數(shù)名時(shí)應(yīng)特別注意避免使用:
_at_,,alien,bdata,,bit,,code,data,,idata,,large,,pdata,,sbit,,sfr,sfrl6,,smal,,task,using,,xdata,,priority。
2.2.2 BIT和SBIT的區(qū)別和全局變量,、局部變量的使用
bit主要用位變量操作,。sbit雖然也是用于位變量的操作,但其使用范圍較bit更廣泛,。sbit不僅可以用于定義可位尋址寄存器的各個(gè)位,,使我們可以對(duì)寄存器進(jìn)行位操作,sbit的另一個(gè)重要作用在于構(gòu)建類(lèi)似于共用體數(shù)據(jù)類(lèi)型,,這種數(shù)據(jù)類(lèi)型在LPC922與CC1000的串行/并行數(shù)據(jù)相互轉(zhuǎn)換中起著重要的作用,。例如:
unsigned char bdata myDatas2;//定義一個(gè)可位尋址的全局變量
//定義變量的各個(gè)位
sbit cDatas0=myDatas2^O;
sbit cDatasl=myDatas2^l;
sbit cDatas2=myDatas2^2;
sbit cDatas3=myDatas2^3;
sbit eDatas4=myDatas2^4;
sbit eDatas5=myDatas2^5;
sbit cDatas6=myDatas2^6;
sbit cDatas7=myDatas2^7;
在這里myDatas2既可以作為一個(gè)8位的變量使用,同時(shí)各個(gè)位也可以單獨(dú)使用,,這在串/并數(shù)據(jù)轉(zhuǎn)換的場(chǎng)合是很有用的,。特別需要注意的是,myDatas2這個(gè)可位尋址變量必須以全局變量的形式予以定義,,如果定義為局部變量,,編譯器也將產(chǎn)生錯(cuò)誤。
2.2.3 UART通訊和函數(shù)調(diào)用
在進(jìn)行硬件仿真時(shí),,需要進(jìn)行LPC922與PC機(jī)之間的UART串行通信,,這樣可以把有關(guān)調(diào)試信息直觀地顯示在超級(jí)終端上。初期一直存在無(wú)法通信問(wèn)題,,為此調(diào)試了有關(guān)串口讀寫(xiě)的底層代碼,。
原來(lái)的單片機(jī)與PC機(jī)串口通訊寫(xiě)程序如下:
原來(lái)的UART寫(xiě)字符串函數(shù)writeln是通過(guò)調(diào)用putchar函數(shù)來(lái)進(jìn)行的,但在硬件仿真時(shí)一直出錯(cuò),,當(dāng)把這部分程序單獨(dú)分離出來(lái)進(jìn)行仿真時(shí),,卻未出現(xiàn)問(wèn)題。后來(lái)分析考慮推想可能原因是:C51由于內(nèi)部堆??臻g的限制,,在函數(shù)調(diào)用時(shí),提供的是一種壓縮棧,,每個(gè)過(guò)程被給定一個(gè)空間用于存放局部變量,,過(guò)程中的每個(gè)變量都存放在這個(gè)空間的固定位置,當(dāng)多重調(diào)用或者遞歸調(diào)用這個(gè)過(guò)程時(shí),會(huì)導(dǎo)致變量被覆蓋而出錯(cuò),。此時(shí)應(yīng)把該函數(shù)定義為可重入函數(shù),,但是再入函數(shù)因?yàn)橐鲆恍┨厥獾奶幚恚话氵\(yùn)行起來(lái)都比較慢,。在這個(gè)程序中寫(xiě)UART操作對(duì)函數(shù)putchar調(diào)用時(shí),,程序的其他部分也在調(diào)用該函數(shù),覆蓋了傳遞給putchar函數(shù)的參數(shù),,導(dǎo)致程序運(yùn)行出錯(cuò),。于是對(duì)程序做了修改如下:
修改過(guò)的程序與原來(lái)程序差別在于不再進(jìn)行putchar函數(shù)調(diào)用,而直接進(jìn)行有關(guān)操作,。修改后再進(jìn)行硬件仿真,,問(wèn)題得到了很好的解決。由此可以看到,,LPC900單片機(jī)由于內(nèi)部堆棧資源有限,,在程序設(shè)計(jì)時(shí)當(dāng)發(fā)現(xiàn)程序運(yùn)行異常時(shí),應(yīng)特別注意函數(shù)調(diào)用帶來(lái)的問(wèn)題,。當(dāng)然出現(xiàn)這個(gè)問(wèn)題還可能會(huì)有其他方面的原因,。
2.2.4 看門(mén)狗
當(dāng)系統(tǒng)處于一些比較惡劣環(huán)境(工控、底層采集等),,如果系統(tǒng)的抗干擾沒(méi)有做好,,則容易出現(xiàn)"死機(jī)"現(xiàn)象,這時(shí)硬件電路并沒(méi)有損壞,,只是內(nèi)部程序運(yùn)行出現(xiàn)錯(cuò)誤,,必須復(fù)位才能恢復(fù),這時(shí)可用"看門(mén)狗"來(lái)解決問(wèn)題,??撮T(mén)狗定時(shí)器子系統(tǒng)可通過(guò)復(fù)位使系統(tǒng)從錯(cuò)誤的操作中恢復(fù)。但是任何事情都有其兩面性,,當(dāng)軟件沒(méi)能在定時(shí)器溢出之前將其清零或者重新賦值,,看門(mén)狗定時(shí)器就會(huì)導(dǎo)致系統(tǒng)產(chǎn)生一次復(fù)位,從而產(chǎn)生錯(cuò)誤,。
仿真開(kāi)發(fā)板上采用的是LPC922,,因此對(duì)其復(fù)位時(shí)的有關(guān)看門(mén)狗的寄存器進(jìn)行了具體分析,最后發(fā)現(xiàn)問(wèn)題是由于沒(méi)有在一定的時(shí)間內(nèi)及時(shí)對(duì)看門(mén)狗進(jìn)行重新的配置參數(shù)造成的,。通過(guò)對(duì)WDCON,,WDL,WFEED1,,WFEED2這4個(gè)與看門(mén)狗有關(guān)的寄存器進(jìn)行合理配置,,很好地解決了程序復(fù)位問(wèn)題,。
2.2.5 LPC900讀操作和CC1000寄存器讀寫(xiě)
LPC900系列單片機(jī)通常也具有51單片機(jī)的一些特點(diǎn),在使用時(shí)也應(yīng)注意,。當(dāng)其I/O口作為輸入口使用時(shí),,有2種工作方式,即讀端口和讀引腳,。讀端口實(shí)際上并不從外部讀入數(shù)據(jù),,而只是把端口鎖存器的內(nèi)容讀到內(nèi)部總線(xiàn),,經(jīng)過(guò)某種運(yùn)算或者變換后,,再寫(xiě)回到端口鎖存器。
讀引腳時(shí)才真正地把外部的數(shù)據(jù)讀入到內(nèi)部總線(xiàn),。這時(shí)要先通過(guò)指令,,把端口鎖存器置1,然后再進(jìn)行讀引腳操作,,否則就可能讀錯(cuò),。在LPC922讀寫(xiě)CC1000寄存器過(guò)程中涉及到有關(guān)讀引腳操作問(wèn)題,應(yīng)區(qū)別這2種工作方式,。
3 結(jié)語(yǔ)
在本文介紹的開(kāi)發(fā)平臺(tái)上利用LPC900系列單片機(jī)實(shí)現(xiàn)了根據(jù)不同的應(yīng)用需要對(duì)射頻模塊上CC1000寄存器進(jìn)行有效的參數(shù)讀寫(xiě)配置控制,,初步達(dá)到了設(shè)計(jì)要求。對(duì)軟件開(kāi)發(fā)中所遇到問(wèn)題的分析討論,,在LPC900系列單片機(jī)的應(yīng)用開(kāi)發(fā)中也具有較廣泛的實(shí)際意義,。