《電子技術應用》
您所在的位置:首頁 > 嵌入式技術 > 設計應用 > 對LPC900系列單片機在射頻數(shù)傳模塊中的研究
對LPC900系列單片機在射頻數(shù)傳模塊中的研究
摘要: 在本文介紹的開發(fā)平臺上利用LPC900系列單片機實現(xiàn)了根據(jù)不同的應用需要對射頻模塊上CC1000寄存器進行有效的參數(shù)讀寫配置控制,初步達到了設計要求,。對軟件開發(fā)中所遇到問題的分析討論,,在LPC900系列單片機的應用開發(fā)中也具有較廣泛的實際意義,。
Abstract:
Key words :

     當前許多應用領域都采用無線方式進行數(shù)據(jù)傳輸,無線數(shù)據(jù)傳輸是指利用無線傳輸模塊將工業(yè)現(xiàn)場設備輸出的各種物理量進行遠程傳輸,,如果傳輸?shù)氖情_關量,,也可以做到遠程設備遙測遙控。

  無線數(shù)傳設備DTD433可以提供高穩(wěn)定,、高可靠,、低成本的數(shù)據(jù)傳輸。它提供了透明的RS232/RS485接口,,具有安裝維護方便,、繞射能力強、組網(wǎng)結構靈活、大范圍覆蓋等特點,,適合于點多而分散,、地理環(huán)境復雜等應用場合。該設備提供點對點通信,,也可以實現(xiàn)點對多點通信,,不需要編寫程序,不需要布線,。一般電工調試也可以通過,。無線數(shù)據(jù)傳輸設備廣泛應用于無線數(shù)傳領域,典型應用包括遙控,、遙感,、遙測系統(tǒng)中的數(shù)據(jù)采集、檢測,、報警,、過程控制等環(huán)節(jié)。

  1 射頻數(shù)傳模塊開發(fā)平臺的構建

  建立軟硬件開發(fā)平臺是模塊開發(fā)的首要任務,,比較了幾種射頻數(shù)傳模塊方案,,最后決定采用由LPC900系列FLASH單片機和CC1000射頻傳輸芯片為主芯片的開發(fā)方案。

  1.1 主芯片簡介

  LPC2900 FLASH單片機是恩智浦半導體(NXP Semiconductors)(由飛利浦創(chuàng)建的獨立半導體公司)發(fā)布了LPC2900系列微控制器,,進一步擴展了其ARM7和ARM9微控制器業(yè)界最廣泛的生產(chǎn)線,。恩智浦LPC2900基于廣受歡迎的、高性能的ARM968E-S處理器,,針對工業(yè),、醫(yī)療、發(fā)動機控制和汽車電子行業(yè)內的應用,,為設計師提供一個具有高成本效益,、靈活的、低功耗的解決方案,。

  CC1000是根據(jù)Chipcon公司的SmartRF技術,,在0.35μm CMOS 工藝下制造的一種理想的超高頻單片收發(fā)通信芯片。它的工作頻帶在315,、868及915MHz,,但CC1000很容易通過編程使其工作在300~1000MHz范圍內。它具有低電壓(2.3~3.6V),,極低的功耗,可編程輸出功率(-20~10dBm),,高靈敏度(一般-109dBm),,小尺寸(TSSOP-28封裝),集成了位同步器等特點。其FSK數(shù)傳可達72.8Kbps,,具有250Hz步長可編程頻率能力,,適用于跳頻協(xié)議;主要工作參數(shù)能通過串行總線接口編程改變,,使用非常靈活,。

  1.2 開發(fā)平臺構建

  LPC900系列單片機提供了較為完善的軟硬件開發(fā)工具,在系統(tǒng)開發(fā)中采用TKS932仿真器,,用于系統(tǒng)的仿真,、調試。該仿真器支持目前流行的KEILC公司的μVisionⅡ集成開發(fā)環(huán)境,。

  通過自行設計的射頻模塊開發(fā)板以及附加一些輔助電路,,配合TKS932仿真器及軟件開發(fā)工具μVisionⅡ,構成的射頻數(shù)傳模塊開發(fā)平臺的框圖如圖1所示,。

 

  2 軟件開發(fā)及調試

  2.1 數(shù)傳模塊軟件基本結構說明

  射頻傳輸芯片CCl000具有3種狀態(tài):IDEL(空閑),,RX(接收數(shù)據(jù)),TX(發(fā)送數(shù)據(jù)),。整體上看,,這是個具有3種狀態(tài)的狀態(tài)機模型,狀態(tài)之間的相互轉換見圖2,。模塊主程序除了完成基本的芯片初始化工作外,,程序的運行主要是根據(jù)在CC1000的DCLK管腳產(chǎn)生的中斷,由中斷管理程序進行狀態(tài)檢測及切換.

  2.2 軟件調試開發(fā)中遇到的問題分析

  該開發(fā)平臺采用的軟件開發(fā)環(huán)境為μVisionⅡ,。該環(huán)境內嵌多種符合當前工業(yè)標準的開發(fā)工具,,可以完成從工程建立和管理、編譯,、連接,、目標代碼的生成,軟件仿真,,硬件仿真等完整的開發(fā)流程,。即使不使用C語言而僅用匯編語言編程,其方便的集成環(huán)境,、強大的軟件仿真調試工具也會令開發(fā)進度大大加快,。但是其開發(fā)環(huán)境又有其自身的特色,需要對其中一些特殊的問題加以考慮,。

  2.2.1 程序中的關鍵字

  在進行程序設計時不能使用C51編譯器的關鍵字來定義變量名或者函數(shù)名,。C51是區(qū)別大、小字母的,,而關鍵字都是小寫字母,。

  一些函數(shù)定義從字面上看沒有問題,,但在編譯時均指示錯誤,查看C51關鍵字有關目錄,,查出原因在于變量參數(shù)data為其關鍵字,,造成了編譯時的錯誤。

  下面列出了一些常用的關鍵字,,在程序設計時定義變量或函數(shù)名時應特別注意避免使用:

  _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不僅可以用于定義可位尋址寄存器的各個位,,使我們可以對寄存器進行位操作,sbit的另一個重要作用在于構建類似于共用體數(shù)據(jù)類型,,這種數(shù)據(jù)類型在LPC922與CC1000的串行/并行數(shù)據(jù)相互轉換中起著重要的作用,。例如:

  unsigned char bdata myDatas2;//定義一個可位尋址的全局變量

 ?。x變量的各個位

  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既可以作為一個8位的變量使用,同時各個位也可以單獨使用,,這在串/并數(shù)據(jù)轉換的場合是很有用的。特別需要注意的是,,myDatas2這個可位尋址變量必須以全局變量的形式予以定義,,如果定義為局部變量,編譯器也將產(chǎn)生錯誤,。

  2.2.3 UART通訊和函數(shù)調用

  在進行硬件仿真時,,需要進行LPC922與PC機之間的UART串行通信,這樣可以把有關調試信息直觀地顯示在超級終端上,。初期一直存在無法通信問題,,為此調試了有關串口讀寫的底層代碼。

  原來的單片機與PC機串口通訊寫程序如下:

  原來的UART寫字符串函數(shù)writeln是通過調用putchar函數(shù)來進行的,,但在硬件仿真時一直出錯,,當把這部分程序單獨分離出來進行仿真時,卻未出現(xiàn)問題,。后來分析考慮推想可能原因是:C51由于內部堆??臻g的限制,在函數(shù)調用時,,提供的是一種壓縮棧,,每個過程被給定一個空間用于存放局部變量,過程中的每個變量都存放在這個空間的固定位置,,當多重調用或者遞歸調用這個過程時,,會導致變量被覆蓋而出錯。此時應把該函數(shù)定義為可重入函數(shù),,但是再入函數(shù)因為要做一些特殊的處理,,一般運行起來都比較慢。在這個程序中寫UART操作對函數(shù)putchar調用時,,程序的其他部分也在調用該函數(shù),,覆蓋了傳遞給putchar函數(shù)的參數(shù),導致程序運行出錯,。于是對程序做了修改如下:

  修改過的程序與原來程序差別在于不再進行putchar函數(shù)調用,,而直接進行有關操作。修改后再進行硬件仿真,,問題得到了很好的解決,。由此可以看到,LPC900單片機由于內部堆棧資源有限,,在程序設計時當發(fā)現(xiàn)程序運行異常時,,應特別注意函數(shù)調用帶來的問題,。當然出現(xiàn)這個問題還可能會有其他方面的原因。

  2.2.4 看門狗

  當系統(tǒng)處于一些比較惡劣環(huán)境(工控,、底層采集等),,如果系統(tǒng)的抗干擾沒有做好,則容易出現(xiàn)"死機"現(xiàn)象,,這時硬件電路并沒有損壞,,只是內部程序運行出現(xiàn)錯誤,必須復位才能恢復,,這時可用"看門狗"來解決問題,。看門狗定時器子系統(tǒng)可通過復位使系統(tǒng)從錯誤的操作中恢復,。但是任何事情都有其兩面性,,當軟件沒能在定時器溢出之前將其清零或者重新賦值,看門狗定時器就會導致系統(tǒng)產(chǎn)生一次復位,,從而產(chǎn)生錯誤,。

  仿真開發(fā)板上采用的是LPC922,因此對其復位時的有關看門狗的寄存器進行了具體分析,,最后發(fā)現(xiàn)問題是由于沒有在一定的時間內及時對看門狗進行重新的配置參數(shù)造成的,。通過對WDCON,WDL,,WFEED1,,WFEED2這4個與看門狗有關的寄存器進行合理配置,很好地解決了程序復位問題,。

  2.2.5 LPC900讀操作和CC1000寄存器讀寫

  LPC900系列單片機通常也具有51單片機的一些特點,,在使用時也應注意。當其I/O口作為輸入口使用時,,有2種工作方式,,即讀端口和讀引腳。讀端口實際上并不從外部讀入數(shù)據(jù),,而只是把端口鎖存器的內容讀到內部總線,,經(jīng)過某種運算或者變換后,再寫回到端口鎖存器,。

  讀引腳時才真正地把外部的數(shù)據(jù)讀入到內部總線,。這時要先通過指令,把端口鎖存器置1,,然后再進行讀引腳操作,,否則就可能讀錯。在LPC922讀寫CC1000寄存器過程中涉及到有關讀引腳操作問題,應區(qū)別這2種工作方式,。

  3 結語

  在本文介紹的開發(fā)平臺上利用LPC900系列單片機實現(xiàn)了根據(jù)不同的應用需要對射頻模塊上CC1000寄存器進行有效的參數(shù)讀寫配置控制,,初步達到了設計要求。對軟件開發(fā)中所遇到問題的分析討論,,在LPC900系列單片機的應用開發(fā)中也具有較廣泛的實際意義,。


 

此內容為AET網(wǎng)站原創(chuàng),未經(jīng)授權禁止轉載,。