久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3874|回復: 0
打印 上一主題 下一主題
收起左側

CC2420無線模塊特點

[復制鏈接]
跳轉到指定樓層
樓主
ID:104287 發表于 2016-1-30 02:17 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
CC2420是Chipcon(已被TI收購)公司推出的首款符合2.4GHz IEEE802.15.4標準的射頻收發器。該器件包括眾多功能,是第一款適用于ZigBee產品的RF器件。它基于SmartRF 03技術,以0.18um CMOS工藝制成,只需極少外部元器件,工作在2400-2483.5MHZ 的ISM 頻段由一個完全集成的頻率調制器一個帶解調器的接收器一個功率放大器一個晶體震蕩器和一個調節器組成。可自動產生前導碼,CRC 可以很容易通過SPI 接口進行編程配置,電流消耗低。性能穩定且功耗極低。CC2420的選擇性和敏感性指數可確保短距離通信的有效性和可靠性。利用此芯片開發的無線通信設備支持數據傳輸率高達250kbps可以實現多點對多點的快速組網。
基本特點:
(1) 工作在2400-2483.5 MHz的ISM和SRD頻段.
-采用直接序列擴頻方式.
-工作速率250kbps,碼片速率2 MChip/s.
-使用 O-QPSK調制方式.
-高靈敏度(-95dBm).
-較低的電流消耗(RX :13.3 mA TX:17.4 mA).
-抗鄰頻道干擾能力強(39dB)
-內部集成有VCO、LNA、PA以及電源整流器.
-采用低電壓供電(2.1~3.6V).
-輸出功率編程可控.
(2) IEEE802.15.4-2003標準MAC層硬件支持.
-前導碼與同步字段自動生成與檢測.
-CRC-16自動生成與檢測.
-空閑信道檢測.
-能量檢測、接收信號強度與鏈路質量指示.
-MAC層安全保護(CTR,CBC-MAC,CCM)支持.
(3) 采用4線SPI標準接口,便于MCU配置.
(4) 獨立的128字節RX和128字節TX數據FIFO.
典型應用場合:
無線傳感器網絡
住宅、建筑物(智能家居)控制
工業儀器儀表無線數據采集和控制
無線鼠標、無線鍵盤、無線類玩具等消費電子
無線門禁、物流跟蹤、倉庫巡檢等RFID有源電子標簽

程序參考設計
用CC2420模塊無需掌握任何專業無線或高頻方面的理論,讀者只需要具備一定的C語言程序基礎即可。可參考CC2420官方手冊或向我們尋求技術支持。
同時,為便于用戶開發,我們提供系列配套評估套件,為產品開發保駕護航,使無線應用開發大大加速,并避免不必要的誤區。以下為范例程序中的部分相關代碼段。
CC2420寄存器讀寫配置
CC2420通過SPI接口與單片機通訊,因此必須首先了解SPI接口。標配SPI外圍串行接口由四條線構成:
      MOSI主機輸出從機輸入     (主機寫操作)
      MISO主機輸入從機輸出     (主機讀操作)
      SCK 串行時鐘信號,由主機控制
      CSN 片選信號,低電平有效
SPI讀操作代碼
uint8 SPI_Read(void)
{
    uint8 i,rxdata;
    rxdata = 0x00;
    for (i = 0;i < 8;i++)
    {
       rxdata = rxdata<<1;
       SCLK_ON();
       if (MISO_IN)
      {   
           rxdata |= 0x01;
       }
       else
       {
           rxdata &= ~0x01;
       }
       SCLK_OFF();   
     }
     return rxdata;
}
SPI寫操作代碼
void SPI_Write(uint8 txdata)
{
    uint8 i;
    for (i = 0;i < 8;i++)
    {
       if (txdata&0x80)  
       {
           MOSI_ON();
       }
       else
       {
           MOSI_OFF();
       }
       SCLK_ON();
       txdata = txdata<<1;
       SCLK_OFF();   
    }
}
CC2420配置寄存器讀操作
uint16 CC2420_ReadReg(uint8  addr)
{
    uint16 value;
    CSN_OFF();                  
    SPI_Write(addr|REG_READ);      
    value = SPI_Word_Read();         
    CSN_ON();         
    return value;
}
CC2420配置寄存器寫操作
void  CC2420_WriteReg(uint8  addr, uint16 value)
{
    CSN_OFF();                                 
    SPI_Write(addr|REG_WRITE);      
    SPI_Word_Write(value);         
    CSN_ON();                 
}
CC2420 RAM 讀操作
uint8 CC2420_RAM_Read(uint8 addr,uint8 block)
{
    uint8 value;
    CSN_OFF();        
    SPI_Write(addr|RAM);
    SPI_Write((block<<6)|RAM_READ);
    value = SPI_Read();
    CSN_ON();  
    return value;
}
CC2420 RAM寫操作
void CC2420_RAM_Write(uint8  addr,uint8 block, uint8 value)
{
    CSN_OFF();        
    SPI_Write(addr|RAM);
    SPI_Write((block<<6)|RAM_WRITE);
    SPI_Write(value);
    CSN_ON();  
}
CC2420初始化
void CC2420_Init(void)
{  
    RESET_OFF();
    delay_ms(10);
    RESET_ON();
    delay_ms(10);
    CC2420_Command(CMD_SXOSCON);
    delay_ms(10);
    CC2420_PSDU[ 1 ] =
(PAN_ID_COMPRESSION<<6)|(ACKNOWLEDGMENT_REQUEST<<5)|
(FRAME_PENDING<<4)|(SECURITY_ENABLE<<3)|(FRAME_TYPE_DATA<<0);
    CC2420_PSDU[ 2 ] =
(SOURCE_ADDRESSING_MODE<<6)|(FRAME_VERSION<<4)|
(DEST_ADDRESSING_MODE<<2);
    CC2420_PSDU[ 3 ] = SEQUENCE_NUMBER;
    CC2420_PSDU[ 4 ] =  CC2420_Destination_PANID[0];
    CC2420_PSDU[ 5 ] =  CC2420_Destination_PANID[1];
    CC2420_PSDU[ 6 ] =  CC2420_Destination_IEEEAddr[0];
    CC2420_PSDU[ 7 ] =  CC2420_Destination_IEEEAddr[1];
    CC2420_PSDU[ 8 ] =  CC2420_Destination_IEEEAddr[2];  
    CC2420_PSDU[ 9 ] =  CC2420_Destination_IEEEAddr[3];
    CC2420_PSDU[10] =  CC2420_Destination_IEEEAddr[4];
    CC2420_PSDU[11] =  CC2420_Destination_IEEEAddr[5];
    CC2420_PSDU[12] =  CC2420_Destination_IEEEAddr[6];
    CC2420_PSDU[13] =  CC2420_Destination_IEEEAddr[7];
    CC2420_PSDU[14] =  CC2420_Source_PANID[0];
    CC2420_PSDU[15] =  CC2420_Source_PANID[1];
    CC2420_RAM_Write(RAM_PANID, 2,  CC2420_Source_PANID[0]);
    CC2420_RAM_Write(RAM_PANID+1, 2, CC2420_Source_PANID[1]);
    CC2420_PSDU[16] =  CC2420_Source_IEEEAddr[0];
    CC2420_PSDU[17] =  CC2420_Source_IEEEAddr[1];
    CC2420_PSDU[18] =  CC2420_Source_IEEEAddr[2];
    CC2420_PSDU[19] =  CC2420_Source_IEEEAddr[3];
    CC2420_PSDU[20 ] = CC2420_Source_IEEEAddr[4];
    CC2420_PSDU[21] =  CC2420_Source_IEEEAddr[5];
    CC2420_PSDU[22] =  CC2420_Source_IEEEAddr[6];
    CC2420_PSDU[23] =  CC2420_Source_IEEEAddr[7];
    CC2420_RAM_Write(RAM_IEEEADR, 2, CC2420_Source_IEEEAddr[0]);
    CC2420_RAM_Write(RAM_IEEEADR+1, 2, CC2420_Source_IEEEAddr[1]);
    CC2420_RAM_Write(RAM_IEEEADR+2, 2, CC2420_Source_IEEEAddr[2]);
    CC2420_RAM_Write(RAM_IEEEADR+3, 2, CC2420_Source_IEEEAddr[3]);
    CC2420_RAM_Write(RAM_IEEEADR+4, 2, CC2420_Source_IEEEAddr[4]);
    CC2420_RAM_Write(RAM_IEEEADR+5, 2, CC2420_Source_IEEEAddr[5]);
    CC2420_RAM_Write(RAM_IEEEADR+6, 2, CC2420_Source_IEEEAddr[6]);
    CC2420_RAM_Write(RAM_IEEEADR+7, 2, CC2420_Source_IEEEAddr[7]);
CC2420_WriteReg(REG_MDMCTRL0, CCA_HYST|CCA_MODE|PREAMBLE_LENGTH|AUTOCRC|ADR_DECODE);
    CC2420_WriteReg(REG_SYNCWORD,SYNCWORD);
    CC2420_WriteReg(REG_SECCTRL0,0);
    CSN_OFF();                  
    SPI_Write(REG_RXFIFO|REG_READ);   
    SPI_Read();
    CSN_ON();     
    CC2420_Command(CMD_SFLUSHRX);
    CC2420_Command(CMD_SFLUSHTX);
    delay_ms(10);
}
CC2420 FIFO發送流程FIFO寫數據操作
void  CC2420_WriteTXFIFO(void)
{
    uint8 i;
    CC2420_Command(CMD_SFLUSHTX);
    CSN_OFF();                                 
    SPI_Write(REG_TXFIFO|REG_WRITE);      
    SPI_Write(CC2420_PSDU[0]);
    for(i=0;i<CC2420_PSDU[0];i++)
    {
       SPI_Write(CC2420_PSDU[1+i]);
    }      
    CSN_ON();   
}
FIFO數據發送操作
void CC2420_TxPacket(void)
{
    CC2420_Command(CMD_SRFOFF);
    CC2420_Command(CMD_STXON);
    while(!SFD_IN);
    while(SFD_IN);
}
CC2420 FIFO接收流程接收模式設置
void CC2420_SetRxMode(void)
{
    CC2420_Command(CMD_SRFOFF);
    CC2420_Command(CMD_SRXON);
}   
FIFO接收數據
uint8 CC2420_RxPacket(void)
{
     if((!SFD_IN)&&(FIFO_IN))
    {
       return TRUE;
    }
      return FALSE;
}
收到數據后讀取FIFO數據
void CC2420_ReadRXFIFO(void)
{
    uint8 i;
    CSN_OFF();                  
    SPI_Write(REG_RXFIFO|REG_READ);      
    CC2420_PSDU[0] = SPI_Read();  
    for(i=0;i<CC2420_PSDU[0];i++)
    {
       CC2420_PSDU[1+i] = SPI_Read();
    }
    CSN_ON();         
    CC2420_Command(CMD_SFLUSHRX); }
無線應用注意事項
(1) 無線模塊的VCC電壓范圍為 1.8V-3.6V之間,不能在這個區間之外,超過3.6V將會燒毀模塊。推薦電壓3.3V左右。
(2) 除電源VCC和接地端,其余腳都可以直接和普通的51單片機IO口直接相連,無需電平轉換。當然對3V左右的單片機更加適用了。
(3) 硬件上面沒有SPI的單片機也可以控制本模塊,用普通單片機IO口模擬SPI不需要單片機真正的串口介入,只需要普通的單片機IO口就可以了,當然用串口也可以了。模塊按照接口提示和母板的邏輯地連接起來
(4) 標準DIP插針,如需要其他封裝接口,或其他形式的接口,可聯系我們定做。
(5) 任何單片機都可實現對無線模塊的數據收發控制,并可根據我們提供的程序,然后結合自己擅長的單片機型號進行移植;
(6) 頻道的間隔的說明:實際要想2個模塊同時發射不相互干擾,兩者頻道間隔應該至少相差1MHZ,這在組網時必須注意,否則同頻比干擾。
(7) 實際用戶可能會應用其他自己熟悉的單片機做為主控芯片,所以,建議大家在移植時注意以下4點:
A:確保IO是輸入輸出方式,且必須設置成數字IO;
B:注意與使用的IO相關的寄存器設置,尤其是帶外部中斷、帶AD功能的IO,相關寄存器一定要設置好;
C:調試時先寫配置字,然后控制數據收發
D:注意工作模式切換時間

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 欧美综合久久久 | 免费色网址 | 亚洲一区二区在线 | 成人免费视频网 | 国产视频1区 | 日本一区二区在线视频 | 羞羞的视频在线观看 | 五月天婷婷狠狠 | 999久久久久久久久6666 | 精品国产伦一区二区三区观看说明 | 日韩欧美一级精品久久 | 国产精品免费在线 | 精品视频 免费 | 国产精品一二三区 | 在线观看中文字幕 | av在线播放国产 | 福利精品 | 日韩精品成人 | 国产精品久久久久久吹潮 | 亚州精品天堂中文字幕 | 国产精品久久国产精品 | 国产精品久久久久久久岛一牛影视 | 亚洲欧美日韩精品久久亚洲区 | 亚洲精品成人 | 韩国av一区二区 | 视频一区二区三区在线观看 | 亚洲性网 | 日本福利在线观看 | 中文字幕亚洲国产 | 精品在线一区二区三区 | 一级片视频免费观看 | 正在播放国产精品 | 99精品网| 久久一区 | 精品视频导航 | 亚洲一区二区在线 | 亚洲精品1区2区3区 91免费看片 | 91亚洲国产成人精品一区二三 | 91精品国产综合久久久久蜜臀 | 91看国产| 91久久精品一区 |