Part Number:CC2652ROther Parts Discussed in Thread: UNIFLASH, SYSCONFIG
如题,cc2652R芯片有唯一id吗,有的话如何获取
Kevin Qiu1:
有的,可以通过flash programmer2或Uniflash读取:
也可以使用例程如simple_peripheral,在sysconfig中选择public address,串口会打印
,
wei wang:
您的意思是地址模式选择public address,获取的MAC地址可以保证唯一id吗
,
Kevin Qiu1:
是的
,
wei wang:
好的,非常感谢。通过查看cc2652的技术参考手册,CCFG中有 IEEE_MAC_0、 IEEE_MAC_1和 IEEE_BLE_0、 IEEE_BLE_1,如果它们的值不是0xFFFFFFFF,则该字段的值被应用,否则使用FCFG中的值(即MAC_15_4_0、MAC_15_4_1和 MAC_BLE_0、MAC_BLE_1)。
问题1:BLE的MAC地址是IEEE_MAC_n还是IEEE_BLE_n?
问题2: FCFG中的MAC_15_4_n和 MAC_BLE_n的偏移量分别是0x2E8和0x2F0,那么它们的基地址是多少?我想用UniFlash查看以下
,
Kevin Qiu1:
唯一MAC地址不是CCFG中的 IEEE_MAC_0、 IEEE_MAC_1和 IEEE_BLE_0、 IEEE_BLE_1
唯一MAC地址的获取方式上面已经说明了
后面的问题是另一个问题了,请重开一个新帖以便其他人查找
,
wei wang:
我用的SDK版本是5.20,IDE是CCS,编译器是TIClang。simple_peripheral_oad_onchip工程中BLE的MAC地址选择的是public address。bim_onchip工程没有改动时,通过串口打印的BLE MAC地址是0xF0F8F226778D。
bim_onchip工程中,在ccfg_app.c文件中添加了SET_CCFG_IEEE_BLE_0(就是上面说的IEEE_BLE_0,偏移量0x1FD0)和SET_CCFG_IEEE_BLE_1(就是上面说的IEEE_BLE_1,偏移量0x1FD4)的定义,如下面代码的第2行和第3行
#define SET_CCFG_IMAGE_VALID_CONF_IMAGE_VALID 0x56000 #define SET_CCFG_IEEE_BLE_00xAAAAAAAA // Bits [31:0] #define SET_CCFG_IEEE_BLE_10xAAAAAAAA // Bits [63:32]#include <ti/devices/DeviceFamily.h> #include DeviceFamily_constructPath(startup_files/ccfg.c)刷到flash后,通过串口打印的BLE MAC地址是0xAAAAAAAAAAAA。所以得出的结论是我上面描述是正确的:这个BLE的MAC地址是可以通过修改IEEE_BLE_0和IEEE_BLE_1改变的。如果不定义SET_CCFG_IEEE_BLE_0和SET_CCFG_IEEE_BLE_1则ccfg会使用DeviceFamily_constructPath(startup_files/ccfg.c)中的定义,如下
//##################################### // Alternative BLE address //##################################### #ifndef SET_CCFG_IEEE_BLE_0 #define SET_CCFG_IEEE_BLE_00xFFFFFFFF // Bits [31:0] #endif#ifndef SET_CCFG_IEEE_BLE_1 #define SET_CCFG_IEEE_BLE_10xFFFFFFFF // Bits [63:32] #endif而根据cc2652技术参考手册中的描述,如果SET_CCFG_IEEE_BLE_0和SET_CCFG_IEEE_BLE_1为0xFFFFFFFF,则BLE的MAC地址使用FCFG中的MAC_BLE_0和MAC_BLE_1作为其BLE地址,即上面的0xF0F8F226778D。