如何以只读方式读取cc2530 mac 地址

来源:互联网 发布:java字节流和字符流 编辑:程序博客网 时间:2024/06/04 18:20
  1. 转载自:
  2. 查阅资料可以知道,德州仪器公司对cc2530芯片mac地址做了约定,主要是以下几项:从Z-stack的NV中读取、从Second IEEE 的位置中寻找、在Primary IEEE 的位置寻找、由随机数产生器产生一个临时IEEE地址。

  3. 需要知道的是,CC2530芯片在TI出厂时已经预先烧写了 Primary IEEE address,并且不同的芯片基本可以保证MAC地址不同。所以对于一般应用,只需要从Primary IEEE地址中读取即可。

  4. 参考ZStack协议栈,只需要添加以下代码,就可以读取IEEE 地址:

      uint8 *macaddrptr = (uint8 *)(P_INFOPAGE+HAL_INFOP_IEEE_OSET);

     

      for(int i=0;i<8;i++)

      {

        devmacaddr[i] = macaddrptr[i];

      }

    其中

    //device mac address

    uint8 devmacaddr[8];    //保存设备MAC地址数组

    如何以只读方式读取cc2530 mac 地址
  5. 下面简要分析一下代码,其中

    /* Pointer to Start of Flash Information Page */

    #define P_INFOPAGE  PXREG( 0x7800 )  

    可以知道P_INFOPAGE是指向Flash信息存储页的指针,也就是信息存取区的首页地址。

    如何以只读方式读取cc2530 mac 地址
  6. 其次,可以看到如下定义

    #define HAL_INFOP_IEEE_OSET        0xC

    这个就是IEEE地址在Flash信息存储页中的地址偏移量,通过加运算就可以计算出cc2530芯片的MAC(IEEE 地址)在Flash存储位置,这样子只需要通过赋值运算就可以读取到cc2530芯片64-bit的IEEE扩展地址。

    如何以只读方式读取cc2530 mac 地址

0 0