LIN开发流程(for freescale)

1.首先有几个基本概念需要了解:

1)LDF(LIN Configuration Description File):LDF文件描述了一个完整的LIN簇包括主/从节点的模式选择以及处理LIN簇的信息。

2)NPF(Node Private Description File):NPF文件包含的信息包括LIN节点:比如节点名称、接口的数量,单片机的时钟频率,所用得通信信道(如SCI通道)和端口(例如GPIO端口),等所需的能够完整描述节点的信息。


2.基本流程如下图所示:

LIN开发流程(for freescale)_第1张图片


首先编写LDF和NPF,然后通过节点配置工具将二者生成节点配置代码(.c和.h),接下来和LIN驱动代码一起由编译器生成目标代码。



其他信息:

1. 进度表
(处于主机节点的)主机任务会根据进度表输送帧头。进度表具体规定了每个帧头的标识符以及一个帧与下一个帧之间的间隔。主机应用可以使用不同的进度表,并在它们之间进行挑选。

进度表是帧的调度表,规定总线上帧的传输次序以及各帧在总线上的传输时间。进度表位于主机节点,主机任务根据应用层需要进行调度。进度表可以有多个,一般情况下,轮到某个进度表执行的时候,从该进度表规定的入口处开始顺序执行,到进度表的最后一个帧时,如果没有新的进度表启动,则返回到当前的进度表第一个帧循环执行;也有可能在执行某个进度表当中发生中断,执行另一个进度表后再返回,如事件触发帧的冲突解决过程就是一个典型的例子,如下图示:

LIN开发流程(for freescale)_第2张图片
进度表除规定了帧ID的传输次序外,还规定了帧时隙(Frame Slot)的大小。帧时隙是进度表规定的一个帧的帧头起始到下一个的帧的帧头起始的时间。每个帧的帧时隙都可以不同,一个帧时隙对应了进度表的一个入口。

1.1帧时隙
LIN开发流程(for freescale)_第3张图片

其中TFrame_Maximum为帧在总线上传输的最大时间。抖动(Jitter)为帧的同步间隔段的下降沿与帧时隙起始时刻相差的时间。时基(Time Base)LIN子网的最小计时单位,通常设定为5ms10ms。帧时隙必须为时基的整数倍,并且起始于时基的开始时刻(称为时基的节拍(Tick)),切换到另外一个进度表时一定要等到当前帧时隙的结束。


2 ./从机节点与主/从机任务
LIN 的拓扑结构为单线总线,应用了单一主机多从机的概念。总线电平为 12V,传输位速率(Bitrate)最高为20kbps。由于物理层限制,一个LIN网络最多可以连接16个节点,典型应用一般都在12个节点以下,主机节点有且只有一个,从机节点有115个。主机节点(Master Node)包含主机任务(Master Task)和从机任务(Slave Task),从机节点(Slave Node)只包含从机任务,如下图所示:

LIN开发流程(for freescale)_第4张图片


主机任务负责:
(1) 调度总线上帧的传输次序;
(2) 监测数据,处理错误;
(3) 作为标准时钟参考;
(4) 接收从机节点发出的总线唤醒命令。
从机任务不能够主动发送数据,需要接收主机发送的帧头(帧的起始部分,参照3.1节的图3.1),根据帧头
所包含的信息(这里指帧ID,详细内容参照3.1.3)判断:
(1) 发送应答(帧中除帧头外剩下的部分,参照3.1节的图3.1)
(2) 接收应答;
(3) 既不接收也不发送应答。




3.帧的结构
(Frame)包含帧头(Header)和应答(Response)两部分。如下图所示:
LIN开发流程(for freescale)_第5张图片

4.帧在总线上的传输
主机任务负责发送帧头;从机任务接收帧头并对帧头
所包含信息进行解析,然后决定是发送应答,还是接收应答,还是不作任何反应。帧在总线上的传输如图 3.1
所示。


LIN开发流程(for freescale)_第6张图片

5.帧的分类

5.1 无条件帧(Unconditional Frame)
无条件帧是具有单一发布节点,无论信号是否发生变化,帧头都被无条件应答的帧。
无条件帧在主机任务分配给它的固定的帧时隙(参照 3.3 )中传输。总线上一旦有帧头发送出去,必须有从
机任务作应答(即无条件发送应答),如下图所示,其中列出的帧 ID 的值只是为了举例说明,协议并未强制规
定。

LIN开发流程(for freescale)_第7张图片
联的两个无条件帧的帧 ID
别是 0x11 0x12,这些帧 ID 的值只是为了举例说明,协议并未强制规定。
帧 ID = 0x30 应答部分的发布节点为从机节点 1,收听节点为主机节点。典型应用如从机节点 向主机节点
报告自身某信号的状态。
帧 ID = 0x31 应答部分的发布节点为主机节点,收听节点为从机节点 和从机节点 2。典型应用如主机节点
向从机节点发布信息。
帧 ID = 0x32 应答部分的发布节点为从机节点 2,收听节点为从机节点 1。典型应用如从机节点之间彼此通

5.2 事件触发帧(Event Triggered Frame)
事件触发帧是主机节点在一个帧时隙(参照 3.3 )中查询各从机节点的信号是否发生变化时使用的帧,当存
在多个发布节点时,通过冲突解决进度表(参照 3.3 )来解决冲突。
当从机节点信号发生变化的频率较低时,主机任务一次次地轮询各个信号会占用一定的带宽。为了减小带
宽的占用,引入了事件触发帧的概念。
事件触发帧的典型应用就是轮询四个车门的开关情况。与其利用无条件帧每个车门轮询一遍,不如同时对
四个车门进行询问,如果其中一个车门打开了(事件发生),该车门要对询问作应答,即事件触发的含义。这样
做可以减小带宽,但同时会导致两种现象,其一就是没有车门被打开,即无节点应答——事件触发帧允许一帧
中只有帧头无应答;另外一种情况就是冲突,即同时有大于等于两个车门被打开,对该问题同时作答——事件
触发帧允许两个以上的节点对帧头作应答而不视为错误。当发生冲突时,主机节点需要重新作轮询,这样会增
加一些响应时间,但由于事件触发帧本身就用来处理低概率事件,总的来说还是节省了带宽。
原先用作轮询的无条件帧,称为与该事件触发帧关联的无条件帧,即事件触发帧的应答部分是与其关联的
无条件帧所提供的应答。当发生冲突时,需要立刻中断当前的进度表(参照 3.3 ),启动冲突解决进度表(Collision
Resolving Schedule),重新调用这些关联的无条件帧。其中,冲突解决进度表要求包含所有的关联的无条件帧。
图 3.11 示例描述了事件触发帧的传输状况。事件触发帧的帧 ID 0x10,与其关联的两个无条件帧的帧 ID
别是 0x11 0x12,这些帧 ID 的值只是为了举例说明,协议并未强制规定。

LIN开发流程(for freescale)_第8张图片
与事件触发帧关联的多个无条件帧需要满足以下 5 个条件:
(1) 数据段包含的数据字节数等长;
(2) 使用相同的校验和类型;
(3) 数据段的第一个字节为该无条件帧的受保护 ID,这样才能够知道应答是哪个关联的无条件帧发送出来的;
(4) 由不同的从机节点发布;
(5) 不能与事件触发帧处于同一个进度表(参照 3.3 )中。
5.3 偶发帧(Sporadic Frame)
偶发帧是主机节点在同一帧时隙中当自身信号发生变化时向总线启动发送的帧。当存在多个关
联的应答信号变化时,通过事先设定的优先级来仲裁。
与事件触发帧一样,偶发帧的应答也关联了一组无条件帧。规定偶发帧只能由主机节点作为发布节点。偶
发帧的传输可能出现三种状况: 1)当关联的无条件帧没有信号发生变化时,该时隙(参照 3.3 )保持沉默,如图
3.12 第一个帧时隙所示,主机节点连帧头都不需要发送; 2)当其中一个关联的无条件帧包含的信号发生了变化,
则发送该关联的无条件帧的应答部分; 3)如果有两个或两个关联的无条件帧包含的信号发生了变化,则按照事
先规定好的优先级,优先级较高的关联的无条件帧获得发送权,优先级较低的要等到下一个偶发帧的帧头到来
时才能发送应答。由于主机节点是唯一的发布节点,所以主机节点事先就知道各个关联信号的优先级别,这样
在传输时就不会产生冲突。
引入偶发帧的目的在于为进度表增加一些动态特性——当主机节点的信号发生变化时才有通
信发生。事件触发帧和偶发帧反映了帧在不同时机(信号变化或未发生变化)的传输状况,引入它们的目的是为
了增加通信的灵活性

LIN开发流程(for freescale)_第9张图片

5.4 诊断帧(Diagnostic Frame)
诊断帧包括主机请求帧和从机应答帧,主要用于配置、识别和诊断用。主机请求帧(Master Request Frame
MRF),帧 ID = 0x3C,应答部分的发布节点为主机节点;从机应答帧(Slave Response FrameSRF),帧 ID = 0x3D
应答部分的发布节点为从机节点。数据段规定为 8 个字节,一律采用标准型校验和。


你可能感兴趣的:(单片机)