物聯(lián)傳媒 旗下網(wǎng)站
登錄 注冊

基于SPI總線的無線數(shù)據(jù)傳輸系統(tǒng)設(shè)計(jì)

作者:RFID世界網(wǎng) 收編
來源:電子網(wǎng)
日期:2010-03-31 11:39:12
摘要:對如何通過SPI實(shí)現(xiàn)對nRF905的配置,并利用C語言實(shí)現(xiàn)該功能做了探討。最后對待發(fā)送數(shù)據(jù)進(jìn)行發(fā)送,接收端對數(shù)據(jù)進(jìn)行接收顯示,從而實(shí)現(xiàn)了該無線數(shù)據(jù)傳輸系統(tǒng),實(shí)驗(yàn)表明該設(shè)備具有準(zhǔn)確有效的數(shù)據(jù)傳輸功能。
  短程、便捷、廉價(jià)的無線通信技術(shù)正成為關(guān)注的焦點(diǎn),使人們對它的需求越來越高。例如無線數(shù)據(jù)采集、無線設(shè)備管理和監(jiān)控、無線抄表以及礦井下的無線通信等都是其典型應(yīng)用。 

  1 系統(tǒng)總體結(jié)構(gòu) 

  文中利用51單片機(jī)和無線數(shù)據(jù)收發(fā)芯片nRF905構(gòu)成無線數(shù)據(jù)傳輸系統(tǒng),給出了硬件和軟件設(shè)計(jì)方案。其數(shù)據(jù)傳輸過程是:從傳感器輸入的模擬信號(hào)經(jīng)AD采集后,將數(shù)據(jù)輸入單片機(jī),然后單片機(jī)將該發(fā)送數(shù)據(jù),通過SPI接口發(fā)送給nRF905,nRF905將數(shù)據(jù)自動(dòng)加上前導(dǎo)碼和CRC碼后將數(shù)據(jù)包發(fā)送。當(dāng)接收端的nRF905接收到有效數(shù)據(jù)后,DR置高;單片機(jī)檢測到DR為高電平后,復(fù)位TRX_CE引腳,使nRF905進(jìn)入空閑模式,通過SPI接口從nRF905中讀出接收數(shù)據(jù),然后通過串口在上位機(jī)顯示。文中主要介紹的是51單片機(jī)軟件模擬SPI和無線數(shù)據(jù)收發(fā)這兩個(gè)部分。圖1是該系統(tǒng)的總體結(jié)構(gòu)框圖。 

  2 SPI總線 

  SPI(SerialPeripheralInterface串行外設(shè)接口)總線系統(tǒng)是一種同步串行外設(shè)接口,它可以使MCU與各種外圍設(shè)備以串行方式進(jìn)行通信以交換信息。該接口一般使用4條線:串行時(shí)鐘線(SCK)、主機(jī)輸入從機(jī)輸出數(shù)據(jù)線MISO、主機(jī)輸出/從機(jī)輸入數(shù)據(jù)線MOSI和低電平有效的從機(jī)選擇線SS??梢奡PI總線只需要少數(shù)的幾根線,就可以實(shí)現(xiàn)與具有SPI總線硬件接口功能的各種器件進(jìn)行通信,并且用SPI總線接口簡化電路設(shè)計(jì),節(jié)省許多I/O口線供其它功能使用,提高了設(shè)計(jì)的可靠性。而對于一些不具有SPI硬件接口的器件,可以用I/O口線來模擬SPI。由于nRF905射頻收發(fā)模塊是通過SPI接口由MCU控制的,而采用不具有SPI接口的單片機(jī),只能通過單片機(jī)的I/O口來模擬SPI總線接口,實(shí)現(xiàn)無線通信系統(tǒng)的設(shè)計(jì)。這樣當(dāng)傳輸速度要求不是太高時(shí),使用I/O口模擬SPI總線,既可以增加應(yīng)用系統(tǒng)接口器件的種類,同時(shí)還提高系統(tǒng)的性能,節(jié)約成本。 

  3 nRF905無線收發(fā)芯片 

  nRF905是挪威NordicVLSI公司推出的單片射頻收發(fā)器,工作電壓1.9~3.6V,工作于433/868/915MHz這3個(gè)ISM頻段,頻道轉(zhuǎn)換時(shí)間<650μs,最大數(shù)據(jù)速率為100kbit/s。nRF905由頻率合成器、接收解調(diào)器、功率放大器、晶體振蕩器和GFSK調(diào)制器組成。自動(dòng)產(chǎn)生前導(dǎo)碼和CR校驗(yàn)碼,可以很容易通過SPI接口進(jìn)行編程配置。外圍器件連接簡單,無需外部SAw濾波器。nRF905有兩種工作模式和兩種節(jié)能模式。兩種工作模式分別是ShockBurstTM發(fā)送模式和ShockBurst RM接收模式,兩種節(jié)能模式分別是掉電和SPI編程模式,Standby和SPI編程模式。nRF905的工作模式由TRX_CE,TX_EN,PWR_UP這3個(gè)引腳的設(shè)置來決定。 

  4 nRF905和STC89C52RC的硬件連接電路 

  nRF905具有標(biāo)準(zhǔn)的SPI硬件接口,對于不帶SPI串行總線接口的STC89C52RC單片機(jī)來說,可以使用軟件來模擬SPI的操作。單片機(jī)和NRF905的對應(yīng)接法是:P1.6接MISO,P1.5口接MOSI,Pl.7口接SCIOCK,P1.3接CSN。選用單片機(jī)的P1.5模擬數(shù)據(jù)輸出端MOSI;Pl.6模擬數(shù)據(jù)輸入端MISOP1.7模擬SCK的輸出端;P1.3模擬從機(jī)選擇端CSN,由程序清零此I/O口,使得與它通信的NRF905做從機(jī)。采用SPI的進(jìn)行數(shù)據(jù)傳送時(shí),在SCK的每個(gè)下降沿將89C52配置NRF905的命令和數(shù)據(jù)通過MOSI引腳移入,在SCK的每個(gè)上升沿將欲傳給89C52的數(shù)據(jù)從MISO引腳移出。所以,這里將串行時(shí)鐘輸出口P1.7的初始狀態(tài)設(shè)置為低電平,選通從機(jī),即P1.3=0低電平后,再置P1.1為高電平。這樣,89C52在輸出1位SCK時(shí)鐘的同時(shí),將使NRF905中數(shù)據(jù)串行左移,從而輸出1位數(shù)據(jù)至89C52的P1.6口,此后再置P1.7為0,使89C52從P1.5輸出1位數(shù)據(jù)至NRF905,至此結(jié)束了模擬1位數(shù)據(jù)的傳輸。按上述步驟循環(huán)8次,即完成通過SPI總線傳輸1bit的操作。nRF905有5個(gè)內(nèi)部寄存器,分別是狀態(tài)寄存器、RF配置寄存器、發(fā)送地址寄存器、發(fā)送數(shù)據(jù)寄存器和接收數(shù)據(jù)寄存器,這5個(gè)寄存器都是通過89C52軟件模擬的SPI接口來配置的。除了對寄存器進(jìn)行配置外,89C52還要對nRF905的工作模式進(jìn)行切換控制。 

  5 電源電路設(shè)計(jì) 

  本系統(tǒng)使用兩個(gè)電源,單片機(jī)STC89C52RC使用5V電源,NRF905采用3.3V電源進(jìn)行供電,然后把STC89C52RC和NRF905共地,否則會(huì)出現(xiàn)無法傳輸數(shù)據(jù)。其中轉(zhuǎn)換芯片分別使用AMSlll7-5.0轉(zhuǎn)5V芯片和AMSl117-3.3轉(zhuǎn)3.3 V芯片電路圖,如圖3所示。電源電路使用220 V的交流電適配器輸出的9 V直流,經(jīng)C1濾波進(jìn)入AMSlll7-5.0,然后在輸出端接一個(gè)100μF的電容進(jìn)行濾波去耦,從而得到5 V直流電壓供單片機(jī)使用;然后5 V電壓接入下一級(jí)AMSlll7-3.3電源轉(zhuǎn)換芯片,輸出3.3 V供NRF905使用。 

  6 軟件設(shè)計(jì)的C語言實(shí)現(xiàn) 

  對于發(fā)送端,首先進(jìn)行I/O口和SPI接口初始化,然后對nRF905的寄存器進(jìn)行配置并且初始化各個(gè)接口,經(jīng)過初始化,處理完采集好的數(shù)據(jù),設(shè)置nRF905為發(fā)送模式,調(diào)用發(fā)送代碼,延時(shí)一段時(shí)間,等待數(shù)據(jù)發(fā)送完畢;同理在接收端也執(zhí)行相同的初始化,不同的只是初始化完畢后,把nRF905模塊設(shè)置成接收模式,然后調(diào)用接收程序。最后通過串口在上位機(jī)進(jìn)行顯示。 

  7 實(shí)驗(yàn)分析 

  文中對其軟硬件進(jìn)行了設(shè)計(jì)和調(diào)試,構(gòu)建了基于SPI無線通信系統(tǒng)平臺(tái)。實(shí)驗(yàn)證明,通過該系統(tǒng)無線測試板殼應(yīng)力,在nRF905發(fā)射模塊端,敲打板殼使之發(fā)生形變,再用應(yīng)變儀傳感器測得其形變的電壓值,在數(shù)據(jù)發(fā)射之前對此模擬信號(hào)進(jìn)行AD采集,并通過無線發(fā)射模塊把采集到的數(shù)據(jù)發(fā)射出去;同時(shí)先在離發(fā)射模塊相距50m的位置放置一個(gè)接收模塊,接收發(fā)射數(shù)據(jù)并顯示。然后間距每進(jìn)行一次實(shí)驗(yàn)后增加50m。以此判斷它們在保證信號(hào)傳輸穩(wěn)定情況下的最遠(yuǎn)傳輸距離。測得最佳結(jié)果在相距350m以內(nèi)的樓宇之間,數(shù)據(jù)傳輸穩(wěn)定。超過350 m時(shí),數(shù)據(jù)顯示出現(xiàn)時(shí)顯時(shí)無的現(xiàn)象。表1是在300 m左右實(shí)際測得的幾組應(yīng)變值。 

8 結(jié)束語 

  文中介紹了用SPI總線接口進(jìn)行數(shù)據(jù)傳輸?shù)膶?shí)現(xiàn)方法,采用nRF905射頻收發(fā)芯片和STC89C52RC單片機(jī)設(shè)計(jì)了無線數(shù)據(jù)傳輸系統(tǒng),完成硬件電路和系統(tǒng)軟件調(diào)試后,進(jìn)行了無線數(shù)據(jù)收發(fā)實(shí)驗(yàn)。實(shí)驗(yàn)過程是通過應(yīng)變儀傳感器測板殼形變得到的模擬信號(hào),經(jīng)AD采集后產(chǎn)生要發(fā)送的數(shù)據(jù),然后對其進(jìn)行發(fā)射、接收和顯示。實(shí)驗(yàn)結(jié)果表明,在相距350m的樓宇之間通信,該無線傳輸系統(tǒng)工作穩(wěn)定,接收和發(fā)射的數(shù)據(jù)完全相同,這表明該系統(tǒng)能實(shí)現(xiàn)數(shù)據(jù)的有效傳輸,具有高速、抗干擾能力強(qiáng)等優(yōu)點(diǎn)。