您的位置:首页 > 其它

Canoe & LIN 学习笔记

2017-12-27 10:37 239 查看
写在开头

这个刚开始接触的时候有点难度,很正常,好歹没有旷日持久的事情,慢慢的象我这么笨的

人也能慢慢理解,高考考了2次才勉强上个二本,上了大学又无所适从整天玩游戏,很快四年过去了那会一脸蒙蔽,工作了才开始各种后悔。没有好好学习,有自己的因素也有环境的因素,不扯了总不能一直象中学一样需要人盯着你学习吧。绝大多数的学习还是没有掌握方法所以才不得要领,学起来很吃力,我就是这么样的人,哭死。。。

没办法生活要继续就慢慢悟吧…也没有白白浪费的阅历就当是自我安慰了。

下面开始LIN 以及Canoe的一些学习笔记如有错误恳请指正

 

 

 

 

协议规范:

New Frame/New Table

帧里有信号

 报头                                响应

间隔场   同步场 标志符场

显性间隔间隔界定 字节间隔 响应间隔

 

发送一个字节需要10个位时间(Tbit)

Start bit 0-7 Stop bit

 

间隔场(BreakField) = 间隔信号(至少13个显性位组成)+间隔界定符(至少由1个隐性位)

 

同步场(SyncBreak Field): 为了确保所有节点使用与主节点相同的波特率发送和接收数据

 

一个字节结构固定0X55;

Start bit 1010 1010 Stop bit

 

标志符场(IdentifierField):

Start bit 0-5  P0 P1  Stop bit

ID 0-63

奇偶校验(baidu 查不复杂)P0,P1

以上就是整个报头的内容

 

下面就是响应:

数据场(Data field)1-8个字节

Start bit (LSB) b0 b1 …Stop bit

最后是校验和场(Checksum Field)

校验数据是否正确

又分经典校验/增强校验(协议版本不同1.3/2.0)

0x3C 0x3D只能使用经典校验

 

翻转8位和校验(不是很复杂:先是相加超过FF就减掉FF,最后剩下的+X要=FF;这个X就是Checksum的数据)

 

帧长度(FrameLength):

 

最小帧长度13+1 = 14bit     8+2      8+2     (8+2)*(1-8)            8+2

 

 

最大= 1.4*(最小)

 

帧类型(FrameType):

Unconditional frame

Event triggered frame

Sporadic frame

Diagnostic frame

User-defined frame

Reserved frame

 

调度表(Schedule Table)

LIN总线最小时间单位Tbase

一帧报文的时间称为TFrame__Slot

偏移(Jitter)

偏移是指一帧报文实际开始发送的时刻与帧时隙起点的时间差

 

主任务行为模型(Task Behavior Model)

从任务行为模型:

 

 

网络管理(NM)

Reset-> initial->work->Sleep->Initial

初始化到工作状态要在100ms内完成

工作模式接收睡眠命令或总线空闲4-10s进入睡眠

睡眠模式接收到唤醒信号或者内部唤醒请求进入初始化

(拉低电平(显性电平)唤醒)

 

ID 0X3C 0 FF FF FF FF FF FF FF 睡眠命令

 

 

 

 

 

 

唤醒(wake up):

在一个处于睡眠状态的LIN网络中,任何一个节点都可以发送唤醒信号

 唤醒信号是一个250us(在20Kbit/s波特率下的0xF0)到5ms(在1Kbit/s波特率下的0xF0)的显性电平

 每一个从节点都需要做检测唤醒信号(持续150us以上的显性位)

当检测到唤醒信号之后,在100ms以内完成初始化工作

 

 

当从节点发出唤醒信号之后150ms,主节点仍未发送报头时,从节点可以再次发送唤醒信号。当连续发送了3次唤醒信号之后如果主节点仍未发送报头,从节点要等待1.5秒以后才可以再次发送唤醒信号

 

接收节点检测的唤醒信号:

 

 

状态管理:

 

每个从节点用Response_Error(1bit)来表示自身状态,这个位需要通过响应来发送

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: