嗨对话框
我做了一个距离测试,使用da14585和一个信标。SDK提供的API似乎与实际情况不符。
我使用
uint8_t ble_rf_rssi_convert(uint8_t rssi_reg){//注意:近似转换对应以下公式:// dBm = (0.474f * rssi) - 112.4f。return (rssi_reg >> 1U) - 112U);}
我把测试结果放在下面的pdf中,请注意表格。非常感谢
设备:
嗨moiify,
您能分享一下您获取RSSI并转换为dBm的步骤吗?任何代码片段来复制它将是非常有用的。
谢谢,PM_Dialog
我使用上面的代码进行开发和测试。请看一看。非常感谢!
嗨moiify,
为了将RSSI转换为真正的dBm,您只需要将RSSI值读取为带符号的值。RSSI由广告结构(gapm_adv_report_ind)中的堆栈报告,该结构作为app_on_adv_report_ind中的参数。为此,在广告报告回调中,您应该获得RSSI值(param->report. RSSI)并将其转换为signed值。
例如:
Uint8_t rssi = param->报告。rssi;
如果rssi = 0xCD,则应该将其转换为-51dBm的有符号值。
当您通过rf_585.c文件中的rf_rssi_convert()从广告报告中获得该值时,它会自动在dbm中转换。该函数传递给堆栈,堆栈为您执行转换。为了将rssi转换为dbm,您不需要收回这个函数。
谢谢,PM_Dialog