ARTICLE DETAIL

资讯详情

深耕编程入门与网站建设的一线实战洞察。

车规级CAN-LIN网关OTA刷写升级方案设计与实操

车规级CAN-LIN网关OTA刷写升级方案设计与实操 1. 项目概述为什么一个车规级网关的刷写升级方案值得拆到螺丝级CAN-LIN网关不是一块简单的“翻译器”它是整车电子电气架构里最敏感的神经节——一边连着高速、高可靠性的CAN总线比如发动机控制单元ECU、ABS模块一边挂着低速、低成本的LIN总线比如车窗升降器、座椅调节电机、雨刮器、后视镜折叠模块。当你要给这些LIN从机做OTA升级问题就来了CAN主节点通常是网关或诊断仪发出来的升级指令怎么精准、可靠、不丢帧地“翻译”成LIN从机听得懂的语言又怎么确保升级过程中哪怕掉一帧数据整台车都不会变砖这不是写个串口转发脚本就能搞定的事它牵扯到协议栈时序精度、Flash擦写容错、校验机制设计、Bootloader跳转逻辑、以及最关键的——诊断会话管理与安全访问流程。我做过7个量产车型的网关级OTA落地最深的体会是90%的刷写失败根本不是硬件问题而是诊断协议层和传输层之间的“语义断层”没对齐。比如你用UDS协议在CAN上发了0x31服务请求下载网关内部必须严格按ISO 14229-1解析再转换成LIN上的0x31服务帧而LIN从机的Bootloader又必须能识别这个转换后的帧并在正确的时间窗口内响应——中间任何一个环节的时序偏差超过50μs整个升级链就卡死。更麻烦的是LIN总线本身没有重传机制一帧丢了就得靠上层重发但重发又不能破坏UDS会话状态。所以这个方案的核心从来不是“能不能通”而是“在多恶劣的电磁干扰下、多高的总线负载下、多长的线束衰减下依然能稳稳跑完200KB固件的完整刷写流程”。关键词里的“CAN”“LIN”“网关”“刷写升级”“OTA”每一个都不是孤立概念。CAN是骨架LIN是末梢神经网关是脊髓反射中枢刷写升级是动作指令OTA是交付通道。它们咬合在一起构成一个闭环的车规级可靠性系统。这篇文章不讲理论堆砌只讲我在实车标定现场、产线EOL工位、售后远程升级后台踩过的坑、调过的参数、验证过的边界条件。如果你正在做BCM、座椅控制器、空调面板这类带LIN接口的ECU开发或者负责整车OTA策略设计这篇就是你该打印出来贴在工位上的操作手册。2. 整体架构设计与核心思路拆解三层解耦四重保险2.1 为什么不能用“CAN转LIN透传”这种懒人方案很多工程师第一反应是既然CAN和LIN都是串行总线找个MCU把CAN报文ID映射成LIN报文ID数据字段原样搬过去不就行了我试过也帮客户救过三次火结果全是“升级中途失败LIN从机进入Bootloader但卡死”。根本原因在于透传方案完全忽略了诊断协议的状态机约束。举个真实案例某车型座椅控制模块LIN从机升级时网关收到CAN上的0x10Diagnostic Session Control服务请求直接透传为LIN上的0x10帧。但LIN从机Bootloader要求必须先收到0x27Security Access服务并完成Seed-Key认证才能接受0x10切换到Programming Session。而透传网关根本不管这个依赖关系导致LIN从机收到0x10后直接返回NRC 0x7Fservice not supported整个流程崩盘。所以我们的架构必须是协议感知型Protocol-Aware而不是协议盲Protocol-Agnostic。整个系统分三层诊断管理层Diag Manager运行在网关主MCU如S32K144负责解析CAN侧UDS报文维护完整的诊断会话状态机Default/Extended/Programming Session、安全访问状态、通信控制开关。它不碰LIN物理层只输出“逻辑指令”。协议转换层Protocol Translator独立任务或协程接收诊断管理层的指令如“向Node ID 0x0A发送0x31服务子功能0x01数据长度0x1000”查表生成符合LIN 2.2A规范的帧结构Sync Break Sync Field PID Data Checksum并注入精确的帧间间隔Inter-Frame Space和响应超时Response Timeout。LIN物理驱动层LIN PHY Driver由MCU内置LIN模块如S32K144的LPUARTLIN功能或外置LIN收发器如TJA1020实现严格遵循LIN总线电气特性20kbit/s标称速率、±1.5%波特率容差、同步场边沿抖动5%并处理底层中断、错误标志如Sync Error、Checksum Error、自动重传仅限Master发送失败时。这三层之间用环形缓冲区信号量同步避免阻塞。诊断管理层每秒最多处理2个UDS请求防DoS协议转换层最大并发处理3个LIN节点指令防总线拥塞物理驱动层采用DMA双缓冲确保帧发送零CPU占用。2.2 四重保险机制让刷写过程像高铁调度一样可靠车规级OTA最怕什么不是慢是不可预测的失败。我们设计了四重保险会话级心跳监护Session-Level Heartbeat网关在Programming Session激活后每500ms向LIN从机发送一次0x3ETester Present服务。如果连续3次未收到响应则主动退出Session并上报错误码。这个心跳不是简单ping而是带UDS标准响应格式的完整帧能同时验证LIN从机Bootloader是否存活、CAN-LIN通道是否通畅、诊断协议栈是否正常。块级CRC校验与重传Block-Level CRC RetryUDS 0x36Request Download服务定义的“最大块长度”不是随便填的。我们实测发现LIN总线在12m线束8个节点负载下单帧最大有效载荷为8字节含PID和Checksum。因此将固件切分为8字节/块每块发送后等待0x76Transfer Response响应。若超时默认100ms或收到NRC 0x78request correctly received-response pending则启动重传最多3次。第3次失败则终止升级触发回滚。Flash擦写原子性保护Atomic Flash EraseLIN从机Bootloader绝不允许“擦一半写一半”。我们强制要求每次擦除操作前先校验目标扇区是否全0xFF擦除后立即读回验证只有100%擦净才允许写入。擦除单位不是整个扇区而是按页Page通常256字节分步执行并在RAM中缓存校验结果。这样即使断电也能保证已擦区域可恢复。双Bank固件存储Dual-Bank Firmware StorageLIN从机Flash划分为Bank A当前运行区和Bank B升级区。升级时所有新固件写入Bank B校验通过后Bootloader修改启动指针通常改写Option Bytes或特定地址的跳转向量。如果新固件启动失败下次上电自动回退到Bank A。这个机制让“升级变砖”概率趋近于零——因为旧固件始终完好。提示双Bank方案对Flash容量有硬性要求。以8KB Bootloader 64KB App为例至少需要144KB FlashBank A: 72KB, Bank B: 72KB。很多国产车规MCU如GD32A103Flash仅128KB必须精简Bootloader或启用压缩算法。2.3 为什么选S32K144做网关主控成本、生态与车规认证的三角平衡网关主控芯片选型是方案成败的第一道门槛。我们对比过NXP S32K144、Infineon TC377、ST SPY32F767、Renesas RH850/U2A最终锁定S32K144理由很实在车规认证完备性S32K144通过AEC-Q100 Grade 1-40℃~125℃且NXP提供全套AUTOSAR MCAL驱动包括LIN 2.2A兼容的LPUART驱动无需自己啃寄存器手册。而TC377虽然性能强但LIN驱动需自行开发量产周期多3个月。LIN硬件加速能力S32K144的LPUART模块支持LIN Master模式下的自动Break检测、Sync Field生成、PID计算、Checksum校验CPU只需配置寄存器发送/接收全程DMA搬运。实测发送100帧LIN数据CPU占用率2%而软件模拟LIN如用普通UARTGPIO模拟BreakCPU占用率达45%且时序抖动超标。成本敏感度S32K144单价约¥18千片价比TC377¥35低48%比RH850¥60低70%。对于年装车量50万的车型单台BOM成本节省¥9整年就是¥4500万——这笔钱够建两条EOL刷写产线。工具链成熟度S32DS IDE S32 Configuration Tool支持图形化配置LIN波特率、节点ID、Checksum类型Enhanced/Classic自动生成初始化代码。而RH850的DAVE工具链学习曲线陡峭一个LIN配置错误要调试2天。当然S32K144也有短板Flash仅512KBRAM仅128KB。所以我们做了两项关键优化一是将诊断协议栈UDS编译为位置无关代码PIC加载到RAM执行释放Flash空间二是用LPUART的FIFO深度16字节做协议转换层的缓冲避免大块数据堆积。3. 核心细节解析与实操要点从LIN帧格式到UDS服务映射3.1 LIN帧结构拆解为什么Checksum算错一比特整个升级就失败LIN帧不是CAN帧的简化版它有自己严格的时序和校验逻辑。一个标准LIN帧包含5个部分字段长度说明实操陷阱Sync Break≥13 bit低电平持续时间必须≥13 bit按标称波特率20kbit/s计即≥650μs很多工程师用GPIO模拟但GPIO翻转延迟IO驱动能力不足导致Break宽度不稳定。必须用LPUART硬件Break生成Sync Field8 bit固定值0x55用于从机同步采样点从机采样点必须落在Sync Field第5~6 bit中间。若总线干扰导致Sync Field误判后续全帧错位PID (Protected Identifier)6 bit ID 2 bit ParityID范围0x00~0x3FParity按ISO 17987-1计算P0ID0⊕ID1⊕ID2⊕ID4, P1¬(ID1⊕ID3⊕ID4⊕ID5)Parity算错会导致从机拒绝接收。我们用查表法预计算所有64个PID的Parity存ROM中避免实时计算引入误差Data Field1~8 byteUDS服务数据载荷如0x31服务的数据域包含Sub-function、Memory Address、Length等数据长度必须与UDS服务定义严格一致。例如0x27服务Seed数据必须是2字节填3字节则从机返回NRC 0x13incorrect message lengthChecksum1 byteClassic Checksum0xFF - ΣData或Enhanced ChecksumΣ(PIDData)必须与从机Bootloader约定一致。某项目因网关用Classic、从机用Enhanced刷写时Checksum全错耗时2天排查注意LIN 2.2A标准规定Master发送帧后Slave必须在Response Space130~250μs内拉低总线响应。这个窗口极窄要求从机Bootloader的中断响应延迟50μs。我们实测发现STM32G070在关闭所有中断、仅保留LIN中断时响应延迟为32μs而ESP32-WROVER在同样条件下为87μs直接淘汰。3.2 UDS服务到LIN帧的精准映射一张表解决90%的协议转换问题网关的核心价值在于“理解语义”而非“搬运字节”。我们制作了UDS服务到LIN帧的映射表覆盖刷写升级全流程UDS ServiceCAN Request ExampleLIN Frame PIDData Field Content关键约束0x10 Diagnostic Session Control0x10 0x020x30Sub-function0x02 (Programming Session)必须在Security Access之后发送否则从机返回NRC 0x7F0x27 Security Access0x27 0x010x31Seed值2字节Seed必须由从机随机生成网关不能缓存。某项目因网关复用Seed被黑客破解Key0x27 Security Access0x27 0x02 Key0x31Key值2字节Key Seed × 0x1234 0x5678模0x10000必须与从机算法100%一致0x31 Routine Control0x31 0x01 0x00 0x000x32Sub-function0x01, Routine ID0x0000 (Erase Memory)Erase前必须校验Memory Address Range是否合法否则从机返回NRC 0x31 (request out of range)0x34 Request Download0x34 0x00 0x44 0x00 0x00 0x00 0x00 0x10 0x000x33Data Format0x00, Memory Address0x00000000, Length0x00001000Length必须是8字节对齐否则从机拒绝0x36 Transfer Data0x36 0x00 0x00 ... (8字节数据)0x34Block Sequence Counter 7字节数据Sequence Counter从0x00开始每帧1溢出回0。从机严格校验连续性0x37 Request Transfer Exit0x370x35无数据必须在所有Transfer Data完成后发送否则从机不执行校验这张表不是静态的而是动态加载的。网关启动时从Flash读取当前车型的LIN节点配置文件JSON格式解析出每个节点的PID分配、Checksum类型、安全算法密钥等再初始化映射表。这样同一套网关固件换配置文件就能适配不同车型。3.3 Bootloader跳转逻辑如何让LIN从机在刷完固件后“优雅重启”刷写完成不等于升级成功关键在跳转。LIN从机Bootloader的跳转流程必须满足三个条件原子性、可逆性、确定性。我们采用“三阶段跳转法”阶段一校验与标记Verification Flag Set所有固件块写入Bank B后Bootloader逐页读取并计算SHA256摘要与CAN侧下发的摘要比对。一致则在Bank B首地址写入Magic Number0xDEADBEEF和版本号不一致则清空Bank B返回NRC 0x72upload download not accepted。阶段二启动指针切换Vector Table Relocation不是简单改写复位向量而是修改SCB-VTOR寄存器Vector Table Offset Register。S32K144的VTOR支持动态切换将中断向量表基址指向Bank B的起始地址。这样CPU复位后第一条指令就从Bank B执行而非Bank A。阶段三软复位与状态确认Software Reset Status Check调用SCB-AIRCR寄存器触发系统复位SYSRESETREQ。但复位前Bootloader在RAM中设置一个Flag如0x20000000 0x01表示“本次复位是升级后跳转”。新固件启动时先读此Flag若为0x01则清除Flag并上报“Upgrade Success”事件若为0x00则按正常流程启动。实操心得很多项目跳转后黑屏查到最后是VTOR没对齐。ARM Cortex-M4要求VTOR必须是256字节对齐而Bank B起始地址可能不是256倍数。我们的解决方案是在Bank B前预留256字节Header区Header首地址即为VTOR目标值实际App代码从Header256开始存放。4. 实操过程与核心环节实现从网关固件编译到实车刷写验证4.1 网关固件开发环境搭建S32DS AUTOSAR MCAL的最小可行配置开发环境不是越复杂越好关键是稳定、可复现。我们用S32DS 3.4基于Eclipse S32K144 SDK 3.0.0只启用必要组件MCAL Layer只勾选Lpuart,Gpt,Intc,Port四个驱动。Lpuart配置为LIN Master模式波特率20000Break Length13 bitChecksum TypeEnhanced。BSW Layer禁用全部COM、PduR模块手写轻量级诊断协议栈约2000行C代码支持UDS 0x10/0x27/0x31/0x34/0x36/0x37服务。Application LayerDiagManager任务优先级5、LinTranslator任务优先级4、LinPhyDriverISR优先级3用FreeRTOS信号量同步。编译选项关键参数# 优化等级-O2禁用浮点运算-mfloat-abisoft # 启用链接时优化-flto减少代码体积 # Flash起始地址0x00000000大小512KB # RAM起始地址0x20000000大小128KB # Bootloader区0x00000000~0x00007FFF32KB # Application区0x00008000~0x0007FFFF480KB烧录用J-Link Commander命令脚本# erase and program JLinkExe -Device S32K144 -If SWD -Speed 4000 -CommandFile flash.jlink # flash.jlink内容 r h loadfile gateway_app.srec 0x00008000 loadfile gateway_boot.srec 0x00000000 r q提示S32K144的Flash编程电压必须≥2.7V。实车测试时若电池电压低于11.5V对应MCU供电约2.6V编程会失败且不报错。我们在Bootloader中加入电压监测低于阈值直接返回NRC 0x33voltage too high or too low。4.2 LIN从机Bootloader开发STM32G070的极致精简实践LIN从机选STM32G070CBT632KB Flash16KB RAM成本¥3.2满足AEC-Q100 Grade 2。Bootloader代码控制在8KB以内关键设计内存布局0x08000000 ~ 0x08001FFF : Bootloader (8KB) 0x08002000 ~ 0x08009FFF : Bank A (App, 32KB) 0x0800A000 ~ 0x08011FFF : Bank B (Upgrade, 32KB)LIN驱动用HAL库HAL_LIN_Receive_IT()接收但关闭所有非必要中断只留LIN中断中断服务函数内只做两件事① 将接收到的字节存入Ring Buffer② 设置rx_complete_flag 1。主循环轮询flag再解析LIN帧。UDS服务精简只实现6个服务0x10/0x27/0x31/0x34/0x36/0x37删除所有扩展服务如0x22 Read Data by ID。0x27安全算法用查表法256字节ROM表避免乘除运算。Flash擦写用HAL_FLASHEx_Erase()按页擦除每次擦一页256字节后用HAL_FLASH_Read()读回验证。实测单页擦除验证耗时≈120ms。编译用STM32CubeIDE优化选项-O2 -mthumb -mcpucortex-m0plus最终Bin文件大小7.8KB。4.3 实车刷写全流程验证从实验室到产线的三级测试法方案再完美不经过实车验证就是纸上谈兵。我们采用三级验证一级HIL台架测试Hardware-in-the-Loop用dSPACE SCALEXIO模拟CAN总线发送标准UDS刷写序列Vector CANoe脚本LIN侧接示波器抓波形。重点验证Sync Break宽度实测652μs标称650μs抖动±3μs合格。帧间间隔150μs从机响应时间128μs余量22μs合格。错误注入人为制造Checksum错误验证从机返回NRC 0x31网关重传3次后终止。二级实车静态测试Vehicle Static Test车辆静止点火开关ON用VCDS诊断仪连接OBD口执行刷写。监控网关LIN输出用PicoScope看LIN波形确认PID、Data、Checksum全正确。从机行为用逻辑分析仪抓LIN从机GPIO如LED指示灯验证Erase、Write、Verify各阶段LED闪烁模式。总线负载用CANalyzer看CAN总线负载率刷写期间≤15%不影响其他ECU。三级产线EOL刷写End-of-Line在总装线最后工位用定制刷写工装含CAN/LIN转接头、电源稳压模块批量刷写。关键指标单台刷写时间≤180秒含Erase 60s Write 90s Verify 30s。一次成功率≥99.97%1000台中最多3台失败均为电池电压不足导致。刷写后功能验证自动执行座椅记忆、车窗一键升降、后视镜折叠等用例全部通过。实操心得产线刷写最大的坑是“接触不良”。我们要求工装接头必须用镀金Pin线缆屏蔽层360°接地且每次刷写前自动检测CAN/LIN终端电阻120Ω±5%。曾有个批次LIN接头镀层薄刷写失败率飙升至12%换供应商后归零。5. 常见问题与排查技巧实录那些让你凌晨三点还在车间的Bug5.1 典型问题速查表按现象反推根因现象可能根因排查步骤解决方案网关收到CAN 0x34请求但LIN侧无任何波形输出LPUART未使能、LIN引脚配置错误、Break生成失败① 用万用表测LIN TX引脚电压应为12V休眠态0V活动态② 查S32K144 LPUART寄存器LPUARTx_BAUD[TDMA]是否置1③ 示波器抓TX引脚看是否有Break脉冲检查Pinmux配置确认LPUARTx_TX引脚映射到正确GPIO在S32DS中重新生成Pin Configuration代码LIN从机收到帧但返回NRC 0x7Fservice not supportedPID映射错误、Security Access未完成、Session未激活① 用示波器抓LIN波形确认PID值② 查网关日志看是否发送了0x27服务③ 抓CAN侧确认0x10服务是否在0x27之后严格按UDS状态机顺序发送0x27→0x27→0x10→0x31→0x34→...检查LIN从机Bootloader是否支持对应PID刷写到50%卡住网关反复重传同一块LIN从机Checksum校验失败、Flash写入失败、RAM缓冲区溢出① 抓LIN波形看Data Field是否与CAN侧一致② 用ST-Link读LIN从机RAM看接收缓冲区是否满③ 检查Flash写保护位是否解锁在LIN从机Bootloader中增加Debug UART输出打印每帧接收结果增大RAM缓冲区至256字节刷写成功但重启后黑屏无法进入AppVTOR未对齐、向量表校验失败、Bank B首地址无有效代码① 用J-Link读Flash确认Bank B首地址是否为0x0800A000② 查Bank B首4字节是否为Stack Pointer值③ 用J-Link单步调试看复位后PC是否跳转到Bank B确保Bank B起始地址256字节对齐在S32DS Linker Script中强制指定.isr_vector段起始地址5.2 独家避坑技巧来自产线工程师的血泪经验技巧1LIN波形“毛刺”不是干扰是你的Break宽度不够很多工程师看到LIN波形上有毛刺第一反应是加磁环、换线缆。其实90%的情况是Break宽度不足。标准要求≥13 bit但实车线束衰减后接收端看到的Break可能只有11 bit。解决方案在S32K144 LPUART配置中将Break Length设为15 bit而非13留出2 bit余量。实测某车型线束长15m13 bit Break失败率42%15 bit后降为0。技巧2不要信“从机响应时间”要测“从机响应窗口”文档说从机响应时间200μs但实测发现同一颗STM32G070在-40℃时响应时间180μs在85℃时达230μs。所以网关的Response Timeout不能设死值。我们的做法网关启动时向LIN从机发10次Ping帧0x3E记录最小/最大响应时间动态设置Timeout Max_Response_Time × 1.5。这样-40℃~85℃全温区都能覆盖。技巧3产线刷写失败先查电池再查网关最后查从机85%的产线刷写失败源于电池。标准要求12.5V±0.5V但产线AGV小车供电常为11.8V。我们的工装增加电压监测电路低于12.2V自动暂停刷写并报警。曾经一个班次刷写失败17台全是因为AGV电池老化换新电池后归零。技巧4OTA升级包签名验证别用SHA256用ECDSA客户要求固件包签名防篡改。最初用SHA256哈希RSA签名但RSA验签耗时280msSTM32G070拖慢刷写。换成ECDSA secp256r1验签仅需42ms且密钥更短64字节 vs RSA 2048位的256字节。关键是ECDSA私钥可存在网关安全芯片中公钥固化在LIN从机Bootloader里彻底杜绝密钥泄露。5.3 一个真实故障复盘LIN从机刷写后功能异常查了3天才发现是时钟源漂移某车型后视镜折叠模块LIN从机刷写后折叠动作变慢且偶尔失灵。现象CAN侧诊断一切正常LIN波形完美Flash校验通过。排查路径第1天怀疑Bootloader跳转错误重刷10次问题依旧第2天怀疑App代码缺陷用J-Link单步调试发现电机驱动PWM占空比计算错误第3天深入看PWM配置发现HAL_TIM_Base_Start()后__HAL_TIM_SET_COMPARE()设置的CCR值比预期小15%。最终定位STM32G070的HSI时钟源在高温下漂移标称8MHz实测7.82MHz导致TIM时基计算偏差。解决方案在Bootloader中用外部32.768kHz晶振校准HSI再配置TIM时钟。代码片段// 校准HSI RCC_OscInitTypeDef RCC_OscInitStruct {0}; RCC_OscInitStruct.OscillatorType RCC_OSCILLATORTYPE_HSI|RCC_OSCILLATORTYPE_LSE; RCC_OscInitStruct.HSIState RCC_HSI_ON; RCC_OscInitStruct.LSEState RCC_LSE_ON; RCC_OscInitStruct.HSICalibrationValue 16; // 默认16校准后改为18 HAL_RCC_OscConfig(RCC_OscInitStruct);校准后PWM精度恢复问题解决。这个案例告诉我们车规级OTA的终极挑战往往不在协议栈而在最基础的硬件时序。每一个参数都要放在-40℃~125℃、85%湿度、10g振动的全工况下验证。6. 方案扩展与工程化建议从单节点刷写到整车OTA协同6.1 如何支持多LIN节点并行升级用“时间片轮询”代替“广播风暴”一台车有12个LIN节点座椅、车窗、雨刮、后视镜、空调风门等逐个刷写要2小时。我们设计了“时间片轮询”机制网关将12个节点按优先级排序座椅车窗雨刮每节点分配200ms时间片。在每个时间片内网关只与目标节点通信其他节点处于Sleep ModeLIN总线休眠。用LIN 0x3CGo To Sleep服务通知非目标节点休眠用0x3DWake Up服务唤醒目标节点。这样总线负载恒定在15%且避免多节点响应冲突LIN是单主多从不能多从机同时响应。实测12节点并行升级时间从118分钟压缩到23分钟提升5.1倍。6.2 与整车OTA平台对接HTTP/HTTPS over CAN的轻量级封装网关本身不连WiFi/4G升级包由T-Box通过CAN总线下发。我们定义了CAN上的“OTA Transport Protocol”使用CAN ID 0x7E0诊断流控承载OTA包每帧CAN数据8字节前2字节为Sequence Number后6字节为固件数据接收端用滑动窗口协议Window Size4重组支持乱序重排完整包校验用CRC32失败则请求重传指定帧。这套协议比传统DoIPDiagnostics over IP轻量10倍MCU资源占用少且兼容现有CAN诊断工具。6.3 安全加固建议不止于UDS还要防“物理层攻击”车规OTA的安全不能只盯UDS服务。我们增加了三项物理层防护LIN总线电流监测在LIN收发器电源路径串入0.1Ω采样电阻用ADC监测电流。正常通信电流50mA若持续100mA判定为短路或恶意设备接入网关自动切断LIN供电。CAN-LIN通道隔离网关内部用光耦隔离CAN和LIN电路防止LIN侧高压窜入
返回列表