930电子网

 找回密码
 立即注册
艾克姆科技推出最新产品STC32G12K128开发板
查看: 19777|回复: 1

快速发送数据时候,当协议栈因缓存不足,产生NRF_ERROR_RESOURCES 的根本原因

[复制链接]

57

主题

80

帖子

366

积分

中级会员

Rank: 3Rank: 3

积分
366
发表于 2020-10-28 20:08:10 | 显示全部楼层 |阅读模式
我想到的原因有两种,如下:
第一种情况:
当协议栈缓存不够时候,在本次连接间隔,数据被发送出去,就可以填充新数据。

第二种情况,即使在本次连接间隔中,数据被发送出去,也不能填充新数据,直到下一次连接间隔到来,才能允许填充新数据。

这两种情况,哪个才是正确的。谢谢!

回复

使用道具 举报

52

主题

354

帖子

6545

积分

版主

Rank: 7Rank: 7Rank: 7

积分
6545
发表于 2020-10-29 15:03:50 | 显示全部楼层
我们在调用发送函数发送数据的时候,实际是将数据写入到射频FIFO(可以缓存4包数据),只要射频FIFO有空闲位置,数据就可以写入。
当连接建立后,主从机使用设定的连接间隔,即按照固定的连接间隔(比如30ms)通讯,也就是每30ms通讯一次,这就是一个连接事件,连接事件保持的时间决定了一个连接事件可以发多少个包。
产生NRF_ERROR_RESOURCES 的本质原因是  应用程序在一定时间内写入发送的数据的速度(写入到射频FIFO) 大于 在同样时间内连接事件实际能发送的数据的速度,这就造成射频FIFO中的数据来不及发送出去,所以,调用发送函数写入数据时,会返回:资源不足的错误代码。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|官方淘宝店|930电子网 ( 皖ICP备16000695号-2 )

GMT+8, 2024-11-21 18:54 , Processed in 0.069720 second(s), 21 queries .

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