色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > Si4432無線芯片調試經驗分享

          Si4432無線芯片調試經驗分享

          作者: 時間:2012-08-16 來源:網絡 收藏

          前段時間主要是搜集了一些si4432的資料,包括芯片手冊,原理圖,官方代碼等。調試買到的模塊,看能否接收到數(shù)據(jù)。對具體的配置以及工作模式的了解還不是很清楚。現(xiàn)總結如下:

          Silicon Labs EZRadioPRO系列ISM頻段SI4432, 可工作在240-960MHZ頻段范圍內。最大輸出功率可以達到+20DBm。外圍可加入功率放大電路,以提高發(fā)送功率。

          主要有關閉模式,掛機模式,發(fā)射模式和接收模式組成。關閉狀態(tài)下可以降低功耗,各模式切換必須先進入掛起狀態(tài)再切換。其中的掛機模式,給SPI寄存器地址07h賦予不同的值,又分為五種不同的子模式。待機模式,睡眠模式,傳感器模式,預備模式,調諧模式。上電復位后,或者芯片由掉電狀態(tài)退出后將默認進入預備模式。

          數(shù)據(jù)傳輸方式主要有三種,F(xiàn)IFO模式,直接模式,和PN9模式。在 FIFO Mode 下,使用片內的先入先出堆棧區(qū)來發(fā)送和接收數(shù)據(jù)。對 FIFO 的操作是通過SPI 對 07H 寄存器的連續(xù)讀或者寫進行的。在FIFO Mode下,自動退出發(fā)送或者接收狀態(tài),當相關的中斷信號產生,并且自動處理字頭和CRC校驗碼。在接收數(shù)據(jù)時, 自動把字頭和CRC校驗碼移去。在發(fā)送數(shù)據(jù)時,自動加上字頭和CRC校驗碼。在直接收發(fā)模式下,Si4432如傳統(tǒng)的射頻收發(fā)器一樣工作。PN9模式,在這種模式下的Tx數(shù)據(jù)是內部產生使用偽隨機( PN9序列)位發(fā)生器。這種模式的目的是用作測試模式不斷觀察調制頻譜,而不必負載/提供數(shù)據(jù)。

          配置Si4432 模塊是通過SPI 方式進行的,可配置為FIFO 方式和直接方式, 推薦Si4432 工作于 FIFO 收發(fā)模式,這種工作模式下,系統(tǒng)的程序編制會更加簡單,并且穩(wěn)定性也會更高.不過網上評論說,這種模式沒有直接模式傳輸?shù)木嚯x遠。其中配置Si4432 主要包括載波頻率、調制方式、數(shù)據(jù)發(fā)送速率、CRC 校驗、前導碼、 同步字、數(shù)據(jù)頭、地址等,具體可參考 Si4432(IA4432) RegisterSettings_RevV-v16 寄存器配置工具進行。

          至于si4432是否帶遠程無線喚醒,看了半天手冊也沒找到。不過,網上的一位網友說:“以前產品用的是CC1100,確實出現(xiàn)近距離通信不正常的問題,空曠地帶150M(FSK,9.6k/s,433M,WOR休眠偵聽通信方式),距離不夠;然后改用CC1101+PA,但是瞬間發(fā)射電流>300mA,由于我們是電池供電,功耗太大了。 后來通過商家介紹用SI4432,前幾天簡單測試了下通信距離>330M(433M,40K/S,GFSK),可能更遠的距離還行,就沒測試了,下個星期再做詳細測試。 對于現(xiàn)在的使用情況,個人覺得他們各有優(yōu)點。CC1101的特點具有自動無線偵聽,可以實現(xiàn)電磁波喚醒功能,但是通信距離不夠;而SI4432通信距離不錯,且內部自帶PA,可以達到+18dB,發(fā)射電流在60mA左右。但不具備無線喚醒這樣的功能,只能依*自身的定時器,配合單片機來實現(xiàn)電磁波喚醒功能,這樣一來對MCU的穩(wěn)定性要求就相當高。”

          Si4432的寄存器操作:

          Si4432共有128個寄存器(O一127),它們控制芯片的工作和記錄芯片的狀態(tài)??赏ㄟ^SPI對它們進行訪問。SPI的it順序是可配置的,其缺省配置(MSB在前)與MCU的順序相同。命令格式為2字節(jié)結構:讀/寫標志(1 bit,0—讀,l一寫),寄存器地址(7 bit)+待寫數(shù)據(jù)(對于讀操作,該值也必須有,只是可為任意值)。每次可以讀寫1/多(burst)個字節(jié),它們是由時鐘信號決定的,在讀寫一個字節(jié)后,如果時鐘繼續(xù)有效,那么,地址將會自動加1,接下來的操作將是對下一個寄存器的讀寫。通過Silicon Labs提供的WDS(Wirelessevelopment Suit)可訪問這些寄存器并可生成相應的初始化代碼。只能在空閑狀態(tài)下對寄存器進行初始化,否則,可能會出現(xiàn)意外的結果。為了提高傳輸信號的質量,增大發(fā)射距離,保證數(shù)據(jù)的可*傳輸,系統(tǒng)使能數(shù)據(jù)白化、曼徹斯特Manchester)編碼、CRC校驗和采用GFSK調制。

          狀態(tài)機:

          關閉(shutdown)和空閑(idle)狀態(tài)稱為低功耗狀態(tài),而idle又可細分為5個不同的子狀態(tài),它們在低功耗下完成各種與無線數(shù)據(jù)收發(fā)無關的操作。發(fā)送(Tx)和接收(RX)狀態(tài)稱為激活狀態(tài),它們完成無線數(shù)據(jù)的收發(fā)。除了關閉狀態(tài)外(只能通過MCU的I/O腳來設置),其余狀態(tài)都可以通過SPI接El進行設置和讀取??赏ㄟ^寄存器07h實現(xiàn)狀態(tài)的切換,這種切換表現(xiàn)在兩個方面:1)當設置其中的某一位時,狀態(tài)立即發(fā)生切換;2)在完成收發(fā)任務后,決定返回到idle狀態(tài)的哪一個子狀態(tài)(在本系統(tǒng)中為休眠狀態(tài),即設置enwt=1)??赏ㄟ^02h寄存器獲取當前的狀態(tài)。芯片的常態(tài)為idle,為了保證不漏收數(shù)據(jù),可利用喚醒定時器來定時喚醒芯片進入融狀態(tài)(此時要設置08h寄存器中的enldm位為l,并設置定時常數(shù)寄存器14h和19h中的值),在確認沒有數(shù)據(jù)/收完數(shù)據(jù)后再返回到原來的idle子狀態(tài)。

          用普通51單片機 IO 口模擬SPI:

          SPI讀操作函數(shù):

          unsigned char SPI_Read(void){unsigned char i,rxdata;rxdata = 0x00;for (i = 0;i  8;i++){rxdata = rxdata1;RF4432_SCLK=0;if (RF4432_SDO==1)  //讀取最高位,保存至最末尾,通過左移位完成整個字節(jié){rxdata |= 0x01;}delay_10us(2);  RF4432_SCLK=1;delay_10us(2);  }return rxdata;}SPI寫操作函數(shù):void SPI_Write(unsigned char txdata){unsigned char i;for (i = 0;i  8;i++){RF4432_SCLK=0;if ((txdata0x80)==0x80)    //總是發(fā)送最高位{RF4432_SDI=1;}else{RF4432_SDI=0;}txdata = txdata1;delay_10us(2);  RF4432_SCLK=1;delay_10us(2);  }}RF4432 寄存器讀操作函數(shù):unsigned char  RF4432_ReadReg(unsigned char  addr){unsigned char value;RF4432_SEL=0;                 SPI_Write(addr|RR);     value = SPI_Read();         RF4432_SEL=1;        return value;}RF4432 寄存器寫操作函數(shù):void  RF4432_WriteReg(unsigned char  addr, unsigned char value){RF4432_SEL=0;                 SPI_Write(addr|WR);     SPI_Write(value);         RF4432_SEL=1;                }SI4432寄存器定義:#define DEVICE_TYPE                                     0x00#define DEVICE_VERSION                             0x01   //版本號……參考附件。


          RF4432
          射頻芯片初始化函數(shù),RF4432 設置接收模式函數(shù), RF4432 數(shù)據(jù)包接收函數(shù), RF4432 數(shù)據(jù)包發(fā)送函數(shù)等。參考文檔:si4432模塊使用手冊.pdf。這些附件我整理了一個壓縮包http://www.51hei.com/f/452de.rar大家可以去下載.

          網上搜到的程序代碼以及官方提供的代碼大都是基于Silicon Labs的c8051f單片機的,雖然都是51核的,但編程環(huán)境以及運行速度都是不一樣的,不能直接拿來在普通51上運行,得稍作修改。目前完成了基于普通51單片機的三份代碼修改。一份是官方的,一份是買模塊時送的,一份是網上找來的。網上還有一份基于pic單片機的源碼,但看了后感覺跟官方的差不多,沒去修改。修改后在51開發(fā)板上可以運行了。但是其中一個模塊不能工作,沒法看到效果。具體能否接收還不確定。因此,也就停留在了這個地方??梢酝ㄟ^串口觀察到一些信息,比如初始化完成后產生低電平的NIRQ中斷,以及發(fā)送完成后也產生低電平的NIRQ中斷,程序片段

          RF4432_Init()

          {

          ……

          while ( RF4432_IRQ== 1); //等待軟復位完成,當軟復位完成后有中斷發(fā)生

          …….

          }

          UART_Send_Str("RF芯片si4432初始化完畢....n");//串口發(fā)送調試信息

          正常初始化完畢后通過串口會看到語句“RF芯片si4432初始化完畢....”,否則停留在while ( RF4432_IRQ== 1); 看不到串口輸出的信息。但只有一個模塊發(fā)送,一個模塊接收,觀察到接收模塊收到了數(shù)據(jù)才能證明調試是沒問題的。



          評論


          相關推薦

          技術專區(qū)

          關閉