一、使用GENy导入LDF文件,生成LIN代码
Micro是微控器Cpu,Mcs的12代
Derivativ是此微控器的衍生版,选择适合自己的选项。没有的话,我就是默认第一个MCS12X。
Compile没得选,默认。
填写Channel名,选择LDF文件
选中主机节点,点击OK,添加Channel完成。
如果你的LDF文件是没问题的,此时可以看到所有的帧,信号已经添加进来了:
配置生成代码的路径,自己填
最后生成代码。
二、生成的代码合入到实际项目中
一般来说,项目都会有自己的Base代码。
将生成的代码合入项目中时,由于各项目Base不同,实现逻辑不同,无法给出统一方法。
但是核心数据结构是一样的,下面会列出 需要重点关注的代码文件。它们是:
- lin_par.h
- drv_par.h
- lin_par.c
- drv_par.c
三、各文件 重点内容记录
3.1 lin_par.h
/* -----------------------------------------------------------------------------
&&&~ Macro Access to signals
----------------------------------------------------------------------------- */
这部分定义了信号的临时存储,中间变量
/* -----------------------------------------------------------------------------
&&&~ Access to signals
----------------------------------------------------------------------------- */
这部分定义了 具体各个信号的读取 与 写入接口,它们使用了上面的 Macro Access to signals 做为中间介质。
3.2 drv_par.h
/* -----------------------------------------------------------------------------
&&&~ Signal Structures
----------------------------------------------------------------------------- /
这部分定义了信号的结构体,
/ -----------------------------------------------------------------------------
&&&~ Message Unions
----------------------------------------------------------------------------- */
这部分定义了各个帧的数据存储,与上面的Signal Structures协同工作。
组织最终发往总线的数据时,写入各个信号是通过Signal Structures写入的。取数据时,通过Message Unions的数据数组读取数据(一般是使用vuint8 _c[8];)
由于这部分是共用体 union,写入Signal Structures时,也意味着 _c[8]同时改变了。
3.3 lin_par.c
/* -----------------------------------------------------------------------------
&&&~ Default values for Frames
----------------------------------------------------------------------------- */
这部分定义了各帧的初始时的数据。每帧最多8个字节,如果LDF文件中定义的使用的位数少,那此处生成的数组长度也可能会小一点。
3.4 drv_par.c
/* -----------------------------------------------------------------------------
&&&~ Message Buffers
----------------------------------------------------------------------------- */
调度表轮询向总线发数据时,会从这个Buffer将数据读出来,拼接到 LinLpuartPdu中。
从LIN协议 - LIN帧的结构来讲,这个Buffer就是数据段,LinLpuartPdu 就是一整帧的数据(包括PID,checksum等)。
本文完。
觉得有用的话,动动你发财的小手手,点个赞,^(∩_∩)^ 谢谢~