天天看点

CC2541 CC2540 之自定义MAC地址读取

       TI的cc2541 cc2540芯片有6个字节表示mac地址,该地址有两个,第一个,ti称之为 Primary mac address(第一mac地址,这个是芯片出厂固定的),一般我们用的是这个mac地址,第二个叫做 Secondary mac address (第二mac地址,我们可以自定义这个地址),cc2541 cc2540芯片在启动时,会先检查第二mac地址是否不是0xFFFFFFFFFFFF, 也就是写入非 0xFFFFFFFFFFFF 数据到第二mac地址所在的flash中,芯片代码就控制使用第二mac地址。这些介绍在芯片的datasheet中都有,你有兴趣可以自己找找。

       我们的 CC2541脱机烧录器 的滚码功能,写入的就是第二mac地址,实现mac地址自定义。

       例如我们的脱机烧录器中使用了 滚码来自定义mac地址如下图:

CC2541 CC2540 之自定义MAC地址读取
CC2541 CC2540 之自定义MAC地址读取

       那么问题来了,我们在程序想读取到这个mac地址,方法很简单:

实际上就是 读取flash相关的地址即可得到该6个字节的mac地址, 详细代码如下,拿走,不客气:

#if 1
    {
        /*
        读取 自定义mac地址的方法如下:
        1, 例如在    simpleBLEPeripheral  工程的 simpleBLEPeripheral.c 中增加头文件定义 
         #include "hal_flash.h"
        2, 在 simpleBLEPeripheral.c  文件的任何地方,例如SimpleBLEPeripheral_Init()函数调用如下函数即可
        获取自定义mac地址,配合我们的 脱机烧录器好好的。         
        */
#define MAC_ADDR_LEN    6
        // 自定义mac 地址存放于flash中的第127页的偏移 (2048-16-6), 这个可见手册定义的,自己找找看
        uint8 pg = 127;
        uint16 offset = 2048-16-6;
        uint8 seconed_mac_addr_buf[MAC_ADDR_LEN]={0}; // mac地址

        //  读取mac地址
        HalFlashRead(pg, offset, seconed_mac_addr_buf, MAC_ADDR_LEN);

        // 显示mac地址
        HalLcdWriteString( bdAddr2Str( seconed_mac_addr_buf ),  HAL_LCD_LINE_6 );
    }
#endif
           

我们既做CC254x开发板,也做其脱机烧录工具。 专研专业,值得信赖! 使用说明书与相关软件工具的链接如下,请自行下载(内附软件与使用说明等等):

请复制到地址栏: http://pan.baidu.com/s/1boAXMTx

若是地址失效,请告诉我们,谢谢!