分类:
2010-07-07 10:42:09
本章介绍LIN的API的概念、功能和一般用法,并以例子的形式介绍了调用API的一般流程。本章内容对应LIN规范的以下部分:
LIN Application Program Interface Specification
-------------- 2007-8-08 -------------------------
Freescale在LIN方面有不少开放的资料,不愧是LIN协议的奠基人!LIN08和LIN12分别是面向HC08(8位MCU)和HC12(16位MCU)的LIN API软件包。这两个包各有2个版本,分别符合LIN 1.3和LIN 2.0。两个包我都粗略看过,由于FS在LIN 2.0版API开发时放弃了自己的API,采用了“第三方”的API库(怀疑是Mentor的),使API部分成了黑盒子,无法深入研究。所以,符合LIN 1.3版的更适合学习。
以下是我学习FS的1.3版源代码的心得:
例程简介:
从节点;
功能符合LIN1.3规范, 支持Unconditional frame和Sporadic frame;
使用了FS自定义的FS API,同时提供符合LIN规范的API供参考;
硬件资源使用ESCI模块及中断,TIM定时器模块及中断。
流程图:uploadfile-/2007-8/88787631.rar
-------------- 2007-8-29 -------------------------
偶然发现瑞萨也免费提供LIN 2.0的API代码,十分感叹,自己身在瑞萨都不能第一时间获得这个消息!叹归叹,立刻看了看,发现瑞萨这个程序的可读性挺好,包含大量详细的代码注释,是学习API实现方法的好教材!
和先前看过的FS LIN相比,感受如下:
-------------- 2007-11-28 -------------------------
-------------- 2008-05-13 -------------------------
-------------- 2008-07-09 -------------------------
最近看了看瑞萨的“代码自动生成和组合工具”SANGO所包含的LIN驱动,发现一处设计错误,提醒正在使用该驱动的朋友注意一下。另外也提出一些我觉得可以改进的点,与朋友们讨论。
这个驱动是用于带有Hardware LIN Module的MCU的,通用性强是一个特色。目前可以用于R8C/Tiny系列中的22/23/24/25/26/27/2C/2D等型号,稍加改动,新出的34/36/38等型号的MCU也能用。
设计错误:
LIN帧校验和算法不符合LIN规范。
可以提高的部分:
处理好驱动部分的软件状态机,使其在处理完一次通信后能够恢复到就绪状态,继续处理下一个帧。
处理好通信错误/异常,使其在发生通信错误之后,能够在帧结束前恢复到就绪状态,继续处理下一个帧。
在接收ID后,节点应该有2种可能的行为,一个是发送应答,一个是继续接收。在目前的代码里,除了0x3c这个诊断ID,从节点对其余ID都只做接收。那么从机什么时候才能给主机发信息?
去掉ID与数据段长度的关联,使其支持LIN 2.x版;
如果要用在汽车电子产品上,需要进行MISRA规则检查。目前的代码还不符合汽车行业的要求。