DA14585 RSSI转换为DBM

⚠️
嗨,...感谢您来论坛。令人兴奋的消息!我们现在正在迁至我们的新论坛平台,将提供更好的功能,并包含在主对话框网站中。所有帖子和帐户都已迁移。我们现在只接受新论坛上的流量 - 请发布任何新线程https://www.dialog-seminile.com/support.。我们将在未来几天修复错误/优化搜索和标记。
4个帖子/ 0新
最后一篇
moiify.
离线
最后一次露面:3天4小时前
加入:2020-03-12 07:26
DA14585 RSSI转换为DBM

嗨对话框

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

我用

UINT8_T BLE_RF_RSSI_CONVER(UINT8_T RSSI_REG){//注意:对应于以下公式的近似转换:// dBm =(0.474f * rssi) -  112.4f。返回((rssi_reg >> 1u) -  112u);}

我把测试结果放在以下PDF中,请注意表格。谢谢你

设备:
PM_DIALOG.
离线
最后一次露面:10小时2分钟前
职员
加入:2018-02-08 11:03
嗨moiify,

嗨moiify,

您能否分享您所关注的程序,以便获得RSSI并转换为DBM?任何代码片段复制它会非常有用。

谢谢,PM_DIALOG.

moiify.
离线
最后一次露面:3天4小时前
加入:2020-03-12 07:26
typedef struct {
typedef struct {uint8_t evt_type;///广告地址类型:公共/随机uint8_t adv_addr_type;///广告地址值struct bd_addr adv_addr;///广告包中的数据长度UINT8_T DATA_LEN;///广告包的数据UINT8_T数据[ADV_DATA_LEN];/// rssi广告包uint8_trsi的价值;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_trsi_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.
离线
最后一次露面:10小时2分钟前
职员
加入: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.