查看: 12031|回复: 11

关于cc253x IEEE地址的读取

[复制链接]
leewei 发表于 2011-8-18 17:10:57 | 显示全部楼层 |阅读模式
cc253x IEEE地址的读取,z-stack提供了函数NLME_GetExtAddr()供读取,但是不依赖这个封装函数,怎么直接读取呢?这个问题好像比较多人关心。

首先我们看看z-stack是怎么读取的,这里有一篇翻译文档
http://hi.baidu.com/before%D6%D0 ... 2d73a50e2444ec.html
从这篇文档中,可以看出要读取唯一且不变的IEEE地址,最最保险的做法就是读取primary IEEE地址了,这个是TI固化。

接着看怎么读取这个地址,就得看数据手册了
The Information Page is a 2 KB read-only region that stores various device information. Among other things it contains a unique IEEE address from the TI range of addresses. It is stored with the least significant byte first at XDATA address 0x780C. A separate design note will be published that details the contents of the information page.
这段我们关心的是存储TI 固化的IEEE地址信息的起始地址0x780C。
方法就变简单了。
我的方法就是
#define EXADDR0     PXREG( 0x780C )
ext_addr0 = *EXADDR0;
这样就读取一个字节了,至于读取其他字节类推就行了。读取IEEE的地址,经和flash 工具读取的相符,说明这个方法是可行的。

==================顺便啰嗦两句==============================
    其实不依赖z-stack函数读取IEEE地址的目的,一般就是想抛弃臃肿的z-stack,设计自己的无线数据收发系统,好的这样系统一般要开启地址过滤,所以读取这个IEEE地址后,最好把这个地址值设置给EXT_ADDR0~EXT_ADDR7,免得当使用这个IEEE地址通信,可能造成因为地址过滤而收不到数据现象。
   顺祝飞比越办越好!
outman 发表于 2011-8-18 18:57:59 | 显示全部楼层
楼主费心了,也祝楼主学有所成,学有所用
ZS10060201 发表于 2011-8-18 21:29:45 | 显示全部楼层
牛,还可以这么读地址!
eellmy 发表于 2011-9-13 15:53:36 | 显示全部楼层
为什么我用NLME_GetExtAddr()这个api得到的ieee地址每一次都会变化而且跟用flash programmer得到的ieee地址不一样?是这个api本身有问题吗?????急!!!!!!!
kennan 发表于 2011-9-13 21:14:10 | 显示全部楼层
cc253x IEEE地址的读取,z-stack提供了函数NLME_GetExtAddr()供读取,但是不依赖这个封装函数,怎么直接读 ...
leewei 发表于 2011-8-18 17:10



    实际上真的没有必要自己去读这个IEEE地址。去掉臃肿的协议栈是不现实的。
高兴就好 发表于 2011-10-22 10:54:21 | 显示全部楼层
感谢楼主
正好解决了我的疑惑
beckham 发表于 2011-12-26 16:13:08 | 显示全部楼层
回复 1# leewei


    你好!
       问下 你这个从0x780C读到的地址,应该是primary IEEE地址吧,也就是无法修改的那个。
       数据手册中扩展地址从0x616A–0x6171读,这个应该是secondary地址,也就是可以自己修改的那个,我这样的理解对吗?
 楼主| leewei 发表于 2011-12-26 18:36:39 | 显示全部楼层
回复  leewei


    你好!
       问下 你这个从0x780C读到的地址,应该是primary IEEE地址吧,也就是 ...
beckham 发表于 2011-12-26 16:13

你好,0x616A–0x6171的内容是地址匹配过滤时,使用的扩展地址值,可以通过EXT_ADDR0~EXT_ADDR7进行读写。例如你可以初始时直接通过EXT_ADDR0~EXT_ADDR7写入你想要的地址值,或者直接写入primary IEEE地址值,这时就相当于已经更改0x616A–0x6171内容,如果你开启地址匹配过滤功能,这时2530就是拿刚写入地址值进行匹配。
xhj967 发表于 2012-5-12 19:05:19 | 显示全部楼层
  #define EXADDR0     PXREG( 0x780C )
  #define EXADDR1     PXREG( 0x616A )

  
    ext_addr0 = *EXADDR0;
    ext_addr1 = *EXADDR1;
xhj967 发表于 2012-5-12 19:06:08 | 显示全部楼层
为什么断点调试的时候显示unavaiable
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表