NXP Trimension NCJ29D6 UWB 雷达量产落地 BMW:CPD 儿童检测与数字钥匙的单一系统融合架构

事件背景

2026年8月4日,NXP Semiconductors 宣布其 Trimension NCJ29D6 超宽带(UWB)芯片家族将被 BMW Group 跨车队部署,从 2026 年款车型开始。这是业界首个将**安全测距(Secure Fine Ranging)与短距离雷达(Short-Range Radar)**集成在单一芯片上的汽车级 UWB 解决方案实现量产落地。

核心意义: BMW 成为首个将 UWB 同时用于数字钥匙和座舱儿童存在检测(CPD)的量产 OEM,验证了”一套 UWB 系统多用途”的架构可行性。

要素 详情
芯片型号 NXP Trimension NCJ29D6
量产客户 BMW Group
量产时间 2026 年款车型起
功能覆盖 数字钥匙 Plus(Hands-free Access)、座舱存在检测(CPD/OPD)、入侵警报
协议标准 IEEE 802.15.4 HRP UWB PHY, IEEE 802.15.4z BPRF/HPRF
芯片架构 单片集成(Monolithic):UWB Transceiver + MCU + 安全测距
法规对标 Euro NCAP CPD 协议、中国 NCAP

NCJ29D6 技术架构深度解析

1. 芯片核心规格

参数 规格
技术类型 IR-UWB(脉冲无线电超宽带)
频段 6.5-8 GHz(UWB 全频段)
测距精度 ±10 cm(HPRF 模式)
雷达探测距离 车内全覆盖(约 2-3 米)
集成度 UWB Transceiver + ARM Cortex-M MCU + 硬件安全引擎
封装 QFN,AEC-Q100 Grade 1
接口 SPI、UART、I2C、CAN-FD
安全特性 硬件密码加速(AES、ECC)、安全启动、密钥存储
功耗 低功耗待机模式支持长期泊车状态监测

2. 双功能融合架构

3. UWB CPD 检测原理

NCJ29D6 的 CPD 功能基于 UWB 雷达微动检测,与 60GHz mmWave 雷达有本质区别:

对比维度 UWB 雷达 (NCJ29D6) 60GHz mmWave (TI AWRL6432)
频段 6.5-8 GHz 57-64 GHz
带宽 ~500 MHz ~7 GHz
穿透性 强(穿透座椅、内饰板) 中等(受厚重遮挡影响)
空间分辨率 ~10 cm ~2 cm
微动检测 呼吸/心跳(胸腔微振动) 呼吸/心跳 + 精细运动
成本 中等($3-5/节点) 低($2-3/节点)
部署数量 1-2 个节点/车 1-3 个节点/车
法规 Euro NCAP CPD 兼容 Euro NCAP CPD 兼容
附加功能 数字钥匙、入侵警报 生命体征、手势识别

UWB CPD 的核心算法流程:

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
"""
NXP NCJ29D6 UWB CPD Detection Algorithm Pipeline
基于 NXP 白皮书与 IEEE 802.15.4z 标准
"""

import numpy as np
from scipy import signal as sig
from typing import Tuple

class UWBCPD_Detector:
"""
UWB 儿童存在检测器

核心原理:
1. 发射 UWB 脉冲(~2ns 宽度),接收反射信号
2. 对反射信号做距离-多普勒分析
3. 提取微动信号(呼吸频率 0.1-0.5 Hz, 心跳 0.8-2.0 Hz)
4. 与环境基线对比,判定是否有人/动物

参考:NXP White Paper "UWB Radar for Child Presence Detection"
"""

def __init__(self, config: dict):
# UWB 参数
self.fc = config.get('center_freq', 7.0e9) # 7 GHz 中心频率
self.bw = config.get('bandwidth', 500e6) # 500 MHz 带宽
self.pulse_width = 1 / self.bw # ~2 ns
self.sample_rate = config.get('sample_rate', 1e9) # 1 GS/s
self.range_resolution = 3e8 / (2 * self.bw) # ~0.3 m

# 检测参数
self.breath_range = (0.1, 0.5) # 呼吸频率 Hz
self.heart_range = (0.8, 2.0) # 心跳频率 Hz
self.detection_threshold = config.get('threshold', 0.35)
self.history_frames = config.get('history', 300) # 30s @ 10fps

def generate_uwb_pulse(self, n_samples: int = 256) -> np.ndarray:
"""生成 UWB 发射脉冲"""
t = np.arange(n_samples) / self.sample_rate
# Gaussian pulse (5th derivative, 符合 FCC 频谱模板)
pulse = np.zeros(n_samples)
sigma = self.pulse_width / (2 * np.sqrt(2 * np.log(2)))
center = n_samples // 2
x = (t - t[center]) / sigma
pulse = x * (4 * x**4 - 12 * x**2 + 3) * np.exp(-x**2)
return pulse / np.max(np.abs(pulse))

def range_profile(self, rx_signal: np.ndarray, tx_pulse: np.ndarray) -> np.ndarray:
"""
距离剖面估计(匹配滤波)

Args:
rx_signal: 接收信号, shape=(N,)
tx_pulse: 发射脉冲, shape=(M,)

Returns:
range_profile: 距离剖面, shape=(N-M+1,)
"""
# 匹配滤波(互相关)
range_prof = np.correlate(rx_signal, tx_pulse, mode='full')
range_prof = range_prof[len(tx_pulse)-1:]

# 取包络
analytic = sig.hilbert(range_prof)
envelope = np.abs(analytic)

return envelope

def extract_micro_motion(self, range_profiles: np.ndarray,
target_range_bin: int) -> np.ndarray:
"""
从距离剖面序列中提取微动信号

Args:
range_profiles: 距离剖面序列, shape=(T, N_range)
target_range_bin: 目标距离单元索引

Returns:
micro_motion: 微动信号时序, shape=(T,)
"""
# 提取目标距离单元的相位变化
phase_series = np.angle(range_profiles[:, target_range_bin])

# 相位差分(消除静态杂波)
phase_diff = np.diff(phase_series)
# 处理相位跳变
phase_diff = np.mod(phase_diff + np.pi, 2 * np.pi) - np.pi

# 带通滤波:提取呼吸和心跳频段
nyquist = 0.5 * 10 # 假设 10 Hz 帧率
bp_breath = sig.butter(2,
[self.breath_range[0]/nyquist,
self.breath_range[1]/nyquist],
btype='band')
breath_signal = sig.filtfilt(*bp_breath, phase_diff)

return breath_signal

def detect_presence(self, micro_motion: np.ndarray,
baseline_noise: float) -> Tuple[bool, float]:
"""
判定座舱内是否存在生命体

Args:
micro_motion: 微动信号时序
baseline_noise: 环境基线噪声水平

Returns:
is_present: 是否检测到存在
confidence: 置信度 0-1
"""
# 频谱分析
freqs = np.fft.rfftfreq(len(micro_motion), d=0.1) # 10 Hz 帧率
spectrum = np.abs(np.fft.rfft(micro_motion))

# 在呼吸频段寻找峰值
breath_mask = (freqs >= self.breath_range[0]) & (freqs <= self.breath_range[1])
breath_power = np.sum(spectrum[breath_mask])

# 在心跳频段寻找峰值
heart_mask = (freqs >= self.heart_range[0]) & (freqs <= self.heart_range[1])
heart_power = np.sum(spectrum[heart_mask])

# 总微动能量
total_power = breath_power + 0.5 * heart_power

# 信噪比判定
snr = total_power / (baseline_noise + 1e-10)
is_present = snr > self.detection_threshold
confidence = min(1.0, snr / (self.detection_threshold * 2))

return is_present, confidence


# 测试代码
if __name__ == "__main__":
detector = UWBCPD_Detector({'threshold': 0.35, 'sample_rate': 1e9})

# 模拟 UWB 脉冲
tx = detector.generate_uwb_pulse(256)
print(f"UWB Pulse: {len(tx)} samples, peak={np.max(tx):.3f}")
print(f"Range Resolution: {detector.range_resolution*100:.1f} cm")

# 模拟微动信号(呼吸 0.3 Hz + 心跳 1.2 Hz + 噪声)
t = np.arange(300) * 0.1 # 30 秒
breath = 0.5 * np.sin(2 * np.pi * 0.3 * t)
heart = 0.2 * np.sin(2 * np.pi * 1.2 * t)
noise = 0.1 * np.random.randn(300)
micro_motion = breath + heart + noise

# 检测
is_present, conf = detector.detect_presence(micro_motion, baseline_noise=0.01)
print(f"Presence Detected: {is_present}")
print(f"Confidence: {conf:.2%}")

# 空座模拟
empty_motion = 0.05 * np.random.randn(300)
is_present2, conf2 = detector.detect_presence(empty_motion, baseline_noise=0.01)
print(f"Empty Cabin Detected: {is_present2} (should be False)")
print(f"Empty Confidence: {conf2:.2%}")

4. BMW 量产部署架构

部署关键参数:

参数 BMW 部署规格(推测)
车外锚点数 2-4 个(B柱 + 后保险杠)
车内锚点数 1-2 个(车顶 + 后排)
UWB 芯片总数 3-6 个 NCJ29D6
CPD 监测范围 前排 + 后排 + 后备箱
CPD 触发条件 引擎关闭 + 车门锁止 + 超过 60 秒
CPD 通知方式 BMW App 推送 + 车灯/喇叭警报
测距精度 ±10 cm(数字钥匙)
CPD 检测延迟 < 30 秒(从锁车到首次判定)

Euro NCAP CPD 协议对标

Euro NCAP 2026 CPD 要求

测试场景 要求 NCJ29D6 能力
新生儿(0-6月)躺在后排座椅 检测并发出警告 ✅ UWB 微动检测呼吸
18个月幼儿在儿童座椅中 检测并发出警告 ✅
3岁儿童在后排 检测并发出警告 ✅
宠物(猫/狗)在后排或后备箱 检测并发出警告 ✅
成人坐在后排(被遗忘乘客) 检测并发出警告 ✅
车内温度 > 40°C 加速警告(< 10 秒) ✅ 与温度传感器联动
所有门窗关闭 + 遮阳帘关闭 仍可检测 ✅ UWB 穿透性强
太阳直射 + 高温环境 误报率 < 5% ✅ 自适应基线

与竞品方案对比

方案 供应商 芯片成本/车 检测能力 附加功能 量产状态
UWB NXP NCJ29D6 $15-25(3-5个节点) 呼吸/心跳微动 数字钥匙+入侵警报+踢脚 ✅ BMW 量产
60GHz mmWave TI AWRL6432 $6-12(2-3个节点) 微动+生命体征 生命体征+手势 ✅ 多 OEM 量产
60GHz mmWave Calterah CAl4432 $4-8(2个节点) 微动+运动 国产替代方案 ⚠️ 2026 量产
4D mmWave Infineon BGT60ATR24 $8-15 高精度微动 手势+存在检测 ⚠️ 样品阶段
UWB(纯雷达) NXP SR040 $3-5/节点 纯存在检测 无 ✅ 量产

IMS 开发启示

1. 架构选型建议

2. 开发优先级排序

优先级 开发任务 依赖 工时(人月)
P0 UWB CPD 算法开发(微动检测+呼吸提取) NCJ29D6 开发板 3
P0 60GHz mmWave CPD 算法开发(对比基线) AWRL6432 BOOST 板 2
P1 多节点融合策略(3+ 节点数据合并) 算法框架 2
P1 CAN-FD 通信层(与车身控制器集成) 车辆网络规范 1
P2 云端通知服务(APP 推送 API) 云平台 1
P2 环境自适应基线(季节/温度补偿) 数据采集 2
P3 入侵警报功能扩展 UWB 基础平台 1

3. 测试验证方案

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
### CPD-TI-01 基础呼吸检测测试

**前置条件:**
- NCJ29D6 开发板部署在模拟座舱内
- 目标人物坐在后排座椅,正常呼吸
- 车窗关闭,环境温度 22±5°C

**测试步骤:**
1. 引擎关闭,车门关闭
2. 开启 CPD 监测模式
3. 目标保持静止 60 秒(正常呼吸)
4. 记录 UWB 回波数据和算法输出

**判定条件:**
| 检测项 | 通过 | 失败 |
|--------|------|------|
| 检测延迟 | ≤30 秒 | >30 秒 |
| 置信度 | ≥80% | <80% |
| 误报率 | 0/10 次 | ≥1/10 次 |

### CPD-TI-02 多场景覆盖测试
- 新生儿模型(0-6月)→ 通过率 ≥90%
- 幼儿儿童座椅 → 通过率 ≥95%
- 成人后排 → 通过率 ≥99%
- 宠物(5kg+)→ 通过率 ≥85%
- 空座 → 误报率 ≤5%

4. 与现有 IMS 系统集成

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
"""
IMS CPD 模块集成接口
将 UWB/毫米波 CPD 检测结果接入 IMS 主控
"""

from dataclasses import dataclass, field
from enum import Enum
from typing import Optional, List
import time

class CPD_SensorType(Enum):
UWB = "NXP_NCJ29D6"
MMWAVE_60G = "TI_AWRL6432"
MMWAVE_4D = "Infineon_BGT60"

class CPD_AlertLevel(Enum):
NONE = 0
INFO = 1 # 检测到可能存在
WARNING = 2 # 确认存在,温度正常
CRITICAL = 3 # 存在 + 高温风险

@dataclass
class CPD_DetectionResult:
sensor_type: CPD_SensorType
node_id: str # 节点标识(如 "roof", "rear_left")
is_present: bool
confidence: float # 0-1
breath_rate: Optional[float] # Hz, None if not detected
heart_rate: Optional[float] # Hz
timestamp: float
cabin_temp: Optional[float] # 摄氏度
alert_level: CPD_AlertLevel = CPD_AlertLevel.NONE

@dataclass
class CPD_FusionResult:
is_present: bool
confidence: float
alert_level: CPD_AlertLevel
source_results: List[CPD_DetectionResult] = field(default_factory=list)
detection_latency_ms: int = 0

class CPD_FusionManager:
"""多节点 CPD 数据融合"""

def __init__(self, nodes: List[str]):
self.nodes = nodes
self.results_buffer = {} # node_id -> List[CPD_DetectionResult]

def update(self, result: CPD_DetectionResult):
"""更新某节点检测结果"""
if result.node_id not in self.results_buffer:
self.results_buffer[result.node_id] = []
self.results_buffer[result.node_id].append(result)

def fuse(self) -> CPD_FusionResult:
"""
融合多节点检测结果
策略:任一节点检测到即触发,多节点一致提升置信度
"""
positive_nodes = 0
max_confidence = 0
max_alert = CPD_AlertLevel.NONE

for node_id, results in self.results_buffer.items():
if not results:
continue
latest = results[-1]
if latest.is_present:
positive_nodes += 1
max_confidence = max(max_confidence, latest.confidence)
if latest.alert_level.value > max_alert.value:
max_alert = latest.alert_level

# 多节点一致性加权
total_nodes = len(self.results_buffer)
consensus_weight = positive_nodes / max(total_nodes, 1)
fused_confidence = max_confidence * (0.5 + 0.5 * consensus_weight)

is_present = positive_nodes > 0 and fused_confidence > 0.5

return CPD_FusionResult(
is_present=is_present,
confidence=fused_confidence,
alert_level=max_alert if is_present else CPD_AlertLevel.NONE,
detection_latency_ms=30,
)


# 测试
if __name__ == "__main__":
fusion = CPD_FusionManager(["roof", "rear_left", "rear_right"])

# 模拟三个节点检测
fusion.update(CPD_DetectionResult(
sensor_type=CPD_SensorType.UWB,
node_id="roof",
is_present=True,
confidence=0.85,
breath_rate=0.3,
heart_rate=1.2,
timestamp=time.time(),
cabin_temp=35.0,
alert_level=CPD_AlertLevel.WARNING,
))

fusion.update(CPD_DetectionResult(
sensor_type=CPD_SensorType.UWB,
node_id="rear_left",
is_present=True,
confidence=0.72,
breath_rate=0.28,
heart_rate=None,
timestamp=time.time(),
cabin_temp=35.0,
alert_level=CPD_AlertLevel.WARNING,
))

fusion.update(CPD_DetectionResult(
sensor_type=CPD_SensorType.UWB,
node_id="rear_right",
is_present=False,
confidence=0.15,
breath_rate=None,
heart_rate=None,
timestamp=time.time(),
cabin_temp=35.0,
alert_level=CPD_AlertLevel.NONE,
))

result = fusion.fuse()
print(f"Present: {result.is_present}")
print(f"Confidence: {result.confidence:.2%}")
print(f"Alert Level: {result.alert_level.name}")

行业影响与趋势判断

1. UWB CPD 走向主流

BMW 的量产验证标志着 UWB CPD 从”概念展示”进入”量产落地”阶段。关键趋势:

时间 里程碑
2023 NXP 发布 NCJ29D6,首批样品
2025 BMW 开始车型集成开发
2026 H2 BMW 首批车型量产交付
2027 预计 中国 OEM 跟进(蔚来/小鹏/理想)
2028 预计 UWB CPD 成为 15 万以上车型标配

2. 成本下降路径

阶段 UWB 芯片成本/节点 全车 CPD 系统成本
2026(初期量产) $5-8 $20-40
2027(规模上量) $3-5 $12-25
2028(国产替代) $2-3 $8-15

3. 对 IMS 开发的直接建议

  1. 立即启动 UWB CPD 预研:采购 NCJ29D6 评估板(AWRL6432BOOST + NCJ29D6DB),对比两种技术路线
  2. 算法团队并行开发:UWB 微动检测算法 + 60GHz mmWave 算法,3 个月内出 Demo
  3. 集成架构预留:IMS 5.0 架构中预留 CPD 模块接口(CAN-FD + 云端通知 API)
  4. 数据采集先行:建立 CPD 测试场景库(新生儿模型 + 儿童座椅 + 宠物),至少 200 组测试数据
  5. 法规跟踪:密切跟踪 Euro NCAP 2026 CPD 协议最终版 + 中国 NCAP CPD 要求

参考资料

  1. NXP Semiconductors, “Trimension NCJ29D6 Product Page”, https://www.nxp.com/products/NCJ29D6
  2. NXP Semiconductors, “UWB Radar for Child Presence Detection White Paper”, https://www.nxp.com/docs/en/white-paper/RADAR-CHILD-DETECTION-WP.pdf
  3. NXP & BMW Group Press Release, “NXP Trimension Ultra-Wideband Powers BMW Group’s Digital Key Plus and Presence Detection”, 2026-08-04
  4. IEEE 802.15.4z-2020 Standard, “IEEE Standard for Low-Rate Wireless Networks—Amendment 1: Enhanced Ultra Wideband (UWB) Physical Layers (PHYs) and Associated Ranging Techniques”
  5. Euro NCAP, “Child Presence Detection Protocol v1.0”, 2026 Protocol
  6. TI AWRL6432 Product Page, https://www.ti.com/product/AWRL6432
  7. NXP NCJ29D6 Fact Sheet, https://www.nxp.com/docs/en/fact-sheet/NCJ29D6UWBFS.pdf