文号
952471
阅读
613
回复
10
收藏
0
本文在AI协助下创作,作者声明AI的作用仅限于局部修饰性、辅助性工作,文章内容的严肃性由作者负责。
用ESP32C5构建C波段雷达的设想
2026/10/09
IP:北京

在这个国庆假期前后,有关ESP32系列芯片的射频ADDA的I/Q收发相关的工厂测试用(可能是) dump 引擎寄存器被逆向了出来,使得芯片可以直接收发采样率最高80MSPS的任意 I/Q 信号。具体来说,样本来自 Wi-Fi/Bluetooth 无线电内部接收路径在射频下变频之后。所选的无线电转储格式提供带符号的 10 位 I 和 10 位 Q。一个未公开的硬件样本转储引擎将这些对直接写入内部 SRAM。发射也是相似,不过目前的发现认为接收侧 dump 跨越两个SRAM bank,可以实现双缓冲的流式接收而没有gap,但是发射所占用的 bank 只有一个,且在 dump 引擎工作时对其 bank 进行额外的读写会造成部分数据的损坏,因此难以做到无gap的连续发射。

拿来做图传什么的,感觉发 802.11 帧也是一样的,片内的modem还更快速稳定,做通用 SDR 又受限于调谐范围和通信带宽,思来想去拿来玩雷达也许是个有趣的方向。

ESP32-C5 的可调谐范围大概可达 4.8GHz 到 6GHz 且价格较低、资料相对完整,因此具备作为 C 波段 SDR 实验平台的能力。


image.jpg

(图片来自XXXXXXXXXXXXXXXXXXXXXXXXXXXX)


作为通用SDR平台的问题在于其不具备足够高速的通信接口,导致其空有80M的采样率却难以把数据传出来。目前只有S31有千兆以太网和USB HS,其他想要高速通信就只能外挂FPGA之类的从IO口拓展总线出来了。


image.jpg

(图片来自XXXXXXXXXXXXXXXXXXXXXXXXXXXX)


硬件限制

ESP32-C5 射频前端高度集成,T/R 开关、LNA、PA 都在片内。主要限制如下:

半双工:同一时刻只能发射或接收,不能同时收发。

T/R 切换速度在百纳秒级。对于 5–15 米目标,回波延迟约 33–100 ns,切换盲区会覆盖近距回波。

标称发射功率约 +19.5 dBm,接收灵敏度约 -100 dBm。

天线端口共享,内部 LNA 、PA无法旁路,直接外接 LNA、PA 不现实。


可能的方案(脑洞)

单芯片脉冲多普勒

单芯片可以按脉冲多普勒体制工作:发射短脉冲,切换到接收,采集回波,做距离门和多普勒滤波。适合演示雷达基本原理,但近距盲区明显,探测距离和分辨率有限。

而且其发射功率和接收灵敏度都不算高,T/R切换也存在延迟(我在S3上尝试压缩到了约两百纳秒,这还是只考虑软件,死区还是挺大的),恐怕不一定能做出来。


双芯片 FMCW

FMCW 需要边发边收,单芯片半双工无法直接实现。可以用两片 ESP32-C5 共用时钟,一片专职发射,一片专职接收,在系统层面实现连续波收发,还能外挂LNA、PA等。乐鑫 ESP-CRAB 方案验证过共晶振相位同步的路径,可以参考。


再多芯片可以考虑相控阵之类的,玩起来就要复杂一些了。

image.jpg

(XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX 的天线阵列,用于接收和解析WIFI CSI)


image.jpg

(图为ESP32S3实测发射和接收线性扫频信号,带宽40MHz)


[ 修改于21天1时前 - 2026/10/09 21:46:55 ]
DD_9527作者
18天7时前修改于 18天7时前IP:北京
952507
6楼
引用warmonkey发表于3楼的内容
ESP32-S3的PSRAM接口不知道行不行,挂个fpga在外面代替RAM

image.jpg

如果频率相同但相位不同,相位稳定的话,可以通过采样参考信号进行校准,图中是ESPARGOS的方案。
在ESPARGOS One的说明书中"How It Works"中"Synchronization Principle"小节讲述了其原理,原文如下:
"All 8 sensor ESP32 chips share acommon 40MHz reference clock. Theremainingper sensor LO phase ambiguity is corrected via the 2.4GHz phase reference distributed over PCB traces of known lengths. pyespargos estimates these offsets during a cali bration step."

引用
评论(1)
1
笔记
{{note.content}}
{{n.user.username}}
{{fromNow(n.toc)}} {{n.status === noteStatus.disabled ? "已屏蔽" : ""}} {{n.status === noteStatus.unknown ? "正在审核" : ""}} {{n.status === noteStatus.deleted ? '已删除' : ''}}
  • 编辑
  • 删除
  • {{n.status === 'disabled' ? "解除屏蔽" : "屏蔽" }}
我也是有底线的