DA14585 RSSI转换为DBM

⚠️
嗨,那里..感谢您参加论坛。激动人心的消息!现在,我们正在转到我们的新论坛平台,该平台将提供更好的功能,并包含在主话网站中。所有帖子和帐户都已迁移。我们现在仅在新论坛上接受流量 - 请在https://www.dialog-spoomendonductor.com/support。我们将在未来几天修复错误 /优化搜索和标记。
4个帖子 / 0新
最后一篇文章
Moiify
离线
最后一次露面:1个月4周前
加入:2020-03-12 07:26
DA14585 RSSI转换为DBM

嗨对话框

我已经进行了距离测试,使用DA14585和一个灯塔。SDK提供的API似乎与现实不符。

我用

uint8_t ble_rf_rssi_convert(uint8_t rssi_reg){//注意:与以下公式相对应的近似转换:// dbm =(0.474f * rssi)-112.4f。返回((RSSI_REG >> 1U)-112U);}

我将测试结果放在以下pdf中,请注意非常感谢您

设备:
pm_dialog
离线
最后一次露面:2天22小时前
职员
加入:2018-02-08 11:03
嗨,Moiify,

嗨,Moiify,

您能否分享您遵循的程序以获取RSSI并转换为DBM?任何复制代码片段都将非常有帮助。

谢谢,pm_dialog

Moiify
离线
最后一次露面:1个月4周前
加入:2020-03-12 07:26
typedef struct {
typedef struct {uint8_t evt_type;///广告地址类型:public/random uint8_t adv_addr_type;///广告地址值struct bd_addr adv_addr;///广告数据包Uint8_t data_len中的数据长度;///广告数据包UINT8_T数据的数据[adv_data_len];///广告数据包UINT8_T RSSI的RSSI值;} st_scan_info;void default_app_adv_report_ind(struct gapm_adv_report_ind const *param){ble_scan_cb(((st_scan_info *)param);} int8_t ble_rf_rssi_convert(uint8_t rssi_reg){//注意:与以下公式相对应的近似转换:// dbm =(0.474f * rssi)-112.4f。返回((RSSI_REG >> 1U)-112U); } void ble_scan_cb(ST_SCAN_INFO *param) { ST_BLE_SCAN_RESULT scan_result = {NULL, 0, NULL, 0}; TBEACON_INFO_STR *tBeaconInfoStr = NULL; int8_t dbm = 0; dbm = ble_rf_rssi_convert(param->rssi); }

我使用上述代码进行开发和测试。请看一看。非常感谢!

pm_dialog
离线
最后一次露面:2天22小时前
职员
加入:2018-02-08 11:03
嗨,Moiify,

嗨,Moiify,

为了将RSSI转换为真实DBM,您只需要将RSSI值读取为签名值即可。RSSI由广告结构中的堆栈(GAPM_ADV_REPORT_IND)报告为App_ON_ADV_REPORT_IND中的参数。为此,在广告报告回调中,您应该获取RSSI值(param-> report.rssi)并转换为签名值。

例如 :

uint8_t rssi = param-> report.rssi;

如果RSSI = 0xCD,则应将其转换为签名值,即-51dBm。

当您通过rf_585.c文件中的rf_rssi_convert()从广告报告中获取广告报告时,该值将自动转换为DBM。该功能通过堆栈传递,堆栈为您执行转换。您无需召回此功能即可将RSSI转换为DBM。

谢谢,pm_dialog