32LIN通信协议-普通页面课件_第1页
32LIN通信协议-普通页面课件_第2页
32LIN通信协议-普通页面课件_第3页
32LIN通信协议-普通页面课件_第4页
32LIN通信协议-普通页面课件_第5页
已阅读5页,还剩83页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

车载网络技术第三章本地内部连接网络LIN汽车系曹晓琳车载网络技术第三章本地内部连接网络LIN1复习:

3.1LIN概述一、汽车网络分类二、定义LIN(LocalInterconnectNetwork)本地内部连接网络

三、发展历史四、协议规范概述五、LIN特点

1)一主多从2)低成本3)传输确定性4)增删节点方便5)可预测的EMC六、应用七、LIN网络的组网形式

1)单个LIN网络(多个门节点)2)两个LIN网络(左边和右边)3)CAN/LIN之间设专用网关4)具备LIN分层结构的CAN八、LIN与CAN的比较复习:3.1LIN概述2复习:

3.1LIN概述一、汽车网络分类二、定义

LIN(LocalInterconnectNetwork)本地内部连接网络三、发展历史四、协议规范概述五、LIN特点

1)一主多从2)低成本3)传输确定性4)增删节点方便5)可预测的EMC六、应用七、LIN网络的组网形式

1)单个LIN网络(多个门节点)2)两个LIN网络(左边和右边)3)CAN/LIN之间设专用网关4)具备LIN分层结构的CAN八、LIN与CAN的比较复习:3.1LIN概述3复习:

3.2LIN通信协议一、基本概念1、LIN协议的分层结构2、信息的传送和报文帧复习:3.2LIN通信协议4复习:

3.2LIN通信协议一、基本概念1、LIN协议的分层结构2、信息的传送和报文帧复习:3.2LIN通信协议53.1LIN概述3.2LIN通信协议3.3LIN网络结构及应用实例3.1LIN概述632LIN通信协议-普通页面课件7一、基本概念1、LIN协议的分层结构:一、基本概念82、信息的传送(报文帧)2、信息的传送(报文帧)9LIN报文帧LIN报文帧10LIN报文帧LIN报文帧113、信息传送方式(信息路由)LIN网络中的数据交换方式有以下3种方式:(1)数据由主机到从机通信:3、信息传送方式(信息路由)12(2)数据由从机到主机通信;(2)数据由从机到主机通信;13(3)数据由从机到从机通信。(3)数据由从机到从机通信。144、位传输速度受单线传输介质电磁干扰(EMI)的限制,LIN最大位流传输速度为29Kbps;另一方面,为了避免与实际系统定时溢出时间发生冲突,最小位流传输速度限定为1Kbps

。实际应用系统中,建议使用下面的位速率:低速中速高速2400bit/s9600bit/s19200bit/s4、位传输速度低速中速高速2400bit/s9600bit/155、故障检测位错误校验和错误标识符奇偶校验从机不响应错误同步场不一致错误没有总线活动

5、故障检测166、故障界定主节点控制单元主节点的主任务发送:主节点的从任务发送。从节点控制单元从任务发送:从任务接收。6、故障界定177、连接总线LIN网络节点的最大数量不仅由标识符的数量限制(见上面的信息路由)也由总线的物理特性限制。建议LIN网络的节点数量不应超过16。否则,网络阻抗降低,在最坏工作情况下会发生通信故障。每增加一个额外的节点大约降低3%的网络阻抗(30kΩ||~1kΩ)。网络中积累的“电”线长度应少于或等于40m。主机节点的总线端电阻典型值是1kΩ,从机节点是30kΩ。7、连接总线1832LIN通信协议-普通页面课件19逻辑值位值总线电压显性0地隐性1电池逻辑值位值总线电压显性0地隐性1电池208、休眠方式与唤醒为了降低系统的功耗,LIN系统支持没有任何内部活动而且总线驱动器无源的休眠模式。当主节点向网络上发送一个休眠命令时,所有节点进入休眠状态,直到被唤醒之前总线上不会有任何活动。当总线上出现任何活动或节点出现任何内部活动时,节点结束休眠状态。从节点唤醒时,输出一个唤醒信号唤醒主节点,主节点开始初始化内部活动,从节点要等到同步信号后才参与总线通信活动。8、休眠方式与唤醒21二、信息格式与信息传送1、信息格式一个LIN信息帧包括两部分:头信息/帧头:由主任务发送到从任务的同步和标示符信息响应/应答:由一个从任务发送到所有其他从任务的数据信息二、信息格式与信息传送22一个LIN信息帧有同步间隔、同步域、标示符域(受保护ID域)、数据域、校验码域以及响应间隔构成。除起始域与响应间隔,其他部分都是以字节为单位传送,每个字节都有自己的格式,称之为字节域(ByteField)。字节之间有字节间隔(InterByteSpace),在头信息和响应之间有一个响应间隔(ResponseSpace)。这两个间隔的最小值为0。一个LIN信息帧有同步间隔、同步域、标示符域(受保护ID域)232、头信息LIN网络中,每个信息的传送都是以主节点发送头信息开始的。头信息包括同步间隔域、同步域以及PID(ProtectedIdentifier,受保护ID)域。2、头信息24①同步间隔域(BreakField)同步间隔域由同步间隔(Break)和同步间隔域间隔符(BreakDelimiter)构成。①同步间隔域(BreakField)253.2LIN通信协议②同步域(SyncByteField)字节域(ByteField):1位起始位(StartBit,显性)+8位数据位

+1位停止位(StopBit,隐性),是一种标准UART数据传输格式。3.2LIN通信协议②同步域(SyncByteFiel2632LIN通信协议-普通页面课件27从机节点可以不采用精度高的时钟,而采用片上振荡器等精度和成本相对较低的时钟,由此带来的与主机节点时钟产生的偏差,需要通过同步域进行调整,调整的结果是使从机节点数据的位速率与主机节点一致。同步段用于同步的基准时钟为主机节点的时钟。从机节点通过接收主机节点发出的同步段,计算出主机节点位速率,根据计算结果对自身的位速率重新作调整。从机节点可以不采用精度高的时钟,而采用片上振荡器等精度和成本28③受保护ID域(ProtectedIdentifierField)受保护ID段的前6位叫作帧ID(FrameID),加上两个奇偶校验位后称作受保护ID。③受保护ID域(ProtectedIdentifierF29帧ID的范围在0x00~0x3F

之间,共64

个。帧ID标识了帧的类别。从机任务对于帧头作出的反应(接收/发送/忽略应答部分)都是依据帧ID判断的。如果帧ID传输错误,将会导致信号无法正确到达目的地。帧ID的范围在0x00~0x3F之间,共64个。帧ID30因此引入奇偶校验位。其中ID6是ID0、ID1、ID2、ID4的奇校验,ID7是ID1、ID3、ID4、ID5的偶校验。校验公式如下,其中“⊕”代表“异或”运算,“¬”代表“取非”运算。P0=ID0⊕ID1⊕ID2⊕ID4P1=¬(ID1⊕ID3⊕ID4⊕ID5)由公式可以看出,PID不会出现全0或全1的情况,因此,如果从机节点收到了“0xFF”或“0x00”,可判断为传输错误。32LIN通信协议-普通页面课件313、响应域LIN协议中,一帧信息的响应域由数据域和校验码域两部分构成。数据域长度(字节数)由标示符域的ID4、ID5决定。

①数据域(DataField)

3、响应域32数据段包含了两种数据类型:信号(Signal)和诊断消息(Diagnosticmessages)。信号(Signal)由信号携带帧传递,一个帧ID对应的数据段可能包含一个或多个信号。信号更新时要保证其完整性,不能只更新一部分。一个信号通常由一个固定的节点发出,此节点称为该信号的发布节点(Publisher);其余的一个或多个节点接收,它们称为信号的收听节点(Subscriber)。诊断消息(Diagnosticmessage)由诊断帧传递,对消息内容的解析由数据自身和节点状态决定。数据段包含了两种数据类型:信号(Signal)和诊断消息(D3332LIN通信协议-普通页面课件34帧的类型①无条件帧(UnconditionalFrame)②事件触发帧(EventTriggeredFrame)③偶发帧(SporadicFrame)④诊断帧(DiagnosticFrame)⑤保留帧(ReservedFrame)帧的类型35①无条件帧(UnconditionalFrame)无条件帧是具有单一发布节点,无论信号是否发生变化,帧头都被无条件应答的帧。无条件帧在主机任务分配给它的固定的帧时隙中传输。总线上一旦有帧头发送出去,必须有从机任务作应答(即无条件发送应答)。

①无条件帧(UnconditionalFrame)36①无条件帧(UnconditionalFrame)

①无条件帧(UnconditionalFrame)37②事件触发帧(EventTriggeredFrame)事件触发帧是主机节点在一个帧时隙中查询各从机节点的信号是否发生变化时使用的帧,当存在多个发布节点时,通过冲突解决进度表来解决冲突。原先用作轮询的无条件帧,称为与该事件触发帧关联的无条件帧,即事件触发帧的应答部分是与其关联的无条件帧所提供的应答。当发生冲突时,需要立刻中断当前的进度表,启动冲突解决进度表(CollisionResolvingSchedule),重新调用这些关联的无条件帧。其中,冲突解决进度表要求包含所有关联的无条件帧。②事件触发帧(EventTriggeredFrame)38②事件触发帧(EventTriggeredFrame)②事件触发帧(EventTriggeredFrame)39②事件触发帧(EventTriggeredFrame)与事件触发帧关联的多个无条件帧需要满足以下5个条件:数据段包含的数据字节数等长;使用相同的校验和类型;数据段的第一个字节为该无条件帧的受保护ID,这样才能够知道应答是哪个关联的无条件帧发送出来的;由不同的从机节点发布;不能与事件触发帧处于同一个进度表中。②事件触发帧(EventTriggeredFrame)40③偶发帧(SporadicFrame)偶发帧是主机节点在同一帧时隙中当自身信号发生变化时向总线启动发送的帧。当存在多个关联的应答信号变化时,通过事先设定的优先级来仲裁。③偶发帧(SporadicFrame)41③偶发帧(SporadicFrame)③偶发帧(SporadicFrame)42④诊断帧(DiagnosticFrame)诊断帧包括主机请求帧和从机应答帧,主要用于配置、识别和诊断用。主机请求帧(MasterRequestFrame,MRF),帧ID=0x3C,应答部分的发布节点为主机节点;从机应答帧(SlaveResponseFrame,SRF),帧ID=0x3D,应答部分的发布节点为从机节点。数据段规定为8个字节,一律采用标准型校验和。④诊断帧(DiagnosticFrame)43⑤保留帧(ReservedFrame)保留帧的帧ID为0x3E和0x3F,为将来扩展用。⑤保留帧(ReservedFrame)44②校验码域(ChecksumField)校验码域是对帧中所传输的内容进行校验。②校验码域(ChecksumField)45校验和分为标准型校验和(ClassicChecksum)及增强型校验和(EnhancedChecksum),采用标准型校验和还是增强型校验和由主机节点管理,发布节点和各收听节点根据帧ID来判断采用哪种校验和。校验方法为将校验对象的各字节作带进位二进制加法(每当结果大于等于256时就减去255),并将所得最终的和逐位取反,以该结果作为要发送的校验和。接收方根据校验和类型,对接收数据作相同的带进位二进制加法,最终的和不取反,并将该和与接收到的校验和作加法,如果结果为0xFF,则校验和无误。这在一定程度上保证了数据传输的正确性。校验和分为标准型校验和(ClassicChecksum)及46例:采用标准型校验和,Data1=0x4A,Data2=0x55,Data3=0x93,Data4=0xE5例:采用标准型校验和,Data1=0x4A,Data2474、报文帧的长度和总线睡眠检测TFrame_Maximum:帧在总线上传输的最大时间;THeader_Maximum:帧头在总线上传输的最大时间;TResponse_Maximum:应答在总线上传输的最大时间;THeader_Nominal:帧头额定传输时间:同步间隔段(包含同步间隔和同步间隔段间隔符)的最小传输时间+同步段传输时间+受保护ID段传输时间;4、报文帧的长度和总线睡眠检测TFrame_Maximum:48THeader_Rest:帧头的余量:包含字节间间隔,规定为帧头额定传输时间的0.4倍;TResponse_Nominal:应答额定传输时间:数据段传输时间+校验和段传输时间;TResponse_Rest:应答的余量:包含应答间隔以及字节间间隔,规定为应答额定传输时间的0.4倍;Ndata表示数据段包含N个字节。THeader_Rest:帧头的余量:包含字节间间隔,规定为49THeader_Rest:帧头的余量:包含字节间间隔,规定为帧头额定传输时间的0.4倍;TResponse_Nominal:应答额定传输时间:数据段传输时间+校验和段传输时间;TResponse_Rest:应答的余量:包含应答间隔以及字节间间隔,规定为应答额定传输时间的0.4倍;Ndata表示数据段包含N个字节。THeader_Rest:帧头的余量:包含字节间间隔,规定为5032LIN通信协议-普通页面课件51帧在总线上的传输波形帧在总线上525、进度表进度表是帧的调度表,规定总线上帧的传输次序以及各帧在总线上的传输时间。进度表位于主机节点,主机任务根据应用层需要进行调度。这样保证了总线信号的周期性,也能保证总线永远不会发生过载。5、进度表5332LIN通信协议-普通页面课件546、状态机(StateMachine)实现①主机任务的状态机当进度表启动后,主机任务依次发送同步间隔段、同步段和受保护ID段。6、状态机(StateMachine)实现55②从机任务的状态机从机任务负责发布或者接听帧的应答。包括两个状态机:1.同步间隔段和同步段检查器2.帧处理器②从机任务的状态机56②从机任务的状态机②从机任务的状态机57三、LIN与CAN的比较三、LIN与CAN的比较58四、LIN网络开发工作流程为了实现从机节点入网的“即插即用”,LIN规范标准化了LIN网络从设计到生成的工作流程,对应着LIN规范的LINConfigurationLanguageSpecification

→NCF(NodeCapabilityFile)

LINNodeCapabilityLanguageSpecification

→LDF(LINDescriptionFile)四、LIN网络开发工作流程59五、LIN的软硬件支持工具制造商、半导体供应商和第三方软件供应商提供了种类多样的工具和软硬件。全球的LIN协议芯片及其相关驱动程序提供商众多,包括有Philips,Freescale,Infineon,Fujitsu等半导体商提供的硬件包括用于开发主节点的微控制器及相应的软件包、LIN物理层接口等。众多汽车厂商不仅采纳了LIN标准,还付诸行动,将LIN总线应用到批量生产中。五、LIN的软硬件支持60要开发LIN的应用,商品化的开发工具并不是必须的,不过,此类工具确实能提高开发效率,尤其是处理那些同时容纳不同LIN规范版本的节点的网络。要开发LIN的应用,商品化的开发工具并不是必须的,不过,此类61六、LIN配置语言LIN配置语言(LINCL,LINConfigurationLanguage)是LIN标准的一部分,它定义了LIN网络结构和节点以及任务的表示语法。用LINCL形成的一个LIN描述文件就是一个LIN系统的完整描述,包含所有LIN系统的信息和仿真调试所需的信息。因此LINCL为LIN调试开发软件工具的开发者提供了一个标准的语言。六、LIN配置语言62句法的概述

符号意义::=在::=左边的名字用在它右边的句法来表示<>用于标记后面定义的对象|表示选择。可以出现在左边或右边Bold粗体的文字是保留的,它或者是一个保留的字或是一个强制的标点[]方括号中的文字将出现一次或几次()将一些选择子句组合到一起char_string在引号中的任何字符串identifier标识符。典型用于对象的命名;标识符在声明变量时要符合普通C语言的规则integer整数。十进制整数(第一个数字是1~9)或十六进制整数(前缀是0x)real_or_integer实数或整数。实数通常是小数,而且有一个嵌入的小数点句法的概述符号意义::=在::=左边的名字用在它右边的句法63LIN描述文件的定义<LIN_protocol_version_def>LIN协议版本号的定义<LIN_language_version_def>LIN语言版本号的定义<LIN_speed_def>LIN速度的定义<Node_def>节点定义(<Diag_addr_def>)节点诊断地址的定义<Signal_def>信号定义<Frame_def>帧的定义(<Event_triggered_frame_def>)事件触发帧的定义(<Diag_frame_def>)诊断帧的定义<Schedule_table_def>进度表的定义(<Signal_groups_def>)信号组的定义(<Signal_encoding_type_def>)信号编码类型定义(<Signal_representation_def>)信号表示的定义LIN描述文件的定义64LIN描述文件示例//这是一个LIN描述示例文件//由IstvanHorvath发布LIN_description_file;LIN_protocol_version=“1.0”;LIN_language_version=“1.1”;LIN_speed=19.2kbps;Nodes{Master:CEM,5ms,0.1ms;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;LSMFuncIllum: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;MLSHeadLight: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,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;LIN描述文件示例HeadLampBeamLev:4,0,L65CPMRespB4:1,0,CPM;CPMRespB5:1,0,CPM;CPMRespB6:1,0,CPM;CPMRespB7:1,0,CPM;}Frames{VL1_CEM_Frm1:32,CEM{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,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;WaterTempLow,32;WaterTempHigh,40;CPMFuelPump,56;}VL1_CPM_Frm2:34,CPM{CPMRunTime,0;FanIdealSpeed,16;FanMeasSpeed,24;}CPMRespB4:1,0,CPM;MLSOff,10;66VL1_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_Frm1delay15ms;VL1_LSM_Frm1delay15ms;VL1_CPM_Frm1delay20ms;VL1_CPM_Frm2delay20ms;}VL1_ST2{VL1_CEM_Frm1delay15ms;VL1_CEM_Frm2delay20ms;VL1_LSM_Frm1delay15ms;VL1_LSM_Frm2delay20ms;VL1_CEM_Frm1delay15ms;VL1_CPM_Frm1delay20ms;VL1_CPM_Frm2delay20ms;VL1_LSM_Frm1delay15ms;VL1_CPM_Frm3delay20ms;}}Signal_groups{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,0,250,0.5,-40,”degree”;physical_value,251,253,1,0,”undefined”;logical_value,254,”outofrange”;logical_value,255,”error”;}VL1_CPM_Frm3:51,CPM{Signal_gr67Speed{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:RearFogLampInd,PositionLampInd,FrontFogLampInd;Temp:WaterTempLow,WaterTempHigh;Speed:FanIdealSpeed,FanMeasSpeed;}Speed{68七、LIN应用程序接口(LINAPI)

LIN应用接口程序(LINAPI,LINApplicationProgrammer’sInterface)是一个LIN网络软件层,它是LIN标准的一部分。通过LIN标准的这个层,应用软件的设计者不必知道LIN网络配置的底层细节,如信号是怎么构成帧的等,就可以进行应用层软件的设计。LINAPI中,定义了网络系统初始化功能调用、数据和标志状态读/写的调用、时间表调用、节点接口的初始化、连接功能调用以及控制器的中断管理程序。通过LINAPI,应用程序可以方便地写入和读出网络节点上的数据。七、LIN应用程序接口(LINAPI)69

API是一组“规约”,用来定义软件模块的使用方法。

API既可以是数据结构,也可以是若干个函数,还可以是它们的混合。软件开发者可以把API看作是与软件模块的会话方。应用程序和程序员既可以使用该模块的功能,又无需访问其源代码,或者理解其内部工作机制的细节。

API对软件开发意义重大。软件规模日益庞大,常常需要把复杂系统划分成小的组成部分,或者重复使用代码,这时都会涉及到API。32LIN通信协议-普通页面课件70LIN规范用C语言定义了LIN的API,但未定义API的内部实现。LIN协会规定:对于采用LIN规范2.x版的LIN节点,如果用C语言开发应用程序,那么就必须使用API,对采用LIN规范1.x版的LIN节点,可以不使用标准规定的API。按照用途,可以把LIN的API分为3类——核心API、传输层API

和配置与识别API。三类API相对独立,彼此关联。LIN规范用C语言定义了LIN的API,但未定义API71①核心API核心API是API的基础,除了完成协议层的帧收发,LIN应用层各项功能都要用到核心API。核心API包含多个函数,其中,l_sch_tick()(时基节拍管理)和l_sch_set()(进度表管理)是与进度表相关的两个函数。其他的函数负责控制各种硬件协调工作,完成初始化、中断响应、比特流收发、字节缓冲、休眠、唤醒以及物理层的差错报告等功能。①核心API72②传输层API传输层API是为配置、识别和诊断这三项服务设置的,是应用层与协议层的接口。传输层API的功能包括:建立并管理PDU队列、收发PDU以及检查PDU的通信状态。传输层API接收应用层消息,调用核心API发送主机请求帧;收到从机应答帧时,传输层剥离协议层的帧头信息获得PDU,送往应用层处理。②传输层API73③配置与识别API从LIN规范2.0版开始,增加了配置与识别API。用于支持应用层的配置功能和识别功能。③配置与识别API74API使用示例从机节点初始化externunsignedcharlin_SomeCotrol_init(void);voidPowerON_Reset(void){HardwareSetup();/*系统初始化*/if(l_sys_init()){/*LINAPI初始化失败*/sleep();}else{if(lin_SomeCotrol_init()){/*LIN相关的模块初始化失败,例如传感器、执行器*/sleep();}}/*其他系统要求的功能*/main();return;}/*/*帧收发硬件的驱动程序入口*/constT_Lib_Slave_HandleSlave_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};API使用示例从机节点初始化/*帧收发硬件的驱动程序入口75/*LIN网络初始化*/unsignedcharlin_SomeCotrol_init(void){unsignedcharrtn;rtn=0;if(l_ifc_ioctl(0,LIN_ENTRY_SLAVE_DRV,&Slave_handle)){/*帧收发硬件的驱动程序初始化失败*/rtn=1u;}else{l_ifc_init(0);/*LIN端口初始化*/if(l_ifc_connect(0)){/*LIN端口初始化失败*/rtn=1u;}else{/*其他必要的操作*/}}returnrtn;}从机节点主程序#include"sfr_r825.h"#include"Lin_DrvR8C.h"#include"lin20.h"voidlin_application(void);/***************************//*MainFunction*//***************************/voidmain(void){while(1){/*......Somethingtodo*/lin_application();/*......Somethingtodo*/}}/*******************************//*LINApplicationFunction*//*******************************/externl_flgLin_Frm_FrameMst0_flg;externl_flgLin_Frm_FrameU1_flg;externl_flgLin_Frm_FrameU2_flg;externl_flgLin_Frm_FrameU3_flg;externl_flgLin_Frm_FrameEve0_flg;externl_flgLin_Frm_FrameSlv0_flg;externl_flgLin_Sig_Command_flg;externT_SignalLin_Sig_Status_Slv0;externT_SignalLin_Sig_Status_Slv1;externT_SignalLin_Sig_Command;/*LIN网络初始化*/从机节点主程序76voidlin_application(void){l_u8data[8];l_u16status;/*判断:是否收到了新的帧?*/if(0!=l_flg_tst(&Lin_Frm_FrameU1_flg)){l_flg_clr(&Lin_Frm_FrameU1_flg);/*根据收到的帧执行相应的操作*/}elseif(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);/*执行发送结束之后的操作*/}elseif(0!=l_flg_tst(&Lin_Frm_FrameU3_flg)){l_flg_cl

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论