结论:Chrysler、Nissan、Mazda 三家都保留了原车的纵向巡航控制,但横向控制、取消策略与安全模式差异显著,不能抽象成同一套报文插件。Nissan 用后轮速度做安全侧转角限制、驾驶员扭矩按 12 帧平均;Mazda 的最低价速度门用 52/45 km/h 上/下行迟滞并等待 LKAS_BLOCK 清除;Chrysler 的 Ram HD 与 CUSW 被标为 dashcamOnly,CUSW 还使用独立的 chryslerCusw 模式且固件注册仅在 ALLOW_DEBUG。本文为对本地 source/ 与固定版本 opendbc_repo 的静态阅读,未运行测试、未连接实板、未验证任何年款。
Chrysler:多平台 EPS 电机扭矩
CarInterface._get_params() 根据 Pacifica/Jeep、Ram DT、Ram HD、CUSW 选择安全模式与参数;Ram HD、CUSW 标为 dashcamOnly,CUSW 使用独立的 chryslerCusw 模式,其固件注册仅存在于 ALLOW_DEBUG 编译块。此快照中雷达解析接口虽存在,但始终 radarUnavailable=True。EPS 固件/车型还会影响最低转向速度。
CarState.update() 与 update_cusw() 使用不同的状态映射,Ram 的 ACC 状态来自相机总线。CarController.update() 在软件侧按 EPS 测得扭矩限幅,按平台采用最低转向速度迟滞,并在 LKAS 控制位下降后等待一段帧数再重新使能,以避免 EPS 故障。chryslercan.py 里的构帧函数各自编码仪表、转向与巡航按钮,车型报文与 checksum 不能仅靠品牌名复用。
| 层 | 关键入口 | 已核对行为 |
|---|---|---|
| 参数 | CarInterface._get_params() |
按 Pacifica/Jeep、Ram DT、Ram HD、CUSW 选安全模式;Ram HD、CUSW 标 dashcamOnly;CUSW 注册仅 ALLOW_DEBUG |
| 输入 | CarState.update() / update_cusw() |
主流平台与 CUSW 用不同状态映射;Ram 的 ACC 状态来自相机总线 |
| 输出 | CarController.update() |
按 EPS 测得扭矩限幅,采用最低转向速度迟滞,LKAS 位下降后等一段帧数再重新使能 |
| 构帧 | chryslercan.py |
create_lkas_hud()、create_lkas_command()、create_cruise_buttons() 分别编码 |
| 固件 RX/TX | chrysler_rx_hook() / chrysler_tx_hook() / chrysler_init() |
Pacifica/Jeep 与 Ram DT/HD 分别设扭矩、变化率与电机扭矩误差限值;按钮只允许取消或恢复 |
| CUSW 固件 | chrysler_cusw_init() / rx() / tx() |
另套地址、RX 表、扭矩限值与按钮位定义;注释仍记载转向故障待解决 |
验证入口是 Chrysler 与 CUSW 的安全测试以及通用车型接口测试;这三品牌各自目录下尚无独立车型测试套件,本次也未运行。CUSW 即使源码可编译,其安全模式注册也仅存在于调试固件,注释仍记载转向故障待解决,不可视为量产可用。
Nissan:转角控制与车型专属取消
Nissan 侧选择 nissan 安全模式,采用转角控制与原车纵向;Altima 通过安全参数切换 EPS 及相关状态报文总线。此快照中雷达不可用,但不能据此认定原车 ADAS 的内部感知已被软件接管。
CarState.update() 里,Altima 与其他车型的 PT/相机 bus 对调;后轮速度用于安全侧转角限制的原始速度,四轮均值用于平滑估计,驾驶员扭矩按 12 帧平均以避免误报。CarController.update() 先用一阶滤波平滑低速大转角指令,再按速度/实际角度限制目标,驾驶员施力时降低 EPS 可用扭矩上限。
取消策略是 Nissan 最不能包装成通用插件的部分:Rogue/X-Trail/Altima 发送 CRUISE_THROTTLE 取消,Leaf 则用 create_cancel_msg() 把 CANCEL_SEATBELT 置位,让 ProPILOT 将其解释为安全带未系而退出,源码说明会伴随蜂鸣和警告——这是明确的 HMI/安全语义。
| 层 | 关键入口 | 已核对行为 |
|---|---|---|
| 参数 | CarInterface._get_params() |
选 nissan 安全模式、转角控制、原车纵向;Altima 切换 EPS 相关报文总线 |
| 输入 | CarState.update() / get_can_parsers() |
Altima 与其余车型 PT/相机 bus 对调;后轮速度用于安全侧转角限制;驾驶员扭矩按 12 帧平均 |
| 输出 | CarController.update() |
低速大转角先一阶滤波,再按速度/实际角度限幅;驾驶员施力时降低 EPS 可用扭矩上限 |
| Leaf 取消 | create_cancel_msg() |
置 CANCEL_SEATBELT 使 ProPILOT 解释为安全带未系退出,源码说明伴随蜂鸣与警告 |
| 固件 RX/TX | nissan_rx_hook() / nissan_tx_hook() / nissan_init() |
转角幅度与速度相关变化率由固件检查;0x20b 按钮帧只允许取消位;Leaf 0x280 在白名单但无逐位附加约束 |
Nissan 的 RX 表显式忽略 checksum/counter,因此不能声称该路径有独立的报文完整性检验。此外,MCU 的 RX 变体锁定、Altima 总线、0x20B 按钮掩码与 Leaf 0x280 载荷边界都需按具体 DBC 与测试核对,不能只凭品牌推断。
Mazda:扭矩控制与速度迟滞
Mazda 选择 mazda 安全模式与扭矩调校;此快照仅 CX-5 2022、CX-9 2021 不标 dashcamOnly,部分车型有最低转向车速门。CarState.update() 解析四轮速度、原车巡航、踏板、驾驶员/EPS 扭矩及相机 LKAS 状态。
最低速度门使用 52/45 km/h 上/下行迟滞,并等待 LKAS_BLOCK 清除;低速告警与临时转向故障由状态逻辑产生。CarController.update() 按驾驶员扭矩限幅 LKAS,踩刹车后延迟发取消以规避与原车巡航主开关的竞态,停车恢复按间隔发 Resume。mazdacan.py 的构帧函数使用不同来源与计数器,需要保持相机/主总线消息时序。
| 层 | 关键入口 | 已核对行为 |
|---|---|---|
| 参数 | CarInterface._get_params() |
选 mazda 安全模式与扭矩调校;仅 CX-5 2022、CX-9 2021 不标 dashcamOnly |
| 输入 | CarState.update() |
最低速度门用 52/45 km/h 上/下行迟滞,并等待 LKAS_BLOCK 清除 |
| 输出 | CarController.update() |
按驾驶员扭矩限幅 LKAS;踩刹车后延迟发取消;停车恢复按间隔发 Resume |
| 构帧 | mazdacan.py |
create_steering_control()、create_alert_command()、create_button_cmd() 来源与计数器各异 |
| 固件 RX/TX | mazda_rx_hook() / mazda_tx_hook() / mazda_init() |
LKAS 扭矩受最大值、速率、驾驶员反向扭矩约束;未使能时按钮帧只能是取消 |
Mazda 的 RX 表忽略 checksum/counter/质量位,同样不能声称有独立报文完整性检验。
三者共用同一套通用边界:指纹 DBC、CarState、CarController 与 panda 的 RX/TX 钩子,但具体报文与状态各自实现。验证入口包括 Chrysler、CUSW、Nissan、Mazda 各自的 panda 安全测试以及通用车型接口测试;这些测试覆盖按钮、平台扭矩与部分总线变体,本次均未运行。
对硬件与插件化的含义
- 车型契约必须区分 Pacifica/Ram/CUSW、Altima/Leaf、CX-5/CX-9 的报文地址、总线、控制类型、计数器与发布状态,不能只给出
brand和canfd两个字段。 - 调试固件的 Chrysler CUSW 与 Ram HD 路径、Nissan Leaf 的安全带模拟取消、Mazda 的刹车后取消延迟,都应列为需要人机交互与实车故障分析的高风险策略,不开放为通用插件选项。
- 软件限幅、倒车/低速/停用状态和原车辅助系统冲突,必须与 panda 的 TX 白名单和 RX 状态独立核对;缺少 checksum/counter 的 RX 路径还需额外评估错误帧、重放与总线时序失效。
- 目标车型应先做只读采集、DBC/总线回放、错误帧注入、台架与封闭场地验证;本篇不是上车许可。
常见问题
三个品牌能共用一套转向控制插件吗?
不能。三者的报文地址、总线、控制类型(Chrysler 为 EPS 电机扭矩、Nissan 为转角、Mazda 为扭矩)与计数器都不同,且取消策略各异,因此不能抽象成同一套报文插件。
Nissan Leaf 是怎么取消巡航的?
它不用普通取消按钮,而是用 create_cancel_msg() 把 CANCEL_SEATBELT 置位,让 ProPILOT 将其解释为安全带未系而退出,源码说明会伴随蜂鸣和警告,具有明确 HMI/安全语义。
Mazda 的最低转向速度门是多少?
源文档给出的最低速度门使用 52/45 km/h 上/下行迟滞,并等待 LKAS_BLOCK 清除后才允许。该阈值出自源文档,本文未在实车验证。
为什么说这些品牌的 RX 路径没有独立完整性校验?
Nissan 与 Mazda 的 RX 表都显式忽略 checksum/counter(Mazda 还忽略质量位),Chrysler 的 CUSW 也是另套定义。缺少这些字段意味着错误帧、重放与总线时序失效需要额外评估。
延伸阅读
- 同一个「转向灯」在三家车厂是三种实现:车辆状态归一化的坑 —— 品牌差异引发状态映射分歧的同源问题
- 车型协议与 DBC 指纹 —— 车型契约里 DBC 与总线如何被识别
- 从使能到车轮:执行链上的八道门,以及它们各自不保证什么 —— 软件限幅与固件白名单的分层关系
- VW 与 Subaru 的车型适配 —— 同日另一组品牌实现的横向对照
参考资料
- 项目 02 ——
openpilot-research/CHRYSLER_NISSAN_MAZDA_DEEP_DIVE.md(三品牌参数、输入/输出、构帧与固件 RX/TX 对照) - 项目 02 ——
openpilot-research/CHRYSLER_PANDA_SAFETY_MODE_DEEP_DIVE.md(源文档指向的 Chrysler panda 安全函数级专题) - 项目 02 ——
openpilot-research/PANDA_BOARD_DEEP_DIVE.md(源文档指向的板级执行专题)
说明:本文为对固定源码快照的静态结构分析,未运行完整测试套件、未连接硬件、未验证目标车型的真实参数组合。文中所有阈值、行号索引与配置均出自源文档,标注为未验证的结论保留其原有边界。
更新记录
首次发布 2026-10-11 最近核对:2026-10-11