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地址如下图:
那么问题来了,我们在程序想读取到这个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
若是地址失效,请告诉我们,谢谢!