2972|0

13

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

CC2420硬件地址识别的问题 [复制链接]

      本人用ZigBee制作一个无线报警分站,传感器通过ZigBee将数据传送给分站,为了方便区分各个传感器,我打开了模块的硬件地址识别:write_reg_word(CC2420_MDMCTRL0, 0x0AF2);   即:将MDMCTRL0.ADR_DECODE位置1了,帧头中的帧控制域公司规定用 03 88 ,PAN_ID、destAdress等都符合要求,但是分站就是收不到传感器的数据,将MDMCTRL0.ADR_DECODE位清零,即关闭硬件地址识别后就能正常接收数据了;我修改帧控制域为 88 61(网上找的资料里的)后,打开硬件地址识别也能正常接收! 不知道是不是帧控制域不合规范啊,网上找了好多资料都讲的模模糊糊的。望高手指点一二,谢谢!

      注:传感器发送的帧内容是 12 03 88 99 99 99 FF FE 99 99 +7字节的数据+校验,12是帧长, 03 88是帧控制域,99是队列, 99 99是PAN_ID,FF FE是SHORT_ADDR, 99 99是destAddr。

            

分站初始化程序:

void init_cc2420(void)
{  
// uint32 temp;
 comm(CC2420_SXOSCON);      //打开晶振
 WaitForCrystalOscillator();           //等待晶振稳定                                      

 write_reg_word(CC2420_MDMCTRL0, 0x01F2);         //关闭自动地址识别

//write_reg_word(CC2420_MDMCTRL0, 0x0AF2);       //打开自动地址识别
    write_reg_word(CC2420_MDMCTRL1, 0x0500);      //设置关联门限值为20   
//  write_reg_word(CC2420_RXCTRL1, 0x2A56);         //控制RX带通滤波器参考偏置电流:3uA
 write_reg_word(CC2420_IOCFG0, 0x007F);               //设置FIFOP门限为最大值128    
 write_reg_word(CC2420_SECCTRL0, 0x01C4);         //关闭安全使能 0x01c4 
 write_reg_word(CC2420_RXCTRL0, 0x12E5);       //低噪声放大器增益中等
 write_reg_word(CC2420_TXCTRL, 0xA0FF);         //发射功率设置
   
 SetChannel(RX_channel);   //接收信道,选择10信道  
   
 comm( CC2420_SFLUSHRX );//清空接受缓冲区
 comm( CC2420_SFLUSHTX );//清空发送缓冲区

    write_ram(CC2420RAM_PANID,0x99);                           //本机PAN_ID为0x9999
    write_ram(CC2420RAM_PANID+1,0x99);        
         
    write_ram(CC2420RAM_SHORTADDR,0xfe);                 //本机SHORT_ADDR为0xfffe
    write_ram(CC2420RAM_SHORTADDR+1,0xff); 

  
 comm(CC2420_SRFOFF);                  //禁止RX/TX
 comm(CC2420_SFLUSHRX);             //清除接收缓冲区  
 comm(CC2420_SRXON);                   //使能接收   
}

[ 本帖最后由 剑神S 于 2012-4-11 15:17 编辑 ]
此帖出自RF/无线论坛
点赞 关注
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
快速回复 返回顶部 返回列表