1. 项目概述与核心价值在汽车电子和工业控制领域尤其是那些由电池供电或对能耗极其敏感的节点如车门模块、座椅控制、传感器节点等系统功耗是决定产品续航和可靠性的关键指标。TMS320F28003x 作为 TI C2000 系列中一款高性能的实时微控制器其集成的 SCI/LIN 模块不仅提供了完整的 LIN 2.x 协议支持更内置了一套精细且灵活的低功耗管理与唤醒机制。这套机制允许开发者在保证实时通信能力的前提下将非活动期间的功耗降至最低。很多工程师在初次接触 F28003x 的 LIN 模块低功耗功能时往往只关注如何设置POWERDOWN位让模块“睡着”却忽略了唤醒过程中的时序、中断配置以及总线状态协同等关键细节导致系统要么无法唤醒要么唤醒后通信异常。本文将结合官方技术手册、实际项目调试经验以及 LIN 协议规范深入剖析 TMS320F28003x LIN 模块的低功耗模式与唤醒机制。我会从硬件状态机、寄存器配置、软件流程到常见的“坑点”进行全方位解读目标是让你不仅能看懂手册更能设计出稳定、可靠的超低功耗 LIN 节点。2. LIN 低功耗模式深度解析LIN 协议本身定义了网络级的睡眠模式而 TMS320F28003x 的 SCI/LIN 模块在此基础上增加了芯片级的本地低功耗模式。理解这两者的关系和区别是正确配置的基础。2.1 LIN 协议睡眠模式 vs. 模块本地低功耗模式首先必须厘清两个概念LIN 总线睡眠模式和SCI/LIN 模块本地低功耗模式。它们触发条件、作用范围和唤醒方式都不同。LIN 总线睡眠模式是一种网络状态。当 LIN 主节点发送一个特定的睡眠命令帧标识符 ID0x3C第一个数据字节为 0x00后总线上所有节点都应进入一种低功耗的待机状态。此时总线应保持静默无显性电平活动。任何节点都可以通过发送一个唤醒信号Wake-up Signal来终止总线睡眠模式使整个网络恢复到操作状态。这是一种基于协议、所有节点协同的节能状态。SCI/LIN 模块本地低功耗模式是 TMS320F28003x 芯片内部针对 LIN 外设的硬件节能功能。通过设置SCIGCR2.POWERDOWN位为 1可以请求模块进入该模式。在此模式下模块内部逻辑和寄存器的时钟会被停止从而显著降低该外设的功耗。这是一种芯片级的、可独立于总线状态执行的节能手段。两者的关系通常是这样的当 LIN 节点软件收到睡眠命令帧后除了进行必要的状态保存它可以选择设置POWERDOWN位让硬件模块也进入低功耗状态实现“软硬结合”的最大化省电。而总线上的唤醒信号则会通过 LIN 收发器如 TPIC1021转换触发 MCU 的 RX 引脚产生下降沿进而唤醒本地低功耗模式下的 LIN 模块。2.2 进入本地低功耗模式的机制与约束模块进入本地低功耗模式并非简单的“写1即睡”其行为受到当前模块状态和中断配置的严格约束。核心寄存器是SCIGCR2其POWERDOWN位是控制入口。关键机制软件请求通过设置SCIGCR2.POWERDOWN 1来请求进入低功耗模式。硬件仲裁模块硬件会检查当前状态决定是否立即进入、延迟进入或拒绝进入。场景A接收进行中且唤醒中断使能如果接收器正在接收数据SCIFLR.BUSY 1且唤醒中断已被使能SCISETINT.SETWAKEUPINT 1那么模块会立即产生一个唤醒中断并自动清除POWERDOWN位从而阻止进入低功耗模式。这是为了防止在通信中途意外休眠导致数据丢失。中断服务程序需要处理这个“被拒绝”的休眠请求。场景B接收进行中且唤醒中断禁用如果接收器正忙但唤醒中断被禁用模块会完成当前帧的接收然后再进入低功耗模式。这适用于你明确知道当前接收完成后系统将进入长时间空闲的场景。场景C接收空闲如果接收器空闲BUSY 0模块会立即进入低功耗模式。注意POWERDOWN位是一个“请求”位而非“状态”位。写入1表示请求但模块是否真正进入低功耗由硬件根据上述条件决定。在低功耗模式下该位保持为1当模块被唤醒后硬件会自动将其清零。配置与操作流程确保模块配置完成所有 LIN 通信参数波特率、ID过滤等应在设置SWnRST 1模块退出复位后、请求低功耗前完成。决定唤醒策略根据应用需求决定是否使能SETWAKEUPINT。如果使能则需编写对应的中断服务程序ISR来处理唤醒事件。检查总线状态在请求休眠前最好通过软件确保没有正在进行的通信检查BUSY标志或等待一个总线空闲期。设置 POWERDOWN 位// 假设 LinbRegs 是 LINB 模块的寄存器结构体指针 LinbRegs.SCIGCR2.bit.POWERDOWN 1; // 请求进入本地低功耗模式后续处理根据是否使能唤醒中断在对应的 ISR 或主循环中检查SCIFLR.WAKEUP标志确认模块已被唤醒并重新使能收发器如果之前关闭了。2.3 低功耗模式下的寄存器访问与时钟行为一个容易混淆的点是在POWERDOWN1的低功耗模式下模块的寄存器是否还能访问答案是可以但访问行为特殊。当模块处于本地低功耗模式时其内部功能时钟是停止的。然而对 LIN 模块寄存器的读写访问会临时性地为这次特定的访问使能时钟。访问完成后时钟再次停止。这意味着你可以读取状态寄存器如SCIFLR来判断是否被唤醒WAKEUP标志。你可以配置寄存器为唤醒后的操作做准备。访问本身不会导致模块退出低功耗模式。退出低功耗模式只能通过特定的唤醒事件触发。这种设计非常巧妙它允许 CPU 在模块“睡眠”时依然能查询其状态或进行有限的配置而不会因为一次偶然的寄存器读取就意外唤醒模块破坏了低功耗设计。3. 唤醒机制详解与实现唤醒机制是低功耗设计的另一面决定了系统如何从“睡眠”中恢复响应。TMS320F28003x LIN 模块提供了硬件级别的自动唤醒能力。3.1 唤醒源与唤醒流程模块退出本地低功耗模式的核心条件是在POWERDOWN1期间检测到 LIN 接收引脚LINRX上出现一个从隐性到显性的下降沿即总线从空闲的高电平变为低电平的起始位。唤醒信号的产生与传递总线活动总线上任一节点主节点或具有唤醒需求的从节点决定唤醒网络。它通过 LIN 收发器向总线发送一个唤醒信号。根据 LIN 规范这是一个持续时间为T_WUS典型值 250us 至 5ms的显性电平低电平。收发器转换总线上的显性电平被 LIN 收发器如 TPIC1021检测到并将其转换为 MCU RX 引脚上的低电平。模块检测SCI/LIN 模块检测到 RX 引脚上的下降沿。唤醒动作硬件自动执行以下操作 a. 清除SCIGCR2.POWERDOWN位退出低功耗模式。 b. 如果SCISETINT.SETWAKEUPINT 1则置位SCIFLR.WAKEUP标志并可能产生唤醒中断取决于中断使能和映射。 c. 模块时钟恢复准备进行正常通信。唤醒中断的作用使能唤醒中断SETWAKEUPINT后模块不仅能在被总线活动唤醒时产生中断还能在请求进入低功耗模式但被拒绝时前述场景A立即产生中断。这为软件提供了处理“休眠被打断”情况的机制。3.2 主动发送唤醒信号作为网络中的一员你的节点也可能需要主动唤醒总线。这在从节点有数据需要上报时很常见。TMS320F28003x 提供了硬件辅助的唤醒信号生成功能。步骤确保模块处于低功耗模式POWERDOWN位应为 1。配置唤醒信号波形向发送数据寄存器LINTD0写入0xF0。这个字节的二进制是1111 0000发送时会先产生 5 个位的显性电平0再跟 5 个位的隐性电平1正好满足 LIN 唤醒信号至少 5 个位时间的显性电平要求。触发发送设置SCIGCR2.GENWU 1。注意此位仅在SWnRST1且模块处于低功耗模式POWERDOWN1时才可设置。硬件自动发送模块会自动将LINTD0中的0xF0作为唤醒信号发送出去。标志清除当检测到有效的同步间隔Sync Break时GENWU位会被硬件自动清零。软件也可以通过设置SWnRST来清零该位以停止主节点重复发送唤醒请求。代码示例// 假设节点需要主动唤醒总线 // 1. 确保模块已配置并处于低功耗模式 (POWERDOWN1) // 2. 加载唤醒信号模式 LinbRegs.LINTD0.bit.TD0 0xF0; // 写入唤醒信号字节 // 3. 触发唤醒信号发送 // 注意以下操作需在 POWERDOWN1 且 SWnRST1 的条件下进行 LinbRegs.SCIGCR2.bit.GENWU 1; // 发送 LINTD0 中的值作为唤醒信号 // 4. 等待唤醒信号发送完成或检测到同步间隔 // 硬件会在检测到有效同步间隔后自动清除 GENWU 位3.3 唤醒超时与协议兼容性LIN 协议对唤醒过程有严格的超时规定以防止总线因某个节点的错误而长时间阻塞。TMS320F28003x 的硬件实现了这些超时机制减轻了软件负担。关键超时T_WUS唤醒信号长度250us ≤T_WUS≤ 5ms。硬件发送0xF0字节可以满足此要求但需根据实际波特率计算确认。例如在 20kbps 下1 位时间为 50us发送 5 位显性电平需要 250us满足最小值。T_WAKEUP唤醒后等待主节点响应从节点发送唤醒信号后应等待主节点在150ms内发送帧头同步间隔同步字段。如果超时从节点应重发唤醒信号。硬件通过TOAWUS超时后唤醒信号标志和中断来指示此超时。三次重试规则如果连续发送3 次唤醒信号后主节点仍未在 150ms 内响应节点应停止发送并等待1.5 秒后再尝试。硬件通过TOA3WUS3次唤醒信号后超时标志和中断来指示此状态。T_INITIALIZE从节点初始化时间从节点检测到唤醒信号结束显性到隐性边沿后必须在100ms内准备好接收帧头。这主要依赖于软件初始化速度。协议版本兼容性为了兼容 LIN 1.3 的基于位时间的超时计算模块提供了MBRSR最大波特率选择寄存器。通过正确设置该寄存器可以使硬件基于实时时间的超时逻辑模拟出 LIN 1.3 基于位时间的超时行为。通常在 LIN 2.0 应用中如果使用标准的 20kbps 或类似速率硬件默认的超时计数器是足够的。4. 低功耗与唤醒的软件实战指南理解了原理我们来看如何将这些机制整合到实际的嵌入式软件中。以下是一个典型的从节点低功耗管理流程包含了状态机、寄存器操作和中断处理。4.1 低功耗模式进入与退出的完整软件流程一个健壮的流程需要处理正常进入、被拒绝进入、被唤醒等多种情况。系统初始化阶段void LIN_Slave_Init(void) { // 1. 确保模块在复位状态进行配置 LinbRegs.SCIGCR0.bit.RESET 0; // 保持复位 // 2. 配置波特率、引脚功能、ID过滤、工作模式从模式等 LinbRegs.BRSR.all ...; // 设置波特率预分频 LinbRegs.SCIPIO0.bit.TXFUNC 1; // 使能TX引脚 LinbRegs.SCIPIO0.bit.RXFUNC 1; // 使能RX引脚 LinbRegs.SCIGCR1.bit.LINMODE 1; // LIN模式 LinbRegs.SCIGCR1.bit.CLK_MASTER 0; // 从模式 // ... 其他配置 // 3. 配置中断可选如果使用唤醒中断 // 将唤醒中断映射到某个CPU中断线并启用PIE中断 LinbRegs.SCISETINT.bit.SETWAKEUPINT 1; // 使能唤醒中断 // 假设我们将唤醒中断映射到INT0并启用全局中断 LinbRegs.SCICLEARINTLVL.bit.CLRWAKEUPINTLVL 1; // 映射到INT0 LinbRegs.LIN_GLB_INT_EN.bit.GLBINT0_EN 1; // 使能INT0到PIE // 4. 退出模块复位 LinbRegs.SCIGCR0.bit.RESET 1; // 5. 使能收发器 LinbRegs.SCIGCR1.bit.TXENA 1; LinbRegs.SCIGCR1.bit.RXENA 1; }进入低功耗模式函数bool LIN_Request_LowPower(void) { // 建议在请求低功耗前检查总线是否空闲可选通过超时标志或软件计时 // if (LinbRegs.SCIFLR.bit.TIMEOUT 0) { ... } // 总线空闲超时未到 // 请求进入低功耗模式 LinbRegs.SCIGCR2.bit.POWERDOWN 1; // 重要检查请求是否被立即拒绝由于接收忙且唤醒中断使能 // 这种情况会立即产生唤醒中断POWERDOWN位会被硬件清除 // 我们可以在中断服务程序或稍后轮询检查 if (LinbRegs.SCIGCR2.bit.POWERDOWN 0) { // 请求被立即拒绝模块未进入低功耗 // 可能的原因正在接收数据且唤醒中断已使能 // 需要等待当前通信完成或处理中断 return false; // 进入低功耗失败 } // 如果POWERDOWN位仍为1说明请求已被接受模块将进入或正在进入低功耗 // 此时可以进一步关闭外部LIN收发器的电源如果设计允许以节省更多功耗 // GPO_LOW(TRANSCEIVER_EN_PIN); // 例如关闭收发器使能 // 最后可以让CPU自身进入低功耗模式如IDLE, STANDBY // 唤醒将由LIN模块的RX引脚下降沿触发 return true; // 低功耗请求已接受 }唤醒中断服务程序ISR__interrupt void LIN_Wakeup_ISR(void) { // 1. 检查唤醒标志并清除它 if (LinbRegs.SCIFLR.bit.WAKEUP 1) { LinbRegs.SCIFLR.bit.WAKEUP 1; // 写1清除标志位 (W1C) // 2. 判断唤醒原因 // 情况A: 被总线活动正常唤醒 // 情况B: 在请求低功耗时因接收忙而被拒绝此时POWERDOWN位已被硬件清零 if (LinbRegs.SCIGCR2.bit.POWERDOWN 0) { // 模块已处于活动状态 // 恢复外部收发器供电如果之前关闭了 // GPO_HIGH(TRANSCEIVER_EN_PIN); // 重新使能模块收发如果之前禁用了但通常不需要 // LinbRegs.SCIGCR1.bit.TXENA 1; // LinbRegs.SCIGCR1.bit.RXENA 1; // 3. 处理可能的接收数据 // 检查RXRDY, IDRXFLAG等标志读取LINRDx寄存器 if (LinbRegs.SCIFLR.bit.RXRDY 1) { // 有数据待读取 uint16_t data0 LinbRegs.LINRD0.bit.RD0; // ... 处理数据 } } // 如果POWERDOWN仍为1说明是其他情况理论上硬件唤醒后会清零此处可作为防御性检查。 } // 4. 清除PIE组中断标志并确认中断 // PieCtrlRegs.PIEACK.all PIEACK_GROUPx; // 根据实际中断分组 // 5. 如果需要可以在此处重新请求低功耗但通常应返回主循环或就绪状态 }4.2 调试与仿真模式下的注意事项在开发阶段我们经常需要使用仿真器进行在线调试。TMS320F28003x 的 LIN 模块提供了SCIGCR1.CONT位来处理仿真暂停时的行为。CONT 0默认当仿真器暂停 CPU进入调试模式时LIN 模块的状态机和计数器也会停止。这有助于你精确检查某一时刻的寄存器状态但会中断正在进行的 LIN 通信可能导致帧传输失败或超时错误。CONT 1当仿真器暂停 CPU 时LIN 模块会继续运行直到完成当前的发送或接收操作。这对于调试通信过程非常有用因为你可以暂停 CPU 而不打断正在传输的 LIN 帧。建议在调试通信逻辑和低功耗唤醒流程时将CONT位设为 1。在调试与精确时序相关的代码如超时处理时可以将其设为 0。请注意在仿真模式下对 LIN 寄存器的读取操作不会影响SCIFLR中的标志位这由SCIED仿真数据寄存器特性保证。4.3 关键寄存器配置速查表为了方便快速参考以下表格总结了与低功耗和唤醒相关的核心寄存器位寄存器位域名称功能描述配置要点SCIGCR2POWERDOWN本地低功耗请求写1请求进入低功耗模式。硬件根据条件决定是否进入唤醒后自动清零。请求前检查BUSY标志注意唤醒中断使能情况下的行为。SCIGCR2GENWU产生唤醒信号在POWERDOWN1时写1将发送LINTD0中的值作为唤醒信号。仅在POWERDOWN1且SWnRST1时可写。发送0xF0到LINTD0。SCISETINTSETWAKEUPINT使能唤醒中断使能后模块退出低功耗或休眠请求被拒时会置位WAKEUP标志并可能产生中断。使能后需配置中断向量和PIE。用于及时响应唤醒事件。SCIFLRWAKEUP唤醒标志模块被唤醒时置位。写1清除W1C。在唤醒ISR中必须检查并清除此标志。SCIFLRBUSY接收忙标志为1表示正在接收一帧数据。在请求低功耗前检查此位可预测POWERDOWN请求的结果。SCIFLRTOAWUS单次唤醒超时发送唤醒信号后150ms内未收到同步间隔则置位。需使能SETTOAWUSINT中断以便处理。SCIFLRTOA3WUS三次唤醒超时连续三次唤醒超时共1.5秒后置位。需使能SETTOA3WUSINT中断。触发后应暂停唤醒尝试1.5秒。SCIFLRTIMEOUT总线空闲超时总线无活动超过4秒置位。可用于判断总线是否进入睡眠进而触发本地低功耗。SCIGCR1CONT仿真继续位控制仿真暂停时LIN模块是否继续运行。调试通信时设为1调试时序相关代码时可设为0。MBRSRMBR最大波特率预分频用于计算LIN 1.3兼容的超时时间或定义自适应波特率检测范围。通常按公式MBR VCLK / (1.1 * 期望波特率)计算设置。5. 常见问题排查与实战经验在实际项目中低功耗和唤醒功能最容易出现的问题往往不是原理不懂而是细节疏忽。下面分享几个我踩过的“坑”和解决方案。5.1 问题1模块无法进入低功耗模式现象代码设置了POWERDOWN1但测量模块时钟或功耗没有变化。排查步骤检查SWnRST位SCIGCR1.SWnRST必须为 1模块处于就绪状态才能响应POWERDOWN请求。确保在模块初始化完成后才设置POWERDOWN。检查BUSY标志和唤醒中断这是最常见的原因。如果接收器正在工作BUSY1且SETWAKEUPINT1设置POWERDOWN会立即触发唤醒中断并清除POWERDOWN位。解决方法在请求低功耗前等待BUSY标志为 0或者暂时禁用唤醒中断SCICLEARINT.CLRWAKEUPINT1但后者需谨慎因为会失去总线唤醒能力。检查寄存器访问确认你对SCIGCR2的写操作确实生效了。在写之后立即读回该寄存器看POWERDOWN位是否被置1。检查时钟门控确保系统级时钟配置没有关闭 LIN 模块所在的外设时钟域。查阅芯片的系统控制模块相关寄存器。5.2 问题2模块可以被唤醒但唤醒后通信异常现象总线发送唤醒信号后模块的WAKEUP标志置位但随后无法正常收发 LIN 帧或出现大量校验和、帧错误。排查步骤唤醒后初始化不完整在低功耗模式下模块时钟停止但寄存器配置保持。唤醒后理论上无需重新初始化。但需检查收发器状态如果你在进入低功耗时关闭了外部 LIN 收发器的电源唤醒后必须等待其稳定上电并初始化参考收发器数据手册的T_WAKE时间再开始通信。模块使能位确认SCIGCR1.TXENA和RXENA在唤醒后仍为 1。它们在低功耗模式下保持不变。波特率失配如果从节点在进入低功耗前进行了自适应波特率调整ADAPT1且唤醒后主节点发送的同步字段波特率与之前存储的值不同但模块未能成功重新同步。解决方法在唤醒中断服务程序中可以检查同步字段错误标志ISFE如果置位可能需要软件干预重新初始化波特率设置或强制进行一次自适应过程。中断标志未及时清除唤醒中断产生后如果未及时清除WAKEUP标志或 PIE 中断标志可能导致后续中断无法正常触发。确保 ISR 中有规范的清标志操作。时序问题从唤醒信号结束到模块准备好接收帧头有T_INITIALIZE100ms的要求。如果唤醒 ISR 中执行了过于耗时的操作如复杂的计算、访问慢速外设可能导致错过主节点随后发送的帧头。优化建议唤醒 ISR 应尽可能短小仅做关键状态恢复和标志清除将复杂处理放到主循环中。5.3 问题3主动发送的唤醒信号无效现象从节点设置GENWU1但总线上检测不到有效的唤醒信号或其他节点无响应。排查步骤前置条件检查GENWU位只有在SWnRST1且POWERDOWN1时才可被设置。确保在设置GENWU前POWERDOWN位已为 1。LINTD0值检查必须向LINTD0写入0xF0。写入其他值产生的波形可能不符合 LIN 唤醒信号规范。TX 引脚使能确认SCIPIO0.TXFUNC 1且外部电路正确连接。总线冲突如果有多个节点同时尝试发送唤醒信号可能产生冲突。LIN 总线是“线与”逻辑显性电平0会覆盖隐性电平1。确保你的唤醒信号发送逻辑有适当的随机延迟或避让机制。测量波形使用示波器直接测量 LIN 总线波形检查显性电平持续时间是否在 250us 到 5ms 之间。计算一下在 20kbps 下发送0xF011110000的显性部分5个0持续时间为 5 bits * 50us/bit 250us刚好满足最小值。5.4 功耗优化进阶技巧分级低功耗除了 LIN 模块的本地低功耗还可以配合 MCU 的其它低功耗模式如 STANDBY, HALT。在 LIN 模块进入POWERDOWN后如果没有其他任务可以让 CPU 进入更深度的睡眠模式由 LIN 模块的 RX 引脚中断唤醒整个系统。收发器电源管理LIN 模块的POWERDOWN主要节省数字逻辑功耗。对于整个节点的功耗外部 LIN 收发器的静态电流往往是大头。如果设计允许可以在进入低功耗时通过一个 GPIO 关闭收发器的电源或使其进入待机模式。唤醒时先由 LIN 模块的 RX 下降沿唤醒 MCU再由 MCU 的 GPIO 控制给收发器上电。注意要留足收发器的启动时间T_WAKE。自适应波特率与低功耗如果使能了自适应波特率ADAPT1在每次唤醒后从节点会通过同步字段重新校准波特率。这确保了通信可靠性但略微增加了唤醒后的处理时间。在波特率稳定的网络中可以考虑关闭此功能以加快唤醒响应。利用总线空闲超时除了响应睡眠命令还可以利用TIMEOUT标志总线空闲超时。当检测到总线持续空闲超过 4 秒时可以自动请求进入本地低功耗模式实现更积极的节能即使没有收到主节点的正式睡眠命令。6. 总结与最佳实践建议TMS320F28003x 的 LIN 模块低功耗与唤醒机制是一套硬件支持完善、但需要软件精细配合的系统。成功的关键在于理解硬件状态机POWERDOWN,BUSY,WAKEUP的交互和 LIN 协议时序唤醒信号、超时。我的几点核心建议状态机思维将 LIN 节点的低功耗管理视为一个状态机状态包括正常操作、请求低功耗、低功耗中、唤醒中、错误恢复。清晰的状态转换条件标志位检查是代码稳定的基础。中断驱动强烈建议使能唤醒中断SETWAKEUPINT和超时中断SETTOAWUSINT,SETTOA3WUSINT。用中断响应事件而不是盲目轮询这能降低 CPU 负载并提高响应速度。防御性编程在请求低功耗前检查BUSY标志在唤醒 ISR 中不仅要清WAKEUP标志还要检查POWERDOWN位状态以区分唤醒原因处理超时中断后要有相应的恢复或重试策略。实测验证务必使用电流探头和示波器测量实际功耗和总线波形。验证进入低功耗后的静态电流、唤醒信号的宽度和时序、以及从唤醒到响应第一个帧头的延迟时间是否满足应用要求。参考官方例程TI 的 C2000Ware 中提供了 LIN 的示例代码如lin_ex1_loopback_interrupts.c。虽然这些例程可能不直接展示低功耗但它们展示了模块初始化、中断处理的基本框架是很好的起点。可以在此基础上集成低功耗管理逻辑。低功耗设计永远是平衡的艺术在功耗、响应速度和开发复杂度之间找到最佳点。TMS320F28003x 提供的硬件机制已经做了大部分繁重的工作我们工程师要做的就是充分理解它并写出与之默契配合的软件。希望这篇近万字的详解能帮你扫清开发路上的障碍打造出既省电又可靠的 LIN 网络节点。