CC2541-修改蓝牙名称和mac地址

    xiaoxiao2021-03-25  147

    使用的蓝牙芯片是CC2541, 本文章介绍修改蓝牙名称和蓝牙MAC地址的方法。

    修改蓝牙名称:

    在数组scanRspData[ ]里,存放的就是蓝牙名称,你可以自己设置。GAPRole_SetParameter( GAPROLE_SCAN_RSP_DATA, sizeof ( scanRspData ), scanRspData ); 

    修改蓝牙MAC地址:

    蓝牙的MAC是全球唯一的,在Flash中有一块只读区域,从地址0x780E开始,蓝牙的MAC以小端方式存放在里面。

    在TI的Peripheral例程里面,添加一个特征值,只读属性,6字节长度(蓝牙MAC长度为48-bit,6字节)。

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

    The Information Page is a 2-KB read-only region that stores various device information. Among other

    things, it contains for IEEE 802.15.4 or Bluetooth low energy compliant devices a unique IEEE address from the TI range of addresses. For CC253x, this is a 64-bit IEEE address stored with least-significant byte first at XDATA address 0x780C. For CC2540/41, this is a 48-bit IEEE address stored with least-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地址

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

    GAPRole_GetParameter(GAPROLE_BD_ADDR, ownAddress);  

    osal_memcpy( MAC_Address,ownAddress,B_ADDR_LEN);  

    上面说的是安卓读取MAC的方法。

    苹果手机无法在连接中获得MAC,苹果手机没有提供读取底层MAC的API,所以只能通过广播MAC的方式传给苹果手机。 但是将MAC放在广播中,同时也会导致数据的不安全。还有一种方法是把MAC地址放在广播数组里,发送出去。将MAC地址放在scanRspData(GAP - SCAN RSP data)数组里。

    上面说的是读取BLE的MAC地址,要是修改的话,可以如下修改:

    unsigned char DeviceMAC[6] = {0x88,0x88,0x88,0x88,0x88,0x88}; HCI_EXT_SetBDADDRCmd(DeviceMAC);

    之后,蓝牙的mac地址就修改为88:88:88:88:88:88.

    有问题,请咨询,我的个人公众号。

    转载请注明原文地址: https://ju.6miu.com/read-32407.html

    最新回复(0)