原创 802..15.4(zigbee协议)

2012-4-4 12:27 2194 20 25 分类: 消费电子

802..15.4(zigbee协议)

作者:下家山

一:802.15.4帧格式

 

 

 20110607_xjs_f1.jpg

图一

 

1.1 Preamble Sequence

此字段包含4个字节,有cc2420自动产生。

1.2 Start of Frame Delimiter

此字段包含1个字节,有cc2420自动产生。

   =============================================================================

1.3 Mac Protocol Data Unit

         接下来的字段是我们需要设置的

二:结构体表示MPDU

通常我们用一个结构体来表示

typedef struct

{

  /* The following fields are transmitted/received on the radio. */

  char length;

  char fcfhi;

  char fcflo;

  char dsn;

  int destpan;

  int addr;

  char type;

  char group;

  char Txdata[TOSH_DATA_LENGTH];

 

  /* The following fields are not actually transmitted or received

   * on the radio! They are used for internal accounting only.

   * The reason they are in this structure is that the AM interface

   * requires them to be part of the TOS_Msg that is passed to

   * send/receive operations.

   */

  char strength;

  char lqi;

  int crc;

  int ack;

  int time;//

} Msg;

如果,我们要发送一个字节0x55,程序该怎么写:

#define CC2420_DEF_FCF_LO          0x08

#define TOS_BCAST_ADDR             0xffff

#define CC2420_DEF_FCF_HI_ACK      0x21  // with ACK

#define CC2420_DEF_FCF_HI          0x01  // without ACK

void main()

{

 

 WDTCTL = WDTPW + WDTHOLD;                 // Stop WDT

 hardwareinit();

 Msg * data;

 long int i,j;

 data=(Msg*)malloc(sizeof(Msg));

 

 P5DIR|=0X70;//0111 0000 1out 0 in

 P5OUT|=0X70; //1高电平                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          

 data -> length = 12;  //msg data length:10   last lqi&rssi:2

 data -> fcflo = CC2420_DEF_FCF_LO;//destination address mode:10

 data -> fcfhi = CC2420_DEF_FCF_HI_ACK;//ack request:1 frame type:10

// destination PAN is broadcast

 data -> destpan = TOS_BCAST_ADDR;

 // adjust the destination address to be in the right byte order

 data -> addr = 0x0001;

 // adjust the data type if need

 data -> type = FRAME_TYPE_DATA;

 // keep the DSN increasing for ACK recognition

 data -> dsn = 1;

 // reset the time field

 data -> time = 0;

data -> group=0x00;

data -> Txdata[0]=0x55;

 

for(i=0;i<100;i++)

{

 data->dsn =i;

  sendAMessage(data -> length,(char*)data);

 for(j=0;j<50000;j++);

}

free(data);

P5OUT|=0X10;

}

2.1发送数据截图

那么最终发送出去的数据是:

 

20110607_xjs_f2.jpg

                                               图二

有了这些,我们可以把协议与代码,还有实际发送的数据一一对应起来

2.2 代码与发送数据汇总

20110607_xjs_f3.jpg

20110607_xjs_f4.jpg

 

2.3接收数据截图

 

那么接收到的数据呢?

首先,我们把发送与接收的数据的截图做一个比较:

20110607_xjs_f5.jpg

三:怎么找到RSSI

那么我们MODEMCTRL0,AUTOCRC有没有被置位呢?

20110607_xjs_f6.jpg

                                                                        2010-10-18 11:06  写于上海.松江

 (请尊重原创,转载请注明:作者,下家山)

 
 
 

 

PARTNER CONTENT

文章评论5条评论)

登录后参与讨论

用户1037328 2011-6-9 16:16

第5个图片怎么看不到呢

用户1037328 2011-6-8 11:22

还有最后一张图片,请帮我插进去,另,在排版好像有点问题,在简介里只显示...&n

用户1602177 2011-6-7 15:36

博主,图片已经贴在内文中,请调整位置! PS:在编辑框里有一个插图按钮(下图中第三个就是),您可以留意一下~

f1.jpg

用户1037328 2011-6-7 14:49

请把5个图帮我放进去,我来排,还有个图传不上去,说附件太多

用户1037328 2011-6-7 14:37

请问怎么插入图片啊

相关推荐阅读
用户1037328 2016-04-17 17:59
好的理论可以避免犯错——读《丈量世界》有感!
     《丈量世界》,早就因为仰慕高斯而想看这本书      1.殊途同归      这本书写的是高斯和洪堡两个人,为什么要把这两个人放在一起写呢?因为高斯是一个宅男,不喜欢什么旅游,考察!他觉得...
用户1037328 2016-04-05 09:10
叛逆在爱因斯坦性格中的重要性(一)
叛逆在爱因斯坦性格中的重要性(一) 《爱因斯坦传》读书笔记      昨天晚上,读完了2016年书单的第二部书,《爱因斯坦传》。我想梳理一下自己读这本书的收获,或者说感悟!在读这...
用户1037328 2016-04-05 09:09
叛逆在爱因斯坦性格中的重要性(二)
叛逆在爱因斯坦性格中的重要性(二) 《爱因斯坦传》读书笔记                                四  叛逆性 在爱因斯坦的同时期科学家中,我想比他IQ...
用户1037328 2014-07-09 19:55
RTEMS系统时钟原理
作者,下家山(转载请注明作者及出处,请尊重原创)   专注嵌入式(ARM7,Cortex-M0,Cortex-M3,ARM9,linux)培训 一:从应用看原理      每个...
用户1037328 2014-07-09 19:47
RTEMS在S3C2410上的移植(一)
作者:下家山(转载,请注明) 1:RTEMS开发环境建立 1.1开发环境建立前的准备工作 因为RTEMS开发环境主要用的是GNU的工具链,所以需要一台装有Linux的HOST. 1.2...
用户1037328 2014-07-09 19:45
深入浅出学Makefile<三,如何自动生成Makefile>
(请尊重原创,转载请注明,作者:下家山) 五: 运行make编译得到可执行文件 root@parson-desktop:/home/parson/tmp/automk# make gcc ...
EE直播间
更多
我要评论
5
20
关闭 站长推荐上一条 /3 下一条