CC2530中的MAC层确认帧(兼容IEEE 802.15.4-2006)

一 . IEEE 802.15.4-2006规范 确认帧 描述
7.2.2.3 Acknowledgment frame format
The acknowledgment frame shall be formatted as illustrated in Figure 53.

7.2.2.3.1 Acknowledgment frame MHR fields
The MHR for an acknowledgment frame shall contain only the Frame Control field and the Sequence
Number field.
In the Frame Control field, the Frame Type subfield shall contain the value that indicates an
acknowledgment frame, as shown in Table 79. If the acknowledgment frame is being sent in response to a
received data request command, the device sending the acknowledgment frame shall determine whether it
has data pending for the recipient. If the device can determine this before sending the acknowledgment
frame (see 7.5.6.4.2), it shall set the Frame Pending subfield according to whether there is pending data.
Otherwise, the Frame Pending subfield shall be set to one. If the acknowledgment frame is being sent in
response to either a data frame or another type of MAC command frame, the device shall set the Frame
Pending subfield to zero. All other subfields shall be set to zero and ignored on reception.
The Sequence Number field shall contain the value of the sequence number received in the frame for which
the acknowledgment is to be sent.
确认帧MHR只包含帧控制域和DSN。
帧控制域中,帧类型要设置为0b010,表明此帧为确认帧。如果该确认帧是响应接收到的数据或命令请求(request)。
发送确认帧的设备应确定是否有接收方的数据未决。如果设备能在发送确认帧之前确定未决,这样能根据pending data来
设置FCF中的Frame Pending subfield(FCF bit4帧未决域)。 否则Frame Pending subfield应设置为1
如果正在发送的确认帧是数据帧或其他类型的MAC命令帧的响应,设备应将Frame Pending subfield设置为0。
FCF其他所有的子域应当设置为0,接收器将忽略它们。
DSN的值为所要确认的接收帧中所报包含的DSN。

"否则Frame Pending subfield应设置为1", 这句话的含义是:
如果设备能在发送确认帧之前不能确定未决,
此时Frame Pending subfield应该设置为1。参照FRMCTRL1.PENDING_OR 位的描述,该位即是用来
表述,如果无法根据pending data来 设置FCF中的Frame Pending subfield, FRMCTRL1.PENDING_OR为1,
此时, Frame Pending subfield总是使用1。

"如果正在发送的确认帧是对数据帧或其他类型的MAC命令帧的响应,设备应将Frame Pending subfield设置为0。"
这句话的含义是:
此时,是针对非响应data request command的确认帧。注意data request command是间接传输中设备向协调器请求数据。

Frame Pending subfield为 1表示后续还有更多的数据帧要发送给接收设备, 0表示没有。
未决:缓存在协调器中,未发给终端。
已决:已发给终端,或没有该请求设备的数据或命令。

二. 确认帧 的帧格式


如上图,确认帧的MHR和MFR包括:
  • FCF:相应的帧类型子域(Frame Type)要设置为0b010,表明该帧是确认帧。其中还包括Pending bit。        
  • DSN:为所要确认的接收帧中所报包含的DSN。
  • FCS:如果AUTOCRC =1且APPEND_DATA_MODE=1,则FCS中包含SRCRESINDEX。

除去帧类型外,上面应答帧中的三个域由RF来产生:
1.悬挂位(pending bit),它由命令触发和AUTOPEND来控制。
2.DSN(data sequence number),从最后一个接收的数据帧中获取。
3.FCS,参见应答帧格式。

pending bit根据下面的三个操作来控制:
1. SACKPEND命令
2.PENDING_OR位:
  当PENDING_OR设置为1时, pending bit域总是被设置为1;
  为0时, 则有FSM来确定该位的值和地址过滤来确定 pending bit的值。
3.源地址匹配中寄存器 SRCRESINDEX bit6( AUTOPEND)

pending bit域根据确认帧的传输(触发)方式不同,而有填充实现的差别。下面来分别讨论这种具体的实现细节。

三.确认帧的传输方式
1.手动确认
通过选通命令SACK、SACKPEND来触发。命令SNACK中断确认帧传输。
FCF中Frame Type子域和DSN由这些命令来自动完成填充。
  • 当PENDING_OR设置为1时,pending bit域总是被设置为1。为0时,则由FSM来确定该位的值。
  • 命令SACK在发送确认帧时,会清除pending bit域。
  • 命令SACKPEND在发送确认帧时,会设置pending bit域。
注意,其中当 PENDING_OR为1时,将会忽略SACK、SACKPEND命令对 pending bit的影响。

2.自动确认
当FRMFILT0.FRM_FILTER_EN 和FRMCTRL0.AUTOACK设置为使能,且满足以下基本条件时,对接收帧自动确认:
  • 接收帧被帧过滤接受
  • 接收帧中包含的确认请求位被设置
  • 接收帧不能为信标帧和确认帧
  • 接收帧包含正确的FCS

自动应答的处理会被命令SACK, SACKPEND和SNACK重载。

AUTOACK从不设置frame-pending bit,该位通过下面两种方式来设置:
1.自动控制,使用AUTOPEND特性,即源地址匹配中的该位特性。
2.手动设置FRMCTRL1.PENDING_OR位。
同样的,当FRMCTRL1.PENDING_OR为1时, pending bit总是被设置为1,而忽略AUTOPEND的影响。

下面来讨论AUTOPEND的特性。注意AUTOPEND和上面的AUTOACK是两个不同的概念。
AUTOPEND特性由SRCMATCH.AUTOPEND来设置,当该位为1时,会使用源地址匹配结果来确定 pending bit。
返回的确认帧的未决域被置位条件是:
  • FRMFILT0.FRAME_FILTER_EN使能
  • SRCMATCH.SRC_MATCH_EN使能
  • SRCMATCH.AUTOPEND使能
  • 接收帧匹配当前的SRCMATCH.PEND_DATAREQ_ONLY设定
  • 只要有一个源地址被匹配。具体的匹配实现细节参加“源地址匹配”一节




  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值