espressif/esp_csi_gain_ctrl

0.1.5

Latest
uploaded 8 hours ago
This package provides algorithmic functionality for ESP-CSI human movement and presence detection for easy integration into products.

readme (zh)

# ESP CSI 增益控制 [[English]](./README.md)

### 概述

`esp_csi_gain_ctrl` 是用于 ESP-CSI 雷达系统的接收增益控制组件。它提供接收增益管理功能,用于稳定 CSI 数据采集和处理,通过补偿自动增益控制(AGC)和 FFT 增益变化来确保数据一致性。

### 功能特性

- **增益基线计算**:收集多个增益样本并计算基线
- **增益补偿**:根据当前增益与基线的差异计算补偿因子,用于校正 CSI 数据
- **强制增益设置**:支持手动设置接收增益(可能影响数据包传输)
- **增益提取**:从 CSI 数据包信息中提取 AGC 和 FFT 增益值

### 支持的芯片

- ESP32
- ESP32-S2
- ESP32-S3
- ESP32-C3
- ESP32-C5
- ESP32-C6
- ESP32-C61

### 依赖要求

- ESP-IDF >= 4.4.1

### API 参考

#### `esp_csi_gain_ctrl_get_gain_status()`

检查接收增益状态。

```c
rx_gain_status_t esp_csi_gain_ctrl_get_gain_status(void);
```

**返回值:**
- `RX_GAIN_COLLECT` 正在收集数据
- `RX_GAIN_READY` 基线已计算完成
- `RX_GAIN_FORCE` 增益已被手动强制设置

#### `esp_csi_gain_ctrl_record_rx_gain()`

记录单个接收增益样本,用于后续基线计算。

```c
esp_err_t esp_csi_gain_ctrl_record_rx_gain(uint8_t agc_gain, int8_t fft_gain);
```

**参数:**
- `agc_gain`: 当前 AGC 增益
- `fft_gain`: 当前 FFT 增益

**返回值:**
- `ESP_OK` 成功

#### `esp_csi_gain_ctrl_get_rx_gain_baseline()`

获取接收增益基线值。

```c
esp_err_t esp_csi_gain_ctrl_get_rx_gain_baseline(uint8_t *agc_gain, int8_t *fft_gain);
```

**参数:**
- `agc_gain`: 输出基线 AGC 增益
- `fft_gain`: 输出基线 FFT 增益

**返回值:**
- `ESP_OK` 成功
- `ESP_ERR_INVALID_ARG` 参数无效
- `ESP_ERR_INVALID_STATE` 基线尚未准备好
- `ESP_ERR_NO_MEM` 内存分配失败

#### `esp_csi_gain_ctrl_set_rx_force_gain()`

强制设置接收增益(可能导致数据包丢失)。

```c
esp_err_t esp_csi_gain_ctrl_set_rx_force_gain(uint8_t agc_gain, int8_t fft_gain);
```

**参数:**
- `agc_gain`: AGC 增益
- `fft_gain`: FFT 增益

**返回值:**
- `ESP_OK` 成功

**注意:** 如果 `agc_gain` 和 `fft_gain` 都为 0,则禁用强制增益并恢复自动增益。

#### `esp_csi_gain_ctrl_reset_rx_gain_baseline()`

重置接收增益基线统计。

```c
void esp_csi_gain_ctrl_reset_rx_gain_baseline(void);
```

#### `esp_csi_gain_ctrl_get_gain_compensation()`

计算当前接收增益的补偿因子。

```c
esp_err_t esp_csi_gain_ctrl_get_gain_compensation(float *compensate_gain, uint8_t agc_gain, int8_t fft_gain);
```

**参数:**
- `compensate_gain`: 输出计算的补偿因子
- `agc_gain`: 当前 AGC 增益
- `fft_gain`: 当前 FFT 增益

**返回值:**
- `ESP_OK` 成功
- `ESP_ERR_INVALID_STATE` 基线未准备好或其他无效状态

#### `esp_csi_gain_ctrl_compensate_rx_gain()`

扩展版本的接收增益补偿,支持 8 位和 16 位 CSI 样本。

```c
esp_err_t esp_csi_gain_ctrl_compensate_rx_gain(void *data, uint16_t size, bool samples_are_16bit,
                                               float *compensate_gain, uint8_t agc_gain, int8_t fft_gain);
```

**参数:**
- `data`: 待补偿的数据缓冲区(原地修改)
- `size`: 缓冲区长度(字节)
- `samples_are_16bit`: 如果每个 CSI 分量为 16 位则为 `true`,8 位则为 `false`
- `compensate_gain`: 输出补偿因子
- `agc_gain`: 当前 AGC 增益
- `fft_gain`: 当前 FFT 增益

**返回值:**
- `ESP_OK` 成功
- 其他错误码表示失败

#### `esp_csi_gain_ctrl_get_rx_gain()`

从 CSI 数据包信息中提取接收增益。

```c
void esp_csi_gain_ctrl_get_rx_gain(const void *rx_ctrl, uint8_t *agc_gain, int8_t *fft_gain);
```

**参数:**
- `rx_ctrl`: 指向 RX 控制信息的指针(wifi_pkt_rx_ctrl_t)
- `agc_gain`: 输出提取的 AGC 增益
- `fft_gain`: 输出提取的 FFT 增益

### 使用示例

组件内的 test_app

Links

License: Apache-2.0

To add this component to your project, run:

idf.py add-dependency "espressif/esp_csi_gain_ctrl^0.1.5"

download archive

Stats

  • Archive size
    Archive size ~ 367.50 KB
  • Downloaded in total
    Downloaded in total 89 times
  • Downloaded this version
    This version: 0 times

Badge

espressif/esp_csi_gain_ctrl version: 0.1.5
|