當(dāng)前位置:首頁 > 嵌入式 > 嵌入式教程
[導(dǎo)讀]ARM7TDMI微處理器和液晶顯示模塊的接口及應(yīng)用

   當(dāng)前許多應(yīng)用領(lǐng)域都采用無線方式進(jìn)行數(shù)據(jù)傳輸,在無線抄表、工業(yè)數(shù)據(jù)采集、天線遙控、計(jì)算機(jī)遙測遙控,醫(yī)療衛(wèi)生自動化、家庭自動化、安防、汽車儀表數(shù)據(jù)讀取等各方面無線射頻數(shù)傳模塊都有廣泛的應(yīng)用。

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

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

       1.1 主芯片簡介

       LPC2900 FLASH單片機(jī)是Philips公司推出的一款高性能、微功耗(完全掉電模式功耗低于1μA)、高速率(6倍于普通51單片機(jī))、小封裝的5l內(nèi)核單片機(jī),主要集成了字節(jié)方式的I2C總線、SPI總線、增強(qiáng)型UART接口、比較器、實(shí)時(shí)時(shí)鐘、E2PROM,AD/DA轉(zhuǎn)換器、ISP/IAP在線編程和應(yīng)用中編程等一系列有特色的功能部件,可滿足各種對成本、線路板空間有限制而又要求高性能、高可靠性的應(yīng)用。根據(jù)性能、成本等各方面因素我們選擇了該系列的LPC922。

 

       CC1000是基于Chipcon公司的Smart RF技術(shù)制造的可編程、半雙工超高頻單片收發(fā)器芯片,電路工作在ISM頻段(300~1 000 MHz)。通過串行接口編程,其主要的工作參數(shù)能夠根據(jù)不同應(yīng)用場合需要靈活方便地設(shè)定。同時(shí)其靈敏度可達(dá)-109 dBm,可編程輸出功率-20~10 dBm,F(xiàn)SK調(diào)制數(shù)據(jù)率最高可達(dá)76.8 kBaud,可在2.7~3.3 V低電源工作。非常適合應(yīng)用于ISM(工業(yè)、科學(xué)及醫(yī)療)方面以及SRD(短距離通信)。

       1.2 開發(fā)平臺構(gòu)建

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

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

                          
 

       PC機(jī)的COM1口與TKS932仿真器進(jìn)行通信,對模塊軟件進(jìn)行軟、硬件仿真。COM2口則與LPC922進(jìn)行通訊,一方面可以把軟件調(diào)試信息更加直觀地反映出來,配合軟件調(diào)試;另一方面可以通過該串口接收或者發(fā)送數(shù)據(jù)到射頻模塊。

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

       2.1 數(shù)傳模塊軟件基本結(jié)構(gòu)說明

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

                                 

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

 

       該開發(fā)平臺采用的軟件開發(fā)環(huán)境為μVisionⅡ。該環(huán)境內(nèi)嵌多種符合當(dāng)前工業(yè)標(biāo)準(zhǔn)的開發(fā)工具,可以完成從工程建立和管理、編譯、連接、目標(biāo)代碼的生成,軟件仿真,硬件仿真等完整的開發(fā)流程。尤其C編譯工具在產(chǎn)生代碼的準(zhǔn)確性和效率方面達(dá)到了較高的水平,而且可以附加靈活的控制選項(xiàng),在開發(fā)大型項(xiàng)目時(shí)非常理想。即使不使用C語言而僅用匯編語言編程,其方便的集成環(huán)境、強(qiáng)大的軟件仿真調(diào)試工具也會令開發(fā)進(jìn)度大大加快。但是其開發(fā)環(huán)境又有其自身的特色,需要對其中一些特殊的問題加以考慮。下面是對軟件開發(fā)中遇到的幾個(gè)典型問題的具體討論和研究。 2.2.1 程序中的關(guān)鍵字

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

例如:void writeToCC1000Register(char addr,char data)。該函數(shù)定義從字面上看沒有問題,但在編譯時(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ū)別和全局變量、局部變量的使用

       在程序中有關(guān)位操作時(shí)必然要涉及到2種數(shù)據(jù)類型,bit和sbit。這2種數(shù)據(jù)類型的使用應(yīng)注意區(qū)別。[!--empirenews.page--]

       bit主要用位變量操作。sbit雖然也是用于位變量的操作,但其使用范圍較bit更廣泛。sbit不僅可以用于定義可位尋址寄存器的各個(gè)位,使我們可以對寄存器進(jìn)行位操作,sbit的另一個(gè)重要作用在于構(gòu)建類似于共用體數(shù)據(jù)類型,這種數(shù)據(jù)類型在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)換的場合是很有用的。特別需要注意的是,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)試信息直觀地顯示在超級終端上。初期一直存在無法通信問題,為此調(diào)試了有關(guān)串口讀寫的底層代碼,對出現(xiàn)的問題進(jìn)行了修正。

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

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

 

      
       修改過的程序與原來程序差別在于不再進(jìn)行putchar函數(shù)調(diào)用,而直接進(jìn)行有關(guān)操作。修改后再進(jìn)行硬件仿真,問題得到了很好的解決。在讀寫CC1000寄存器的操作中,也遇到了類似的問題,通過修改函數(shù)的調(diào)用,問題都得到了解決。由此可以看到,LPC900單片機(jī)由于內(nèi)部堆棧資源有限,在程序設(shè)計(jì)時(shí)當(dāng)發(fā)現(xiàn)程序運(yùn)行異常時(shí),應(yīng)特別注意函數(shù)調(diào)用帶來的問題。當(dāng)然出現(xiàn)這個(gè)問題還可能會有其他方面的原因,需要進(jìn)一步的進(jìn)行分析研究。 

   2.2.4 看門狗

 

       在進(jìn)行軟件仿真時(shí),一直出現(xiàn)程序復(fù)位跳轉(zhuǎn)現(xiàn)象,根據(jù)斷點(diǎn)追蹤,分析了該問題與程序運(yùn)行的時(shí)間因素有關(guān)。查看有關(guān)LPC900芯片資料,著重對其看門狗部分進(jìn)行了研究。

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

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

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

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

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

       3 結(jié)語

       在本文介紹的開發(fā)平臺上利用LPC900系列單片機(jī)實(shí)現(xiàn)了根據(jù)不同的應(yīng)用需要對射頻模塊上CC1000寄存器進(jìn)行有效的參數(shù)讀寫配置控制,初步達(dá)到了設(shè)計(jì)要求。該模塊經(jīng)過進(jìn)一步改進(jìn)可以用于無線數(shù)據(jù)傳輸?shù)戎T多領(lǐng)域。對軟件開發(fā)中所遇到問題的分析討論,在LPC900系列單片機(jī)的應(yīng)用開發(fā)中也具有較廣泛的實(shí)際意義。

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

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

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

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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