AD9361增益控制与RSSI详解:自动与手动模式及测量指南

需积分: 5 89 下载量 24 浏览量 更新于2024-07-15 4 收藏 645KB PDF 举报
本文档是关于AD9361收发器的增益控制与接收信号强度指示器(RSSI)用户指南。AD9361是一款通用且高度可配置的无线通信IC,提供了多种增益控制模式以适应不同的应用场景,包括地址时分双工(TDD)和频分双工(FDD)。 1. **增益控制**: - **自动增益控制(AGC)**:在TDD和FDD模式下,AGC负责全程自动调节接收信号的增益,确保最佳接收性能。它包含慢攻、混合和快攻三种不同速率的设置,以应对不同环境下的动态变化。 - **手动增益控制(MGC)**:MGC模式下,基带处理器(BBP)直接控制增益,提供更大的灵活性,适合需要精细调整的应用。 2. **RF信号到接收信号级转换**: 文档解释了如何通过AD9361内部处理将接收到的RF信号转化为可测量的接收信号电平,这对于理解和优化系统性能至关重要。 3. **阈值检测器**: 介绍了用于确定何时进行增益调整的阈值检测机制,这些阈值决定了信号质量的变化点。 4. **设置时间**: 提供了关于增益调整过程中的settling times,确保在改变增益设置后,信号稳定到达新的工作点。 5. **增益表**: 文档详细介绍了全增益表和分段增益表的使用,这些表格用于存储预定义的增益设置,方便快速切换或编程。 6. **外部LNA**: AD9361支持外部低噪声放大器(LNA),可以配置为固定增益或可变增益模式,以适应不同的信号条件。 7. **RSSI功能**: - **模式选择**:文档涵盖了RSSI模式的选择,如测量持续时间和权重设置,以及Preamble和符号的处理方式。 - **RF-IQ滤波**:说明了RSSI测量中涉及到的滤波技术,确保信号的准确度。 - **校准**:介绍了一个用于调整RSSI增益步进的校准过程,保证测量结果的精度。 8. **应用示例**: 以实际应用为例,如完整增益表、慢速AGC和RSSI的注册设置,帮助用户理解如何在实际项目中实施这些功能。 总结来说,AD9361的增益控制和RSSI功能提供了全面的解决方案,确保无线设备在各种环境下的高效工作,并为用户提供了一套完整的工具来调整和优化系统性能。通过深入理解并遵循文档中的指导,用户能够充分利用AD9361的特性,提升无线通信系统的稳定性和准确性。

void sl_notify_gap_evt_to_porting_layer(sl_bt_msg_t *evt) { sl_status_t sc; bd_addr address; uint8_t address_type; struct ble_gap_event event; memset(&event, 0, sizeof(event)); switch (SL_BT_MSG_ID(evt->header)) { // ------------------------------- // This event is generated when an advertisement packet or a scan response // is received from a responder case sl_bt_evt_scanner_legacy_advertisement_report_id: memset(&event, 0, sizeof(event)); event.type = BLE_GAP_EVENT_DISC; event.disc.event_type = convert_to_nimble_adv_type(evt->data.evt_scanner_legacy_advertisement_report.event_flags); event.disc.length_data = evt->data.evt_scanner_legacy_advertisement_report.data.len; event.disc.data = evt->data.evt_scanner_legacy_advertisement_report.data.data; event.disc.addr.type = evt->data.evt_scanner_legacy_advertisement_report.address_type; memcpy(event.disc.addr.val, evt->data.evt_scanner_legacy_advertisement_report.address.addr, 6); event.disc.rssi = evt->data.evt_scanner_legacy_advertisement_report.rssi; notify_ble_event_to_listeners(&event); break; // ------------------------------- // This event indicates that a new connection was opened. case sl_bt_evt_connection_opened_id: event.type = BLE_GAP_EVENT_CONNECT; event.connect.conn_handle = evt->data.evt_connection_opened.connection; app_log_info("BLE connected, conn_id:%d\n", event.connect.conn_handle); notify_ble_event_to_listeners(&event); break; // ------------------------------- // This event indicates that a connection was closed. case sl_bt_evt_connection_closed_id: event.type = BLE_GAP_EVENT_DISCONNECT; event.disconnect.conn.conn_handle = evt->data.evt_connection_closed.connection; event.disconnect.reason = evt->data.evt_connection_closed.reason; app_log_info("BLE disconnected, conn_id:%d, reason:0x%02x\n", event.disconnect.conn.conn_handle, event.disconnect.reason); notify_ble_event_to_listeners(&event); break; case sl_bt_evt_gatt_mtu_exchanged_id: event.type = BLE_GAP_EVENT_MTU; event.mtu.conn_handle = evt->data.evt_gatt_mtu_exchanged.connection; event.mtu.value = evt->data.evt_gatt_mtu_exchanged.mtu; app_log_info("exchange mtu req: %d\n", event.mtu.value); notify_ble_event_to_listeners(&event); break; default: break; } }

2023-06-10 上传