TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2541如何获取主机MAC地址

大家好!请问CC2541如何获取主机MAC地址?谢谢!

kqian0327:

你好,

在读取蓝牙MAC地址时有一种非常简便的方法,就是直接去读寄存器里的MAC地址 ,

The Information Page is a 2-KB read-only region that stores various device information. Among otherthings, it contains for IEEE 802.15.4 or Bluetooth low energy compliant devices a unique IEEE addressfrom the TI range of addresses. For CC253x, this is a 64-bit IEEE address stored with least-significantbyte first at XDATA address 0x780C. For CC2540/41, this is a 48-bit IEEE address stored withleast-significant byte first at XDATA address 0x780E

于是读出寄存器中的值,就可以得到MAC地址了 ,这里是只读空间。

void ReadMac(unsigned char *TempMacAddress,int len)  // Len 一定是6  
{  
   TempMacAddress[5]=XREG(0x780E); // 直接指向指针内容  
   TempMacAddress[4]=XREG(0x780F);  
   TempMacAddress[3]=XREG(0x7810);  
   TempMacAddress[2]=XREG(0x7811);                // define 函数直接读出数据  
   TempMacAddress[1]=XREG(0x7812);  
   TempMacAddress[0]=XREG(0x7813);  
   return ;  
}  

顺便说一下XREG的定义

#define XREG(addr)       ((unsigned char volatile __xdata *) 0)[addr]

volatile 是为了在优化的时候值被改写,xdata是放在xdata空间中。

这句话是为了直接读出addr地址的内容!!!

议栈中也可以调用系统的API获取MAC地址

在BLE协

static uint8 MAC_Address[B_ADDR_LEN]={0}; //   mac 地址 

GAPRole_GetParameter(GAPROLE_BD_ADDR, ownAddress);  

osal_memcpy( MAC_Address,ownAddress,B_ADDR_LEN);  

甜甜的大香瓜:

《CC2541之广播MAC》:http://blog.csdn.net/feilusia/article/details/48176695

barry xu:

回复 kqian0327:

kqian0327,

您好!感谢您的指导!我意思是通过从机如何获取主机的MAC地址,比如蓝牙模块与手机app通信进,模块如何取到手机的MAC地址?谢谢!

da qin zheng sheng:

回复 Susan Yang:

谢谢分享。

barry xu:

回复 Susan Yang:

Dear Susan Yang,

谢谢分享!

Fan Li10:

回复 Susan Yang:

想咨询下,如果处于广播状态下,比如拿手机搜索到从设备,但是不建立连接的情况下,可以获取对端mac地址么?就是在scan response的过程中怎么才能获取对端主设备的mac地址?谢谢

赞(0)
未经允许不得转载:TI中文支持网 » CC2541如何获取主机MAC地址
分享到: 更多 (0)