TI IWR6843AOP 60GHz雷达儿童检测部署指南

TI IWR6843AOP 60GHz雷达儿童检测部署指南

发布日期: 2026-07-03
标签: TI, IWR6843AOP, 60GHz雷达, CPD
分类: 平台部署


核心摘要

TI IWR6843AOP是60GHz mmWave雷达AOP(Antenna-on-Package)版本,集成天线降低部署复杂度。本文提供完整部署指南,包括芯片选型、SDK安装、FMCW信号处理、呼吸检测实现、与IWRL6432对比、以及IMS团队的TI雷达CPD开发路线。


1. TI 60GHz雷达芯片对比

1.1 TI mmWave雷达系列

芯片型号 频率 收发阵列 DSP AOP 功耗 适用场景
IWR6843AOP 60GHz 3发4收 C674x 300mW CPD(集成天线)
IWR6843 60GHz 3发4收 C674x 300mW CPD(外接天线)
IWRL6432 60GHz 2发2收 无DSP <100mW 低功耗CPD(边缘AI)
IWRL1432 24GHz 2发2收 无DSP <50mW 低成本CPD

1.2 IWR6843AOP优势

AOP(Antenna-on-Package)优势:

对比项 传统雷达(外接天线) IWR6843AOP(集成天线)
部署复杂度 高(需PCB天线设计) 低(天线已集成)
成本 高(天线PCB成本) 低(无额外天线成本)
封装体积 大(天线占用空间) 小(天线集成芯片)
一致性 低(天线设计差异) 高(TI统一设计)
开发周期 长(天线设计+调试) 短(直接部署)

1.3 IWR6843AOP规格

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
### IWR6843AOP Technical Specifications

**频率范围:** 60-64GHz(4GHz带宽)
**距离分辨率:** ~3.75cm(c/(2*4GHz))
**速度分辨率:** ~0.1m/s

**收发阵列:**
- 发射天线:3个(2Tx + 1Tx辅助)
- 接收天线:4个
- MIMO虚拟阵列:12个

**DSP:**
- C674x DSP(浮点DSP)
- 600MHz主频
- 实时FMCW信号处理

**AOP特性:**
- 集成3D天线阵列
- 视场角:方位±60°,仰角±30°
- 无需外部PCB天线

**功耗:**
- 工作模式:300mW
- 低功耗模式:<100mW

2. SDK部署流程

2.1 TI mmWave SDK安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
"""
TI IWR6843AOP SDK部署流程

安装步骤:
1. TI mmWave SDK下载(TI官网)
2. CCS(Code Composer Studio)安装
3. mmWave Studio配置
4. Demo应用编译与运行

参考文档:
- TI mmWave SDK User Guide
- IWR6843AOP Datasheet
- mmWave Studio Guide
"""

# 安装流程伪代码

"""
=== TI mmWave SDK安装流程 ===

Step 1: 下载mmWave SDK
https://www.ti.com/tool/MMWAVE-SDK

Step 2: 安装Code Composer Studio (CCS)
https://www.ti.com/tool/CCSTUDIO

Step 3: 安装mmWave Studio
https://www.ti.com/tool/MMWAVE-STUDIO

Step 4: 连接IWR6843AOP评估板
- AWR6843AOPEVM
- USB连接
- 电源供电

Step 5: 编译Demo应用
cd mmwave_sdk/examples/cpd_demo
make all

Step 6: 运行Demo
- 加载固件到IWR6843AOP
- 启动mmWave Studio
- 配置雷达参数
- 查看实时点云
"""

2.2 FMCW配置参数

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
"""
TI IWR6843AOP FMCW配置
儿童检测雷达参数设置

配置关键参数:
- chirp配置(频率扫描)
- 帧配置(chirps数量)
- 采样率
- 发射功率

目标参数:
- 呼吸检测:相位解调(胸部微动0.1mm)
- 儿童定位:距离+方位+仰角
"""

from typing import Dict

class TImmWaveConfig:
"""
TI mmWave雷达配置

IWR6843AOP配置参数:

Chirp配置:
- start_freq: 60GHz
- end_freq: 64GHz
- chirp_duration: 100μs

Frame配置:
- num_chirps_per_frame: 128
- frame_periodicity: 100ms

呼吸检测优化:
- 高相位分辨率(检测0.1mm运动)
- 低噪声配置(提高信噪比)
"""

def __init__(self):
# Chirp配置
self.chirp_config = {
'start_freq_ghz': 60.0,
'end_freq_ghz': 64.0,
'chirp_duration_us': 100,
'adc_samples': 256,
'adc_sample_rate_khz': 10000
}

# Frame配置
self.frame_config = {
'num_chirps_per_frame': 128,
'frame_periodicity_ms': 100,
'num_frames': 1000 # 连续采集
}

# 天线配置(IWR6843AOP内置)
self.antenna_config = {
'num_tx': 3,
'num_rx': 4,
'tx_antenna_selection': [0, 1, 2], # 使用所有Tx
'rx_antenna_selection': [0, 1, 2, 3] # 使用所有Rx
}

# 呼吸检测优化配置
self.vital_signs_config = {
'range_resolution_cm': 3.75,
'velocity_resolution_m_s': 0.1,
'phase_sensitivity_mm': 0.1, # 可检测0.1mm微动
'breathing_band_hz': [0.1, 0.5], # 呼吸频段
'heart_rate_band_hz': [0.8, 2.0] # 心跳频段
}

def generate_config_cli(self) -> str:
"""
生成TI mmWave CLI配置字符串

TI mmWave SDK使用CLI命令配置雷达

Returns:
config_cli: CLI配置字符串
"""
config_commands = []

# profileCfg(chirp配置)
profile_cfg = f"profileCfg 0 {self.chirp_config['start_freq_ghz']} " \
f"{self.chirp_config['end_freq_ghz']} " \
f"{self.chirp_config['chirp_duration_us']} " \
f"{self.chirp_config['adc_samples']} " \
f"{self.chirp_config['adc_sample_rate_khz']} 0 0"
config_commands.append(profile_cfg)

# chirpCfg(chirp配置)
chirp_cfg = f"chirpCfg 0 0 0 0 0 0 0 1"
config_commands.append(chirp_cfg)

# frameCfg(帧配置)
frame_cfg = f"frameCfg 0 1 {self.frame_config['num_chirps_per_frame']} " \
f"{self.frame_config['frame_periodicity_ms']} " \
f"{self.frame_config['num_frames']} 1 0"
config_commands.append(frame_cfg)

# GUI配置
gui_mon = "guiMonitor 1 1 1 1 1 1 1" # 启用所有监控
config_commands.append(gui_mon)

# 组合配置字符串
config_cli = "\n".join(config_commands)

return config_cli

def get_cpd_optimized_config(self) -> Dict:
"""
获取CPD儿童检测优化配置

优化目标:
- 高相位分辨率(检测呼吸微动)
- 低噪声(提高信噪比)
- 多目标分离(多儿童场景)

Returns:
cpd_config: CPD优化配置
"""
cpd_config = {
'chirp_config': {
'start_freq_ghz': 60.5, # 中心频率优化
'end_freq_ghz': 63.5,
'chirp_duration_us': 200, # 增加chirp时长提高分辨率
'adc_samples': 512, # 增加采样数提高分辨率
'adc_sample_rate_khz': 20000
},

'frame_config': {
'num_chirps_per_frame': 256, # 增加chirps提高Doppler分辨率
'frame_periodicity_ms': 50, # 提高帧率(20fps)
'num_frames': 1000
},

'vital_signs_config': {
'range_resolution_cm': 1.88, # 提高距离分辨率
'velocity_resolution_m_s': 0.05, # 提高速度分辨率
'phase_sensitivity_mm': 0.05, # 提高相位灵敏度
'breathing_band_hz': [0.15, 0.45],
'heart_rate_band_hz': [0.8, 1.5]
}
}

return cpd_config


# 测试示例
if __name__ == "__main__":
ti_config = TImmWaveConfig()

print("=== TI IWR6843AOP配置 ===")

# 打印chirp配置
print(f"\nChirp配置:")
print(f" 频率范围:{ti_config.chirp_config['start_freq_ghz']}-{ti_config.chirp_config['end_freq_ghz']} GHz")
print(f" Chirp时长:{ti_config.chirp_config['chirp_duration_us']} μs")
print(f" 采样数:{ti_config.chirp_config['adc_samples']}")

# 打印frame配置
print(f"\nFrame配置:")
print(f" 每帧Chirps数:{ti_config.frame_config['num_chirps_per_frame']}")
print(f" 帧周期:{ti_config.frame_config['frame_periodicity_ms']} ms")

# 打印呼吸检测配置
print(f"\n呼吸检测配置:")
print(f" 距离分辨率:{ti_config.vital_signs_config['range_resolution_cm']} cm")
print(f" 相位灵敏度:{ti_config.vital_signs_config['phase_sensitivity_mm']} mm")
print(f" 呼吸频段:{ti_config.vital_signs_config['breathing_band_hz']}")

# 生成CLI配置
print(f"\n=== CLI配置字符串 ===")
cli_config = ti_config.generate_config_cli()
print(cli_config)

# CPD优化配置
print(f"\n=== CPD优化配置 ===")
cpd_config = ti_config.get_cpd_optimized_config()
print(f" 优化后距离分辨率:{cpd_config['vital_signs_config']['range_resolution_cm']} cm")
print(f" 优化后相位灵敏度:{cpd_config['vital_signs_config']['phase_sensitivity_mm']} mm")

3. 呼吸检测实现

3.1 TI mmWave呼吸检测Demo

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
"""
TI IWR6843AOP呼吸检测实现
基于TI mmWave SDK Vital Signs Demo

TI SDK提供:
- vital_signs_demo(生命体征检测Demo)
- 实时呼吸频率检测
- 心跳频率检测
- 目标距离检测

代码路径:
mmwave_sdk/examples/vital_signs_demo
"""

import numpy as np
from typing import Dict, Tuple

class TImmWaveVitalSignsDemo:
"""
TI mmWave生命体征检测

IWR6843AOP呼吸检测流程:
1. FMCW信号发射与接收
2. Range FFT(距离维FFT)
3. Doppler FFT(速度维FFT)
4. 相位解调(提取胸部微动)
5. FFT提取呼吸频率(0.1-0.5Hz)

TI SDK输出:
- rangeIdx: 目标距离索引
- dopplerIdx: 目标速度索引
- peakVal: 目标峰值强度
- breathingRate: 呼吸频率(次/分钟)
- heartRate: 心跳频率(次/分钟)
"""

def __init__(self):
# mmWave SDK参数
self.sdk_params = {
'range_fft_size': 256,
'doppler_fft_size': 128,
'num_chirps': 256,
'frame_rate_fps': 20
}

# 呼吸检测参数
self.breathing_params = {
'min_freq_hz': 0.15, # 儿童最低呼吸频率(约9次/分钟)
'max_freq_hz': 0.5, # 最高呼吸频率(30次/分钟)
'phase_threshold': 0.05 # 相位变化阈值(mm)
}

def process_mmwave_output(self,
range_profile: np.ndarray,
doppler_profile: np.ndarray,
phase_sequence: np.ndarray) -> Dict:
"""
处理TI mmWave输出数据

Args:
range_profile: Range FFT输出(距离维)
doppler_profile: Doppler FFT输出(速度维)
phase_sequence: 相位序列(chirp维度)

Returns:
vital_signs_result: 生命体征检测结果
"""
# 1. 目标检测(CFAR)
target_range_idx = self._detect_target(range_profile)
target_doppler_idx = self._detect_target(doppler_profile)

# 2. 呼吸频率提取(相位序列FFT)
breathing_rate = self._extract_breathing_rate(phase_sequence)

# 3. 年龄判定
age_estimate = self._estimate_age(breathing_rate)

# 4. 目标距离计算
range_m = target_range_idx * 3.75 / 100 # 3.75cm per bin

vital_signs_result = {
'range_m': range_m,
'range_idx': target_range_idx,
'doppler_idx': target_doppler_idx,
'breathing_rate_bpm': breathing_rate,
'heart_rate_bpm': 0, # 简化:不提取心跳
'age_estimate': age_estimate,
'target_detected': True
}

return vital_signs_result

def _detect_target(self, profile: np.ndarray) -> int:
"""目标检测(峰值索引)"""
target_idx = np.argmax(profile)
return target_idx

def _extract_breathing_rate(self, phase_seq: np.ndarray) -> float:
"""提取呼吸频率"""
# FFT提取频率成分
phase_fft = np.fft.fft(phase_seq)

# 频率轴
frame_rate = self.sdk_params['frame_rate_fps']
freq_axis = np.fft.fftfreq(len(phase_seq), 1.0 / frame_rate)

# 呼吸频段(0.15-0.5Hz)
breathing_band = (freq_axis >= self.breathing_params['min_freq_hz']) & \
(freq_axis <= self.breathing_params['max_freq_hz'])

breathing_spectrum = np.abs(phase_fft) * breathing_band

# 峰值频率
breathing_peak_freq = freq_axis[np.argmax(breathing_spectrum)]

# 转换为次/分钟
breathing_rate_bpm = abs(breathing_peak_freq) * 60

return breathing_rate_bpm

def _estimate_age(self, breathing_rate: float) -> str:
"""年龄判定"""
if breathing_rate >= 28:
return 'newborn'
elif breathing_rate >= 23:
return '1-year'
elif breathing_rate >= 19:
return '3-year'
elif breathing_rate >= 17:
return '6-year'
else:
return 'adult'

def run_realtime_demo(self):
"""
运行实时Demo

TI mmWave SDK Demo运行:
1. 加载固件到IWR6843AOP
2. 启动数据采集
3. 实时处理生命体征
4. 输出呼吸频率
"""
print("=== TI IWR6843AOP实时Demo ===")

# 模拟实时数据流
for frame_idx in range(10):
# 模拟TI mmWave输出
range_profile = np.random.rand(256)
doppler_profile = np.random.rand(128)
phase_seq = np.sin(2 * np.pi * 0.25 * np.arange(256)) # 模拟呼吸相位

result = self.process_mmwave_output(range_profile, doppler_profile, phase_seq)

print(f"\nFrame {frame_idx}:")
print(f" 目标距离:{result['range_m']:.2f} m")
print(f" 呼吸频率:{result['breathing_rate_bpm']:.1f} 次/分钟")
print(f" 年龄估计:{result['age_estimate']}")


# 测试示例
if __name__ == "__main__":
ti_demo = TImmWaveVitalSignsDemo()

ti_demo.run_realtime_demo()

4. IMS开发落地指导

4.1 硬件选型建议

场景 推荐芯片 原因
CPD单座椅检测 TI IWR6843AOP 集成天线,部署简单
CPD低成本方案 TI IWRL6432 低功耗<100mW,边缘AI
CPD高精度呼吸检测 TI IWR6843AOP DSP实时处理,相位解调
CPD多座椅检测 Vayyar 60GHz(48阵列) 单芯片覆盖全舱

4.2 开发流程清单

步骤 任务 时间 工具
1 AWR6843AOPEVM评估板采购 1周 TI官网
2 mmWave SDK安装 1天 TI官网下载
3 vital_signs_demo编译运行 1天 CCS编译
4 FMCW参数优化 1周 mmWave Studio
5 呼吸检测精度验证 1周 参考传感器对比
6 集成IMS系统 2周 CAN接口开发

4.3 测试场景清单

场景编号 检测项 测试条件 通过标准
TI-01 SDK安装验证 mmWave SDK运行 Demo正常启动
TI-02 AOP天线覆盖测试 视场角±60° 目标在视场角内检测
TI-03 呼吸精度验证 参考呼吸传感器 ±2次/分钟误差
TI-04 新生儿呼吸检测 呼吸30次/分钟 判定为newborn
TI-05 毯子遮挡穿透 毯子覆盖儿童 雷达穿透检测呼吸
TI-06 多目标分离 2个儿童不同座椅 分别检测
TI-07 低功耗测试 IWRL6432对比 <100mW功耗
TI-08 集成IMS系统 CAN接口输出 数据正常传输

5. 参考文献

  1. TI IWR6843AOP Datasheet (2025), Single-Chip 60-64GHz mmWave Sensor AOP
  2. TI mmWave SDK User Guide (2025), Vital Signs Demo Application
  3. TI Video (2026-02-20), Child Presence Detection Using Low-Cost AWRL6432 60GHz mmWave Radar Sensor
  4. TI E2E Forum (2021-01-21), IWR6843: MM Wave Radar for Measuring Vital Parameters

IMS开发启示

优先级排序

优先级 任务 原因
P0(最高) AWR6843AOPEVM评估板测试 快速验证雷达能力
P1(高) vital_signs_demo运行 TI SDK现成Demo
P2(中) FMCW参数优化 呼吸检测精度提升
P3(低) IMS系统集成 CAN接口开发

技术路线判断

  1. 芯片路线: IWR6843AOP(集成天线)优于IWR6843(外接天线)
  2. 功耗路线: IWRL6432(<100mW)适合低功耗场景
  3. 部署路线: AOP简化部署,无需PCB天线设计
  4. 成本路线: TI芯片($30)低于Vayyar($50-80)

下一步行动:

  1. 采购AWR6843AOPEVM评估板(TI官网)
  2. 安装mmWave SDK + CCS开发环境
  3. 运行vital_signs_demo验证呼吸检测
  4. FMCW参数优化(提高呼吸精度)
  5. 集成IMS系统(CAN接口开发)

TI IWR6843AOP 60GHz雷达儿童检测部署指南
https://dapalm.com/2026/07/03/2026-07-03-ti-iwr6843aop-cpd-deployment-guide-zh/
作者
Mars
发布于
2026年7月3日
许可协议