ESP32C3_S3 CSI 数据释义整理

文档目的:

相较于当前常用于获取 CSI 信息的 intel 5300 NIC 或 Atheros 9580,使用乐鑫公司 (Espressif Systems) 的 ESP32 系列芯片可以相当便捷地获取 CSI 信息。但是截至 20230908, 乐鑫公司的 CSI 例程中对所收取到 CSI 数据的支持还不完善,因此查阅相关资料对 wifi_csi_info_t 结构体和 wifi_pkt_rx_ctrl_t 结构体中的成员进行注释。

释义及相关链接:

wifi_csi_info_t
rx_ctrl解析包时所解析出的信息,具体见下表
mac发送端 mac 地址
dmac目的地址
first_word_invalid如果 :cpp:type:wifi_csi_info_t 的 first_word_invalid 字段为 true,表示由于 {IDF_TARGET_NAME} 的硬件限制,CSI 数据的前四个字节无效。
buf有效 CSI 数据内容
len有效 CSI 数据长度
wifi_pkt_rx_ctrl_t
rssi信号强度
rate意义:
接受到的包的传输速率,这一位只有在协商的模式是11bg下面才生效;如果是11n/ac/ax模式的话(只要是通过HT 速率接收到的),就去看MCS这一位,并查表获得传输速率。

其他参考:
Wi-Fi 7有多快?–Wi-Fi速率理论计算
WiFi速率计算IEEE 802.11G—54Mbps
sig_mode意义:
所收到包所符合的协议。
值为 0 时代表 802.11 b/g,值为 1 时代表 802.11 n,值为 2 时代表 802.11 ac。

Tips:
若使用 esp 发包,可以使用 esp_wifi_set_protocol API 修改所发包的 protocol,但要注意和 esp_wifi_config_espnow_rate 中所配置的发包速率匹配。
mcs意义:
所使用的调制编码方案 (Modulation and Coding Scheme) 。
对于802.11 b/g/n ,mcs 值为 0~7,对于 802.11 ax,mcs 值为 0~9。(参考 esp-idf/docs/en/api_guides/wifi.rst)

Tips:
1. 对于 C6,mcs 支持到 256-QAM、带宽支持到 20MHz
2. LoRa 不支持获取 CSI,因为 CSI信息是只有在OFDM 以上的才有


其他参考:
MCS 速率表参考:
802.11 n/ac
802.11 ax
使用 esp_now 发送 LoRa
LoRa 包结构
cwb意义:
所收到包的带宽。
0 为 20MHz,1 为 40MHz
smoothing意义:
Set to 1 indicates that channel estimate smoothing is recommended. Set to 0 indicates that only per-carrier independent (unsmoothed) channel estimate is recommended.

其他参考:
802.11-2020

Tips:
对 subcarrier 进行平滑有助于提升 SNR
not_sounding意义:
Set to 0 indicates that PPDU is a sounding PPDU. Set to 1 indicates that the PPDU is not a sounding PPDU.
sounding PPDU 用于让请求接收端进行信道估计。

其他参考:
802.11-2020
Channel measurement (sounding) procedures,在 802.11 ac 协议中,波束成形之前需要进行信道校准过程(即 channel sounding)
aggregation意义:
所收到的包是否启用了 ampdu
0 为仅对一个子帧进行 MPDU 方式聚合;1 为对多个子帧进行 MPDU 方式聚合,聚合的子帧数目见 ampdu_cnt
stbc意义:
STBC 为 1 表示所接受到的包是通过STBC的方式发送的,0 的话就代表不是
fec_coding意义:
fec: forward error correction。对于 802.11 n 引入了低密度奇偶校验码 (low density parity check),LDPC码是由Gallager (1962)发现的,LDPC码是一类特殊的线性分组码。此外,它们是奇偶校验码的一种特殊情况,奇偶校验矩阵的大部分元素为零,只有少数矩阵元素包含1。LDPC名称的“低密度”部分就是根据这个属性来命名的。
1 代表此 802.11 n 包使用了 LDPC。
sgi意义:
是否启用短保护间隔(SGI / Short guard interval) 。
0 为使用长保护间隔,1 为使用短时间间隔。

解释
由于信号沿多条路径传播,导致在接收侧,最新接收的信息符号(information symbol)可能会和上一个接收过程尚未结束的信息符号进行碰撞,从而导致干扰。为此,802.11a/g标准要求在发送信息符号时,必须要保证在信息符号之间存在800ns的时间间隔,这个间隔被称为Guard Interval(GI)。802.11n缺省时仍然使用800nsGI。

Tips:
当多径效应不是很严重时,可以将该间隔配置为400ns,可以将吞吐提高将近10%。如果GI时长不合理,会降低链路的有效SNR。Short GI使用于多径情况较少、射频环境较好的应用场景。在多径效应影响较大的时候,应该关闭short GI功能。
noise_floor意义:
背景噪声的大小,单位为 dBm,结合信号强度 (RSSI) 可以计算出 SNR。
ampdu_cnt意义:
检测到收到包使用 AMPDU 方式对多个子帧进行聚合时,指示聚合的子帧数目。

解释:
使用信息协议数据单位 (MPDU / Message Protocol Data Unit) 方式对多帧进行聚合时,一个汇聚帧所包含子帧个数。

Tips:
1. ampdu 方式下每个子帧都有 mac 头,但一个聚合帧只有一个 phy 头。但 csi 属于 phy 层的数据,这意味着当 ampdu_cut 不是 0 的时候同一个聚合帧内的多个子帧不会被分别计算 csi。
2. 为保证收到 CSI 的时间均匀性,应将 ampdu 配置成 1
channel意义:
所收到包使用的传输信道号
secondary_channel意义:
分析所收到包在传输时所使用的 second channel 相较 primary channel 是 above 还是 below。
0 代表未使用 second channel,1 代表 second channel 在 primary channel 的“上方”,2 代表在其下方。

Tips:
当收到包的带宽为 20MHz 时,secondary channel 的值为接收端的配置,而不是发送端的 secondary channel 配置。
timestamp意义:
当收到包时的本机时间,单位为微秒
ant意义:
所收到包是通过哪个天线采集的
0 代表天线 0,1 代表天线 1
sig_len意义:
代表整个包的长度,单位为 bytes
rx_state意义:
指示包的状态
0 代表包解析无误,其他数字代表解析错误,错误代码含义不公开

其他相关链接:

  1. ESP-CSI 官方仓库:esp-csi
  2. ESP 对 CSI raw_data 的格式说明:Wi-Fi Channel State Information
  • 3
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值