ZigBee最大帧长度是多少啊
你好,我用终端给协调器发数据,测得可以收到128字节的数据,从网上查最大是127字节的数据
请问:可以发送最大数据到底是多少啊?
加上协议中的东西构成的帧最大是多少字节啊?
怎么设置拆包(还是自动拆包的,如果是自动拆包,那不拆包的最大可以发送多少字节?怎么设置不拆包?)?
1、IEEE802.15.4协议规定的最大帧长度为127字节。
2、自动拆包的实现,一般是把接收到的数据存放到缓冲区,跟包头的长度对比,如果超过了,则进行拆包
你好,我做的实验是一个终端和一个协调器,终端向协调器发送数据,协调器收到数据后通过串口向PC显示
开始发送116个字节的数据,协调器收到116字节的数据
然后发送127字节的数据,协调器能收到127字节的数据
最后发送145字节的数据,协调器只收到128字节的数据
你说的最大帧长度是包括 协议栈的内容(mac层和phy层)+实际数据 吗?
自动拆包在程序哪里可以设置?给点提示
谢谢
Hua jiao:
1: zigbee协议的的MAC和PHY是基于IEEE802.15.4的,从PHY层发到空中的数据包中,用一个字节bit6~bit0来表示数据帧的的长度,bit7接收方用来填写CRC校验值。所以每个数据包长度最大是127个字节,
2:自动拆包的程序以及library提供,在发送数据的时候会自动封装好拆分的数据包。
if (len > afDataReqMTU( &mtu ) )
{
if (apsfSendFragmented)
{
stat = (*apsfSendFragmented)( &req );
}
else
{
stat = afStatus_INVALID_PARAMETER;
}
}
else
{
stat = APSDE_DataReq( &req );
}
你好,谢谢你的回答
这个由PHY层发送到空中的数据包 包括实际数据和SHR及PHR共127字节么? 还是实际数据就127字节?
可以给说下文档的出处和程序的出处吗?谢谢,程序我待会去搜下看看
看一下我总结的有问题么
zigbee最大帧长度
摘自《ZigBee无线网络与收发器》,[美] Shahin Farahani 著 沈建华 王维华 阔鑫 译
英文版名为《ZigBee Wireless Networks and Transceivers》
<1>P30-P31:
3.2.6 PHY常量和属性
常量定义了协议的特性,如最大帧长度、一个事件的持续期间等。协议的每一层都有自己的常量。PHY只有两个常量,如表3.2所列。PHY常量aMaxPHYPackerSize表明PHY服务数据单元(PSDU)不能超过127字节。Turnaround时间是指收发器从发送(TX)切换到接收(RX)所需的时间,反之亦然。根据aTurnaroundTime常量,收发器必须在12个符号周期内完成切换。
表3.2 PHY常量
常量 |
描述 |
值 |
aMaxPHYPacketSize |
PSDU最大长度(单位字节) |
127 |
aTurnaroundTime |
RX到TX或TX到RX最大切换时间(单位符号周期) |
12 |
…………………………………………………………………………………………
<2> P35-P37
3.2.9 PHY数据包格式
PHY层协议数据单元(PPDU)格式如图3.5所示。PPDU由三部分组成:同步头(SHR)、PHY头(PHR)和PHY载荷。
7 bits 1 bit MAC帧
同步序列 |
帧起始分隔符 |
帧长度 |
保留 |
PSDU |
SHR PHR PHY载荷
图3.5 PPDU格式
…………………………………………………………
PHY数据包下一个域是帧长度。帧长度指定了PHY载荷(PSDU)字节总数。PSDU长度可以是0至127中的任意值(见表3.2,PHY常量)。但是实际上,基于IEEE 802.15.4-2006,对于一个MAC确认帧PSDU长度是5字节,而PSDU长度对其他任何MPDU是9-127字节。0-4和6-8的帧长度值保留为潜在未来应用(表3.7)
表3.7 帧长度值
帧长度值 |
PHY载荷 |
0到4 |
保留 |
5 |
应答MPDU |
6到8 |
保留 |
9到aMaxPHYPacketSize |
其他类型MPDU |
<3>摘自网络
注意:这个mac层没有显示信息
也就是说:最大帧长度为4+1+1+127 =133字节
额,不好意思,有个图没显示出来,其他图还没显示全,
对的是这样的,因为SHR和PHR是PHY层自动添加的,所以通常理解的可以发送的数量就是127字节。
非常感谢你的帮助
写的好,非常有帮助! 谢谢大牛们!
请问发送的时候,字节数大于127个字节,是否自动循环发送?而接收的时候,是否也是自动封装好的呢?谢谢!
同问,如果大于127个字节,如何发送,
如果大于127字节了,底层会自动开启分包发送功能。
接收端也是,底层处理多个报文,然后把完整的报文给到应用层
#if !defined ( ZIGBEE_FRAGMENTATION )
#define ZIGBEE_FRAGMENTATION
#endif