乐鑫技术交流
直播中

李辉

7年用户 1320经验值
私信 关注
[问答]

ESP32-S3-DevkitC-1开发板和Nuki Fob通过Pairing连接,报错的原因?

我在做一个项目, 目的是让 ESP32-S3-DevkitC-1开发板 和 Nuki Fob 通过 Pairing 连接。 我使用 Gatt Server例程 作为开发主体/基准的。

在Pairing 连接过程中发生了如下的报错: 请看 FOB.JPG

Status = 15 表示 ESP_BT_STATUS_PARAM_OUT_OF_RANGE 错误。

我尝试更改过

  •         conn_params.latency = 0;
  •         conn_params.max_int = 0x20;    // max_int = 0x20*1.25ms = 40ms
  •         conn_params.min_int = 0x10;    // min_int = 0x10*1.25ms = 20ms
  •         conn_params.timeout = 200;


但是好像 数据不够长似的, latency, max_int, min_int, 都能更改,timeout怎么改,程序运行后观察Terminal,timeout的数值始终不变化。

作为类比,我尝试过Nuki API 上的一个Pairing例子,让ESP32S3 和NUKI APP连接, 我观察了Terminal, 一切正常,能得到期望的结果,请参看APP.JPG.

两者运行的区别在于 ESP32S3 与 FOB 连接时,没有放生 ESP_GATTS_MTU_EVT, MTU 500, 看样子没有设置MTU的数值,谁知道这是为什么呢?按道理来说FOB 与 APP 分别与 ESP32S3 连接的细节过程应该是一样的, 谁能给解释一下,谢谢了!!!                                                                                                                                                                                                                                                                           

回帖(1)

刘敏

2024-6-13 16:23:48
在解决这个问题之前,我们先了解一下错误代码和参数的含义:

1. 错误代码:Status = 15,表示 ESP_BT_STATUS_PARAM_OUT_OF_RANGE,意味着参数超出了允许的范围。
2. 连接参数:conn_params.latency、conn_params.max_int 和 conn_params.min_int 是蓝牙连接参数,用于设置连接间隔。

现在我们来分析可能的原因:

1. 参数设置不正确:检查 conn_params.max_int 和 conn_params.min_int 的值是否在允许的范围内。根据蓝牙规范,min_int 和 max_int 的值应该在 0x0006 到 0x0C80 之间,单位为 1.25ms。你设置的 min_int 为 0x10(16 * 1.25ms = 20ms),max_int 为 0x20(32 * 1.25ms = 40ms),这个范围是合法的。

2. 连接参数不兼容:Nuki Fob 可能不支持你设置的连接参数。尝试调整 min_int 和 max_int 的值,以适应 Nuki Fob 的要求。

3. 其他配置问题:检查 ESP32-S3-DevkitC-1 开发板的其他蓝牙配置,如 MTU 大小、安全模式等,确保它们与 Nuki Fob 兼容。

解决方案:

1. 尝试调整 conn_params.min_int 和 conn_params.max_int 的值,例如将 min_int 设置为 0x08(10 * 1.25ms = 12.5ms),max_int 设置为 0x10(16 * 1.25ms = 20ms)。

2. 检查 ESP32-S3-DevkitC-1 开发板的蓝牙配置,确保它们与 Nuki Fob 兼容。

3. 如果问题仍然存在,可以尝试查看 Nuki Fob 的文档,了解其支持的连接参数范围,然后根据这些信息调整 ESP32-S3-DevkitC-1 开发板的配置。


举报

更多回帖

×
20
完善资料,
赚取积分