第一次拿到BGT24LTR11这颗芯片时,我也有点懵——它比指甲盖还小,却藏着24GHz毫米波雷达的全部秘密。简单来说,这是一颗**1T1R(单发单收)**的毫米波雷达芯片,能发射24GHz电磁波并通过分析回波实现测距和测速。对于嵌入式开发者而言,它的魅力在于将复杂的射频电路集成到微型封装中,让我们用常规单片机就能玩转毫米波技术。
翻开数据手册,你会发现芯片内部结构其实很清晰:左侧是发射链路的压控振荡器(VCO),右侧是接收链路的混频器和中频放大器。关键引脚可以分为三类:
注意:V_TUNE引脚是核心中的核心,它接受的电压变化会直接改变发射频率,这是实现FMCW(调频连续波)雷达的关键。
参考官方推荐电路,我用立创EDA画了个最小系统板。硬件设计有三个要点:
焊接时有个坑要注意:芯片的QFN封装底部有散热焊盘,必须用热风枪充分加热才能保证可靠接地。第一次做板子时我没处理好这点,导致雷达有效距离只有标称值的一半。
接好电路后,用这段代码测试基本功能:
c复制// 初始化DAC用于V_TUNE控制
void DAC_Init() {
HAL_DAC_Start(&hdac, DAC_CHANNEL_1);
}
// 发射使能函数
void Radar_Enable() {
HAL_GPIO_WritePin(TX_EN_GPIO_Port, TX_EN_Pin, GPIO_PIN_SET);
}
// 发射关闭函数
void Radar_Disable() {
HAL_GPIO_WritePin(TX_EN_GPIO_Port, TX_EN_Pin, GPIO_PIN_RESET);
}
操作顺序很重要:先给V_TUNE施加固定电压(比如1V),再使能TX_EN。用频谱仪应该能看到24GHz附近的信号峰,如果没有,检查VEE负电压是否到位。
FMCW雷达的核心是让发射频率随时间线性变化。我用STM32的DAC生成锯齿波控制V_TUNE,关键参数有:
这里有个优化点:普通DAC更新速率可能不够,我用DMA+定时器触发实现了1MHz的更新速率:
c复制// 配置DMA循环模式发送锯齿波数据
uint16_t ramp_buffer[1000]; // 预计算的波形数据
HAL_DAC_Start_DMA(&hdac, DAC_CHANNEL_1,
(uint32_t*)ramp_buffer,
1000, DAC_ALIGN_12B_R);
IFI和IFQ输出的是0.1-1.5MHz的中频信号,需要双通道同步采样。我选用ADS7042这款12位ADC,配置要点:
采集到的原始数据是这样的:
code复制时间(ms) IFI(V) IFQ(V)
0.000 1.652 1.648
0.001 1.673 1.627
0.002 1.689 1.602
...
对采集到的信号做256点FFT,Python处理示例如下:
python复制import numpy as np
from scipy.fft import fft
ifi = np.array([1.652, 1.673, 1.689, ...]) - 1.65 # 去除直流分量
fft_result = np.abs(fft(ifi))
frequencies = np.linspace(0, 2000, len(fft_result)) # 假设采样率4kHz
频谱峰值对应的频率与目标距离成正比。我实测发现,对于1米处的金属板,会得到约67Hz的频率分量。
当有多个物体时,频谱会出现多个峰。我的处理流程是:
这里有个实用技巧:对IFQ信号做希尔伯特变换得到解析信号,能更精确地提取相位信息。
在某园区项目中,我们这样部署雷达:
实测功耗从传统红外方案的15W降至3W,且再没出现过飞虫误触发的情况。
在周界防护场景中,我们实现了这些功能:
调试时发现,混凝土墙对24GHz信号反射很强,需要在算法中加入背景扣除功能。
焊接不良导致的问题占我调试时间的30%。后来发现用预成型焊锡膏+**热风枪260℃**是最可靠的焊接方案。另外几个常见问题:
最后分享一个性能优化技巧:在FFT前加汉宁窗能显著提高近距离目标的分离度,代价是轻微降低距离分辨率。