1、第三章第三章 本地内部连接网络本地内部连接网络LINLIN汽车系汽车系 曹晓琳曹晓琳复习:3.1LIN概述一、汽车网络分类一、汽车网络分类二、定义二、定义 LIN(Local Interconnect Network)本地内部连接网络 三、发展历史三、发展历史四、协议规范概述四、协议规范概述五、五、LIN特点特点 1)一主多从 2)低成本 3)传输确定性 4)增删节点方便 5)可预测的EMC 六、应用六、应用七、七、LIN网络的组网形式网络的组网形式 1)单个LIN网络(多个门节点)2)两个LIN网络(左边和右边)3)CAN/LIN 之间设专用网关 4)具备LIN分层结构的CAN八、八、LIN
2、与与CAN的比较的比较复习:3.1LIN概述一、汽车网络分类一、汽车网络分类二、定义二、定义 LIN(Local Interconnect Network)本地内部连接网络本地内部连接网络 三、发展历史三、发展历史四、协议规范概述四、协议规范概述五、五、LIN特点特点 1)一主多从 2)低成本 3)传输确定性 4)增删节点方便 5)可预测的EMC 六、应用六、应用七、七、LIN网络的组网形式网络的组网形式 1)单个LIN网络(多个门节点)2)两个LIN网络(左边和右边)3)CAN/LIN 之间设专用网关 4)具备LIN分层结构的CAN八、八、LIN与与CAN的比较的比较复习:3.2 LIN通信
3、协议一、基本概念一、基本概念1、LIN协议的分层结构2、信息的传送和报文帧复习:3.2 LIN通信协议一、基本概念一、基本概念1、LIN协议的分层结构2、信息的传送和报文帧3.1 LIN概述3.2 LIN通信协议3.3 LIN网络结构及应用实例一、基本概念1、LIN协议的分层结构:2、信息的传送(报文帧)LIN 报文帧LIN 报文帧3、信息传送方式(信息路由)LIN网络中的数据交换方式有以下 3 种方式:(1)数据由主机到从机通信:(2)数据由从机到主机通信;(3)数据由从机到从机通信。4、位传输速度 受单线传输介质电磁干扰(EMI)的限制,LIN最大位流传输速度为29Kbps;另一方面,为了
4、避免与实际系统定时溢出时间发生冲突,最小位流传输速度限定为1Kbps。实际应用系统中,建议使用下面的位速率:低速中速高速2400bit/s9600bit/s19200bit/s5、故障检测l位错误l校验和错误l标识符奇偶校验l从机不响应错误l同步场不一致错误l没有总线活动 6、故障界定主节点控制单元 主节点的主任务发送:主节点的从任务发送。从节点控制单元 从任务发送:从任务接收。7、连接总线LIN网络节点的最大数量不仅由标识符的数量限制(见上面的信息路由)也由总线的物理特性限制。u建议LIN网络的节点数量不应超过16。否则,网络阻抗降低,在最坏工作情况下会发生通信故障。每增加一个额外的节点大约
5、降低3%的网络阻抗(30k|1k)。u网络中积累的“电”线长度应少于或等于40m。u主机节点的总线端电阻典型值是1k,从机节点是30k。VB ATSCIGNDEC ULIN总线逻辑值位值总线电压显性0地隐性1电池8、休眠方式与唤醒为了降低系统的功耗,LIN系统支持没有任何内部活动而且总线驱动器无源的休眠模式。当主节点向网络上发送一个休眠命令时,所有节点进入休眠状态,直到被唤醒之前总线上不会有任何活动。当总线上出现任何活动或节点出现任何内部活动时,节点结束休眠状态。从节点唤醒时,输出一个唤醒信号唤醒主节点,主节点开始初始化内部活动,从节点要等到同步信号后才参与总线通信活动。二、信息格式与信息传送
6、1、信息格式一个LIN信息帧包括两部分:头信息/帧头:由主任务发送到从任务的同步和标示符信息响应/应答:由一个从任务发送到所有其他从任务的数据信息一个LIN信息帧有同步间隔、同步域、标示符域(受保护ID域)、数据域、校验码域以及响应间隔构成。除起始域与响应间隔,其他部分都是以字节为单位传送,每个字节都有自己的格式,称之为字节域(Byte Field)。字节之间有字节间隔(Inter Byte Space),在头信息和响应之间有一个响应间隔(Response Space)。这两个间隔的最小值为0。2、头信息LIN网络中,每个信息的传送都是以主节点发送头信息开始的。头信息包括同步间隔域、同步域以及
7、PID(Protected Identifier,受保护ID)域。同步间隔域(Break Field)同步间隔域由同步间隔(Break)和同步间隔域间隔符(Break Delimiter)构成。同步域(Sync Byte Field)字节域(Byte Field):1 位起始位(Start Bit,显性)+8位数据位+1 位停止位(Stop Bit,隐性),是一种标准UART 数据传输格式。从机节点可以不采用精度高的时钟,而采用片上振荡器等精度和成本相对较低的时钟,由此带来的与主机节点时钟产生的偏差,需要通过同步域进行调整,调整的结果是使从机节点数据的位速率与主机节点一致。同步段用于同步的基准
8、时钟为主机节点的时钟。从机节点通过接收主机节点发出的同步段,计算出主机节点位速率,根据计算结果对自身的位速率重新作调整。受保护ID域(Protected Identifier Field)受保护ID 段的前6位叫作帧ID(Frame ID),加上两个奇偶校验位后称作受保护ID。帧ID 的范围在0 x000 x3F 之间,共64 个。帧ID标识了帧的类别。从机任务对于帧头作出的反应(接收/发送/忽略应答部分)都是依据帧ID 判断的。如果帧ID传输错误,将会导致信号无法正确到达目的地。因此引入奇偶校验位。其中 ID6 是 ID0、ID1、ID2、ID4 的奇校验,ID7 是 ID1、ID3、ID4
9、、ID5 的偶校验。校验公式如下,其中“”代表“异或”运算,“”代表“取非”运算。P0=ID0 ID1 ID2 ID4P1=(ID1 ID3 ID4 ID5)由公式可以看出,PID不会出现全0或全1的情况,因此,如果从机节点收到了“0 xFF”或“0 x00”,可判断为传输错误。3、响应域 LIN协议中,一帧信息的响应域由数据域和校验码域两部分构成。数据域长度(字节数)由标示符域的ID4、ID5决定。数据域数据域(Data Field)数据段包含了两种数据类型:信号(Signal)和诊断消息(Diagnostic messages)。信号(Signal)由信号携带帧传递,一个帧ID 对应的数据
10、段可能包含一个或多个信号。信号更新时要保证其完整性,不能只更新一部分。一个信号通常由一个固定的节点发出,此节点称为该信号的发布节点(Publisher);其余的一个或多个节点接收,它们称为信号的收听节点(Subscriber)。诊断消息(Diagnostic message)由诊断帧传递,对消息内容的解析由数据自身和节点状态决定。帧的类型无条件帧(Unconditional Frame)事件触发帧(Event Triggered Frame)偶发帧(Sporadic Frame)诊断帧(Diagnostic Frame)保留帧(Reserved Frame)无条件帧(Unconditional
11、 Frame)无条件帧是具有单一发布节点,无论信号是否发生变化,帧头都被无条件应答的帧。无条件帧在主机任务分配给它的固定的帧时隙中传输。总线上一旦有帧头发送出去,必须有从机任务作应答(即无条件发送应答)。无条件帧(Unconditional Frame)事件触发帧(Event Triggered Frame)事件触发帧是主机节点在一个帧时隙中查询各从机节点的信号是否发生变化时使用的帧,当存在多个发布节点时,通过冲突解决进度表来解决冲突。原先用作轮询的无条件帧,称为与该事件触发帧关联的无条件帧,即事件触发帧的应答部分是与其关联的无条件帧所提供的应答。当发生冲突时,需要立刻 中 断 当 前 的 进
12、 度 表,启 动 冲 突 解 决 进 度 表(Collision Resolving Schedule),重新调用这些关联的无条件帧。其中,冲突解决进度表要求包含所有关联的无条件帧。事件触发帧(Event Triggered Frame)事件触发帧(Event Triggered Frame)与事件触发帧关联的多个无条件帧需要满足以下5 个条件:l数据段包含的数据字节数等长;l使用相同的校验和类型;l数据段的第一个字节为该无条件帧的受保护ID,这样才能够知道应答是哪个关联的无条件帧发送出来的;l由不同的从机节点发布;l不能与事件触发帧处于同一个进度表中。偶发帧(Sporadic Frame)偶
13、发帧是主机节点在同一帧时隙中当自身信号发生变化时向总线启动发送的帧。当存在多个关联的应答信号变化时,通过事先设定的优先级来仲裁。偶发帧(Sporadic Frame)诊断帧(Diagnostic Frame)诊断帧包括主机请求帧和从机应答帧,主要用于配置、识别和诊断用。主机请求帧(Master Request Frame,MRF),帧ID=0 x3C,应答部分的发布节点为主机节点;从机应答帧(Slave Response Frame,SRF),帧ID=0 x3D,应答部分的发布节点为从机节点。数据段规定为8 个字节,一律采用标准型校验和。保留帧(Reserved Frame)保留帧的帧ID 为
14、0 x3E 和0 x3F,为将来扩展用。校验码域校验码域(Checksum Field)校验码域是对帧中所传输的内容进行校验。校验和分为标准型校验和(Classic Checksum)及增强型校验和(Enhanced Checksum),采用标准型校验和还是增强型校验和由主机节点管理,发布节点和各收听节点根据帧ID来判断采用哪种校验和。校验方法为将校验对象的各字节作带进位二进制加法(每当结果大于等于256 时就减去255),并将所得最终的和逐位取反,以该结果作为要发送的校验和。接收方根据校验和类型,对接收数据作相同的带进位二进制加法,最终的和不取反,并将该和与接收到的校验和作加法,如果结果为0
15、 xFF,则校验和无误。这在一定程度上保证了数据传输的正确性。例:采用标准型校验和,Data1=0 x4A,Data2=0 x55,Data3=0 x93,Data4=0 xE54、报文帧的长度和总线睡眠检测TFrame_Maximum:帧在总线上传输的最大时间;THeader_Maximum:帧头在总线上传输的最大时间;TResponse_Maximum:应答在总线上传输的最大时间;THeader_Nominal:帧头额定传输时间:同步间隔段(包含同步间隔和同步间隔段间隔符)的最小传输时间+同步段传输时间+受保护ID段传输时间;THeader_Rest:帧头的余量:包含字节间间隔,规定为帧头
16、额定传输时间的0.4 倍;TResponse_Nominal:应答额定传输时间:数据段传输时间+校验和段传输时间;TResponse_Rest:应答的余量:包含应答间隔以及字节间间隔,规定为应答额定传输时间的0.4 倍;Ndata表示数据段包含N个字节。THeader_Rest:帧头的余量:包含字节间间隔,规定为帧头额定传输时间的0.4 倍;TResponse_Nominal:应答额定传输时间:数据段传输时间+校验和段传输时间;TResponse_Rest:应答的余量:包含应答间隔以及字节间间隔,规定为应答额定传输时间的0.4 倍;Ndata表示数据段包含N个字节。帧在总线上的传输波形5、进度
17、表 进度表是帧的调度表,规定总线上帧的传输次序以及各帧在总线上的传输时间。进度表位于主机节点,主机任务根据应用层需要进行调度。这样保证了总线信号的周期性,也能保证总线永远不会发生过载。6、状态机(State Machine)实现主机任务的状态机当进度表启动后,主机任务依次发送同步间隔段、同步段和受保护ID 段。从机任务的状态机从机任务负责发布或者接听帧的应答。包括两个状态机:1.同步间隔段和同步段检查器2.帧处理器从机任务的状态机三、LIN 与 CAN 的比较四、LIN 网络开发工作流程为了实现从机节点入网的“即插即用”,LIN 规范标准化了LIN 网络从设计到生成的工作流程,对应着LIN 规
18、范的 LIN Configuration Language Specification NCF(Node Capability File)LIN Node Capability Language Specification LDF(LIN Description File)五、LIN的软硬件支持工具制造商、半导体供应商和第三方软件供应商提供了种类多样的工具和软硬件。全球的LIN协议芯片及其相关驱动程序提供商众多,包括有Philips,Freescale,Infineon,Fujitsu等半导体商提供的硬件包括用于开发主节点的微控制器及相应的软件包、LIN物理层接口等。众多汽车厂商不仅采纳了LI
19、N标准,还付诸行动,将LIN总线应用到批量生产中。要开发LIN的应用,商品化的开发工具并不是必须的,不过,此类工具确实能提高开发效率,尤其是处理那些同时容纳不同LIN规范版本的节点的网络。六、LIN配置语言LIN配置语言(LIN CL,LIN Configuration Language)是LIN标准的一部分,它定义了LIN网络结构和节点以及任务的表示语法。用LIN CL形成的一个LIN描述文件就是一个LIN系统的完整描述,包含所有LIN系统的信息和仿真调试所需的信息。因此LIN CL为LIN调试开发软件工具的开发者提供了一个标准的语言。句法的概述句法的概述 符号符号意义意义:=在在:=左边的
20、名字用在它右边的句法来表示左边的名字用在它右边的句法来表示用于标记后面定义的对象用于标记后面定义的对象表示选择。可以出现在左边或右边表示选择。可以出现在左边或右边Bold粗体的文字是保留的,它或者是一个保留的字或是一个强制的标点粗体的文字是保留的,它或者是一个保留的字或是一个强制的标点 方括号中的文字将出现一次或几次方括号中的文字将出现一次或几次()将一些选择子句组合到一起将一些选择子句组合到一起char_string在引号中的任何字符串在引号中的任何字符串identifier标识符。典型用于对象的命名;标识符在声明变量时要符合普通标识符。典型用于对象的命名;标识符在声明变量时要符合普通C语言
21、的规则语言的规则integer整数。十进制整数(第一个数字是整数。十进制整数(第一个数字是19)或十六进制整数(前缀是)或十六进制整数(前缀是0 x)real_or_integer实数或整数。实数通常是小数,而且有一个嵌入的小数点实数或整数。实数通常是小数,而且有一个嵌入的小数点LIN描述文件的定义描述文件的定义LIN协议版本号的定义 LIN语言版本号的定义 LIN速度的定义 节点定义()节点诊断地址的定义 信号定义 帧的定义()事件触发帧的定义()诊断帧的定义 进度表的定义()信号组的定义()信号编码类型定义()信号表示的定义 LIN描述文件示例描述文件示例/这是一个这是一个LIN描述示例文
22、件描述示例文件/由由Istvan Horvath发布发布LIN_description_file;LIN_protocol_version=“1.0”;LIN_language_version=“1.1”;LIN_speed=19.2 kbps;Nodes Master:CEM,5 ms,0.1 ms;Slaves:LSM,CPM;Signals RearFogLampInd:1,0,CEM,LSM;PositionLampInd:1,0,CEM,LSM;FrontFogLampInd:1,0,CEM,LSM;IgnitionKeyPos:3,0,CEM,LSM,CPM;LSMFuncIllu
23、m:4,0,CEM,LSM;LSMSymbolIllum:4,0,CEM;StartHeater:3,0,CEM;CPMReqB0:8,0,CEM;CPMReqB1:8,0,CEM;CPMReqB2:8,0,CEM;CPMReqB3:8,0,CEM;CPMReqB4:8,0,CEM;CPMReqB5:8,0,CEM;CPMReqB6:8,0,CEM;CPMReqB7:8,0,CEM;ReostatPos:4,0,LSM;HeadLampBeamLev:4,0,LSM;FrontFogLampSw:1,0,LSM;RearFogLampSw:1,0,LSM;MLSOff:1,0,LSM;MLSH
24、eadLight:1,0,LSM;MLSPosLight:1,0,LSM;HBLSortHigh:1,0,LSM;HBLShortLow:1,0,LSM;ReoShortHigh:1,0,LSM;ReoShortLow:1,0,LSM;LSMHWPartNoB0:8,0,LSM;LSMHWPartNoB1:8,0,LSM;LSMHWPartNoB2:8,0,LSM;LSMHWPartNoB3:8,0,LSM;LSMSWPartNo:8,0,LSM;CPMOutputs:10,0,CPM;HeaterStatus:4,0,CPM;CPMGlowPlug:7,0,CPM;CPMFanPWM:8,0
25、,CPM;WaterTempLow:8,0,CPM;WaterTempHigh:8,0,CPM;CPMFuelPump:7,0,CPM;CPMRunTime:13,0,CPM;FanIdealSpeed:8,0,CPM;FanMeasSpeed:8,0,CPM;CPMRespB0:1,0,CPM;CPMRespB1:1,0,CPM;CPMRespB2:1,0,CPM;CPMRespB3:1,0,CPM;CPMRespB4:1,0,CPM;CPMRespB5:1,0,CPM;CPMRespB6:1,0,CPM;CPMRespB7:1,0,CPM;Frames VL1_CEM_Frm1:32,CE
26、M RearFogLampInd,0;PositionLampInd,1;FrontFogLampInd,2;IgnitionKeyPos,3;LSMFuncIllum,8;LSMSymbolIllum,12;StartHeater,16;VL1_CEM_Frm2:48,CEM CPMReqB0,0;CPMReqB1,8;CPMReqB2,16;CPMReqB3,24;CPMReqB4,32;CPMReqB5,40;CPMReqB6,48;CPMReqB7,56;VL1_LSM_Frm1:33,LSM ReostatPos,0;HeadLampBeamLev,4;FrontFogLampSw,
27、8;RearFogLampSw,9;MLSOff,10;MLSHeadLight,11;MLSPosLight,12;HBLSortHigh,16;HBLShortLow,17;ReoShortHigh,18;ReoShortLow,19;VL1_LSM_Frm2:49,LSM LSMHWPartNoB0,0;LSMHWPartNoB1,8;LSMHWPartNoB2,16;LSMHWPartNoB3,32;LSMSWPartNo,40;VL1_CPM_Frm1:50,CPM CPMOutputs,0;HeaterStatus,10;CPMGlowPlug,16;CPMFanPWM,24;Wa
28、terTempLow,32;WaterTempHigh,40;CPMFuelPump,56;VL1_CPM_Frm2:34,CPM CPMRunTime,0;FanIdealSpeed,16;FanMeasSpeed,24;VL1_CPM_Frm3:51,CPM CPMRespB0,0;CPMRespB1,8;CPMRespB2,16;CPMRespB3,24;CPMRespB4,32;CPMRespB5,40;CPMRespB6,48;CPMRespB7,56;Schedule_tables VL1_ST1 VL1_CEM_Frm1 delay 15 ms;VL1_LSM_Frm1 dela
29、y 15 ms;VL1_CPM_Frm1 delay 20 ms;VL1_CPM_Frm2 delay 20 ms;VL1_ST2 VL1_CEM_Frm1 delay 15 ms;VL1_CEM_Frm2 delay 20 ms;VL1_LSM_Frm1 delay 15 ms;VL1_LSM_Frm2 delay 20 ms;VL1_CEM_Frm1 delay 15 ms;VL1_CPM_Frm1 delay 20 ms;VL1_CPM_Frm2 delay 20 ms;VL1_LSM_Frm1 delay 15 ms;VL1_CPM_Frm3 delay 20 ms;Signal_gr
30、oups CPMReq:64 CPMReqB0,0;CPMReqB1,8;CPMReqB2,16;CPMReqB3,24;CPMReqB4,32;CPMReqB5,40;CPMReqB6,48;CPMReqB7,56;Signal_encoding_types 1BitDig logical_value,0,”off”;logical_value,1,”on”;2BitDig logical_value,0,”off”;logical_value,1,”on”;logical_value,2,”error”;logical_value,3,”void”;Temp physical_value,
31、0,250,0.5,-40,”degree”;physical_value,251,253,1,0,”undefined”;logical_value,254,”out of range”;logical_value,255,”error”;Speed physical_value,0,65500,0.008,250,”km/h”;physical_value,65501,65533,1,0,”undefined”;logical_value,65534,”error”;logical_value,65535,”void”;Signal_representations 1BitDig:Rear
32、FogLampInd,PositionLampInd,FrontFogLampInd;Temp:WaterTempLow,WaterTempHigh;Speed:FanIdealSpeed,FanMeasSpeed;七、LIN应用程序接口(LIN API)LIN应用接口程序(LIN API,LIN Application Programmers Interface)是一个LIN网络软件层,它是LIN标准的一部分。通过LIN标准的这个层,应用软件的设计者不必知道LIN网络配置的底层细节,如信号是怎么构成帧的等,就可以进行应用层软件的设计。LIN API中,定义了网络系统初始化功能调用、数据和标志
33、状态读/写的调用、时间表调用、节点接口的初始化、连接功能调用以及控制器的中断管理程序。通过LIN API,应用程序可以方便地写入和读出网络节点上的数据。API是一组“规约”,用来定义软件模块的使用方法。API既可以是数据结构,也可以是若干个函数,还可以是它们的混合。软件开发者可以把API看作是与软件模块的会话方。应用程序和程序员既可以使用该模块的功能,又无需访问其源代码,或者理解其内部工作机制的细节。API对软件开发意义重大。软件规模日益庞大,常常需要把复杂系统划分成小的组成部分,或者重复使用代码,这时都会涉及到API。LIN 规范用C 语言定义了LIN 的API,但未定义API 的内部实现。
34、LIN 协会规定:对于采用LIN 规范2.x 版的LIN 节点,如果用C语言开发应用程序,那么就必须使用API,对采用LIN 规范1.x 版的LIN 节点,可以不使用标准规定的API。按照用途,可以把LIN 的API 分为3 类核心API、传输层API 和配置与识别API。三类API 相对独立,彼此关联。核心核心API核心API 是API 的基础,除了完成协议层的帧收发,LIN 应用层各项功能都要用到核心API。核心API 包含多个函数,其中,l_sch_tick()(时基节拍管理)和l_sch_set()(进度表管理)是与进度表相关的两个函数。其他的函数负责控制各种硬件协调工作,完成初始化、
35、中断响应、比特流收发、字节缓冲、休眠、唤醒以及物理层的差错报告等功能。传输层传输层API传输层API 是为配置、识别和诊断这三项服务设置的,是应用层与协议层的接口。传输层API 的功能包括:建立并管理PDU 队列、收发PDU 以及检查PDU 的通信状态。传输层API 接收应用层消息,调用核心API 发送主机请求帧;收到从机应答帧时,传输层剥离协议层的帧头信息获得PDU,送往应用层处理。配置与识别配置与识别API从LIN 规范2.0 版开始,增加了配置与识别API。用于支持应用层的配置功能和识别功能。API 使用示例从机节点初始化从机节点初始化extern unsigned char lin_S
36、omeCotrol_init(void);void PowerON_Reset(void)HardwareSetup();/*系统初始化系统初始化*/if(l_sys_init()/*LIN API 初始化失败初始化失败*/sleep();else if(lin_SomeCotrol_init()/*LIN 相关的模块初始化失败,例如传感器、执相关的模块初始化失败,例如传感器、执行器行器*/sleep();/*其他系统要求的功能其他系统要求的功能*/main();return;/*/*帧收发硬件的驱动程序入口帧收发硬件的驱动程序入口*/const T_Lib_Slave_Handle Slav
37、e_handle=Lin_Drv_Init,Lin_Drv_HeaderIn,Lin_Drv_Pid_RecvReq,Lin_Drv_SendData,Lin_Drv_RecvData,Lin_Drv_SendRecvFinish,Lin_Drv_LinBus_Enable,Lin_Drv_LinBus_Disable,Lin_Drv_WakeUp;/*LIN 网络初始化网络初始化*/unsigned char lin_SomeCotrol_init(void)unsigned char rtn;rtn=0;if(l_ifc_ioctl(0,LIN_ENTRY_SLAVE_DRV,&Slave
38、_handle)/*帧收发硬件的驱动程序初始化失败帧收发硬件的驱动程序初始化失败*/rtn=1u;else l_ifc_init(0);/*LIN 端口初始化端口初始化*/if(l_ifc_connect(0)/*LIN 端口初始化失败端口初始化失败*/rtn=1u;else/*其他必要的操作其他必要的操作*/return rtn;从机节点主程序从机节点主程序#include sfr_r825.h#include Lin_DrvR8C.h#include lin20.hvoid lin_application(void);/*/*Main Function*/*/void main(void)
39、while(1)/*.Something to do*/lin_application();/*.Something to do*/*/*LIN Application Function*/*/extern l_flg Lin_Frm_FrameMst0_flg;extern l_flg Lin_Frm_FrameU1_flg;extern l_flg Lin_Frm_FrameU2_flg;extern l_flg Lin_Frm_FrameU3_flg;extern l_flg Lin_Frm_FrameEve0_flg;extern l_flg Lin_Frm_FrameSlv0_flg
40、;extern l_flg Lin_Sig_Command_flg;extern T_Signal Lin_Sig_Status_Slv0;extern T_Signal Lin_Sig_Status_Slv1;extern T_Signal Lin_Sig_Command;void lin_application(void)l_u8 data8;l_u16 status;/*判断:是否收到了新的帧?判断:是否收到了新的帧?*/if(0!=l_flg_tst(&Lin_Frm_FrameU1_flg)l_flg_clr(&Lin_Frm_FrameU1_flg);/*根据收到的帧执行相应的操作
41、根据收到的帧执行相应的操作*/else if(0!=l_flg_tst(&Lin_Frm_FrameMst0_flg)l_flg_clr(&Lin_Frm_FrameMst0_flg);/*根据收到的帧执行相应的操作根据收到的帧执行相应的操作*/*判断:帧是否已经发出?判断:帧是否已经发出?*/if(0!=l_flg_tst(&Lin_Frm_FrameU2_flg)l_flg_clr(&Lin_Frm_FrameU2_flg);/*执行发送结束之后的操作执行发送结束之后的操作*/else if(0!=l_flg_tst(&Lin_Frm_FrameU3_flg)l_flg_clr(&Lin_
42、Frm_FrameU3_flg);/*执行发送结束之后的操作执行发送结束之后的操作*/else if(0!=l_flg_tst(&Lin_Frm_FrameEve0_flg)l_flg_clr(&Lin_Frm_FrameEve0_flg);/*执行发送结束之后的操作执行发送结束之后的操作*/else if(0!=l_flg_tst(&Lin_Frm_FrameSlv0_flg)l_flg_clr(&Lin_Frm_FrameSlv0_flg);/*执行发送结束之后的操作执行发送结束之后的操作*/status=l_ifc_read_status(0);/*处理可能出现的应答错误处理可能出现的应
43、答错误*/if(status&0 x0001u)/*出现应答错误,执行相关操作出现应答错误,执行相关操作*/if(LD_DATA_AVAILABLE=ld_raw_rx_status(0)ld_get_raw(0,data);/*判断:来自主节点的信号被更新了吗?判断:来自主节点的信号被更新了吗?*/if(0!=l_flg_tst(&Lin_Sig_Command_flg)l_flg_clr(&Lin_Sig_Command_flg);if(0 x1234u=l_u16_rd(&Lin_Sig_Command)l_u16_wr(&Lin_Sig_Status_Slv0,0 x0101u);l_
44、u16_wr(&Lin_Sig_Status_Slv1,0 x0201u);/*其他相关操作其他相关操作*/else if(0 x5678u=l_u16_rd(&Lin_Sig_Command)l_u16_wr(&Lin_Sig_Status_Slv0,0 x0100u);l_u16_wr(&Lin_Sig_Status_Slv1,0 x0200u);/*其他相关操作其他相关操作*/*监测休眠命令监测休眠命令*/if(status&0 x0008u)/*LIN 端口休眠的相关操作端口休眠的相关操作*/return;八、LIN接口器件LIN协议出现以后,各大电子元器件公司很快推出了支持LIN的微
45、控制器以及物理层接口器件。复习:3.2 LIN通信协议二、信息格式与信息传送二、信息格式与信息传送1、信息格式 2、头信息 3、响应域(数据段/数据域中帧的类型)4、报文帧的长度和总线睡眠检测5、进度表 6、状态机(State Machine)实现三、三、LIN 与与 CAN 的比较的比较四、四、LIN 网络开发工作流程网络开发工作流程五、五、LIN的软硬件支持的软硬件支持六、六、LIN配置语言配置语言七、七、LIN应用程序接口(应用程序接口(LIN API)八、八、LIN接口器件接口器件复习:3.2 LIN通信协议二、信息格式与信息传送二、信息格式与信息传送1、信息格式 2、头信息 3、响应域(数据段/数据域中帧的类型)4、报文帧的长度和总线睡眠检测5、进度表 6、状态机(State Machine)实现三、三、LIN 与与 CAN 的比较的比较四、四、LIN 网络开发工作流程网络开发工作流程五、五、LIN的软硬件支持的软硬件支持六、六、LIN配置语言配置语言七、七、LIN应用程序接口(应用程序接口(LIN API)八、八、LIN接口器件接口器件谢谢你的阅读v知识就是财富v丰富你的人生