周璐璐
伴隨著集成電路的發(fā)展,無線通信技術(shù)變得更加成熟,而且容易實(shí)現(xiàn)。數(shù)據(jù)的傳輸速度,隨著技術(shù)的不斷提高也越來越快,人們慢慢擺脫了電纜的束縛,使信息的獲取慢慢的從有線向無線進(jìn)行過渡。本設(shè)計(jì)的傳輸系統(tǒng)主要是實(shí)現(xiàn)“無線傳書”任務(wù),除此之外還有LED任務(wù)、信號(hào)量檢測任務(wù)、按鍵掃描任務(wù)和主任務(wù)。設(shè)計(jì)中引入了嵌入式操作系統(tǒng) μCOS-II,并自己構(gòu)建GUI環(huán)境,使得功能相對集中的控制,將軟件封裝在任務(wù)中,簡化了總體軟件結(jié)構(gòu)的復(fù)雜度,提高了系統(tǒng)的開發(fā)效率。
系統(tǒng)的功能模塊框圖可以簡化設(shè)計(jì)過程,貫穿于整個(gè)系統(tǒng)設(shè)計(jì)和調(diào)試的始終,使得設(shè)計(jì)思想清晰明白。整個(gè)系統(tǒng)分為主機(jī)子系統(tǒng)和從機(jī)子系統(tǒng),共用一套程序代碼,通過外圍電路的按鍵控制部分進(jìn)行模式的選擇。每個(gè)系統(tǒng)都是由TFTLCD顯示、無線發(fā)送或接收、控制器部分等功能模塊組成,都可以獨(dú)立進(jìn)行各自的顯示工作??刂破鞑糠种饕怯蒑CU和按鍵、LED、下載電路、電源等功能模塊組成。下面我們就硬件部分設(shè)計(jì)和軟件部分設(shè)計(jì)分別進(jìn)行介紹。
1 硬件設(shè)計(jì)
ARM Cortex-M3處理器是為存儲(chǔ)器和處理器的尺寸對產(chǎn)品成本影響極大的各種應(yīng)用專門開發(fā)設(shè)計(jì)的,它整合了多種技術(shù),減少使用內(nèi)存,并在極小的 RISC 內(nèi)核上提供低功耗和高性能。
目前市場上具有代表性的射頻收發(fā)芯片主要有Nordic公司的nRF系列、TI公司的CC系列與RFM公司的TR系列等,這些芯片在不同的傳感器網(wǎng)絡(luò)節(jié)點(diǎn)中都得到了應(yīng)用。其中由挪威 Nordic 公司推出的一款2.4GHz低成本的無線收發(fā)芯片nRF24L01 近年來得到了廣泛應(yīng)用,其最大空中數(shù)據(jù)傳輸速率達(dá)到 2Mbps,有 125個(gè)頻道,滿足本設(shè)計(jì)的要求,因此本文選擇它來設(shè)計(jì)通信模塊的無線收發(fā)電路,nRF24L01 主要是通過設(shè)置寄存器和對寄存器讀寫來控制其工作的。
本設(shè)計(jì)用的是電阻式觸摸屏,電阻式觸摸屏利用壓力感應(yīng)進(jìn)行控制。電阻觸摸屏的主要部分是一塊與顯示器表面非常配合的電阻薄膜屏,這是一種多層的復(fù)合薄膜。當(dāng)手指觸摸屏幕時(shí),兩層導(dǎo)電層在觸摸點(diǎn)位置就有了接觸,電阻發(fā)生變化,在X和Y兩個(gè)方向上產(chǎn)生信號(hào),然后送觸摸屏控制器??刂破鱾蓽y到這一接觸并計(jì)算出(X,Y)的位置,再根據(jù)獲得的位置模擬鼠標(biāo)的方式運(yùn)作。這就是電阻技術(shù)觸摸屏的最基本的原理。
TFTLCD模塊自帶的觸摸屏控制芯片為XPT2046。XPT2046是一款4導(dǎo)線制觸摸屏控制器,內(nèi)含12位分辨率125KHz轉(zhuǎn)換速率逐步逼近型A/D轉(zhuǎn)換器。XPT2046支持從1.5V到5.25V的低電壓I/O接口。XPT2046片內(nèi)集成有一個(gè)溫度傳感器。在2.7V的典型工作狀態(tài)下,關(guān)閉參考電壓,功耗可小于0.75mW。
2 系統(tǒng)軟件設(shè)計(jì)
隨著嵌入式系統(tǒng)應(yīng)用領(lǐng)域范圍日益廣泛,硬件系統(tǒng)性能的大幅度提高,使得操作系統(tǒng)的應(yīng)用成為可能。μCOS-II 是一種源碼公開、結(jié)構(gòu)緊湊、內(nèi)核可剝奪的實(shí)時(shí)嵌入式操作系統(tǒng)。通訊和系統(tǒng)的任務(wù)調(diào)度。μCOS-II V2.86 版本嵌入式操作系統(tǒng)的體系結(jié)構(gòu)中,內(nèi)核源代碼分為 3 個(gè)部分,硬件無關(guān)的內(nèi)核代碼、處理器相關(guān)的移植代碼、用戶配置文件。
“無線傳書”任務(wù)的軟件部分主要包括STM32控制程序和TFT觸摸顯示程序。STM32控制程序包括主機(jī)、從機(jī)的初始化程序,nRF24L01 無線發(fā)射、接收模塊的配置程序以及數(shù)據(jù)的發(fā)送、接收程序。nRF24L01 無線收發(fā)模塊的配置包括接收和發(fā)送數(shù)據(jù)地址、有效數(shù)據(jù)長度、數(shù)據(jù)傳輸速率、發(fā)射功率、工作通道頻率、接收數(shù)據(jù)通道等,注意相關(guān)參數(shù)接收模塊和發(fā)送模塊必須具有相同的配置。收發(fā)程序主要是對 SPI 的操作。
系統(tǒng)上電后控制器按照模式控制真值表將 nRF24L01 設(shè)置為配置模式。在上電初始化之后,配置模塊之前需要延遲一定的時(shí)間等待 nRF24L01 穩(wěn)定,然后進(jìn)行配置,使 nRF24L01 進(jìn)入待機(jī)模式。在配置寄存器時(shí),控制器首先需要將控制CSN的引腳拉低,其次寫入配置命令和對應(yīng)的配置字,最后將CSN 置高,這樣就完成了一次配置。
整個(gè)發(fā)送過程包括上電初始化程序、配置子程序以及數(shù)據(jù)采集發(fā)送子程序。本節(jié)主要介紹數(shù)據(jù)采集發(fā)送子程序部分。采集部分由STM32控制器對TFT觸摸屏上的觸摸點(diǎn)進(jìn)行定位而來。在程序開始時(shí)定義了一個(gè)容量為 32K bytes 的數(shù)組,采集完成的數(shù)據(jù)首先存放在數(shù)組中,然后將數(shù)據(jù)通過 SPI 口寫入 TX_FIFO。在程序中設(shè)置了一個(gè)循環(huán)標(biāo)志 i,當(dāng)循環(huán)次數(shù)為 16 時(shí)說明 32 字節(jié)數(shù)組存滿,這時(shí) nRF24L01的 TX_FIFO 寫滿。最后啟動(dòng)發(fā)射,將 CE 置高,并且時(shí)間要保持在 10μs 以上,無線模塊自動(dòng)發(fā)射數(shù)據(jù)。注意往 nRF24L01 寫數(shù)據(jù)時(shí),必須首先把 CSN 置低寫數(shù),并且在寫滿寄存器之前要一直拉低,否則在發(fā)送時(shí)要出錯(cuò)。發(fā)送完成后要清楚標(biāo)志位才能啟動(dòng)下一次發(fā)射。
當(dāng)接收部分上電以后同樣首先進(jìn)行初始化,然后對 nRF24L01初始化配置成接收模式,此時(shí) CE 置高等待接收。延遲 130μs 后nRF24L01 開始檢測接收數(shù)據(jù)。為了方便檢測把接收部分配置成產(chǎn)生 RX_DR 中斷,所以當(dāng)用示波器觀察時(shí)可以看到當(dāng)接收到一包數(shù)據(jù)后 IRQ 引腳會(huì)產(chǎn)生一個(gè)下降沿,此時(shí) RX_FIFO 把接收到的數(shù)據(jù)讀回單片機(jī),IRQ 信號(hào)作為接收部分的讀數(shù)中斷信號(hào)。同樣需要注意的是在讀取數(shù)據(jù)之前需將 CE 置低,模塊退出接收模式后才能讀取數(shù)據(jù);如果數(shù)據(jù)還未接收完畢,在讀數(shù)后要注意清除標(biāo)志位以便接收下一包數(shù)據(jù)。