LIN通信开发流程,GENy导入LDF文件、使用GENy生成代码

一、使用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等)。



在这里插入图片描述
本文完。

觉得有用的话,动动你发财的小手手,点个赞,^(∩_∩)^ 谢谢~

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-03-22 19:56:04       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-03-22 19:56:04       106 阅读
  3. 在Django里面运行非项目文件

    2024-03-22 19:56:04       87 阅读
  4. Python语言-面向对象

    2024-03-22 19:56:04       96 阅读

热门阅读

  1. Git 常用命令总结

    2024-03-22 19:56:04       36 阅读
  2. Appium官方文档常用方法介绍

    2024-03-22 19:56:04       45 阅读
  3. C++ 虚函数和多态

    2024-03-22 19:56:04       39 阅读
  4. MPI4.1文档3-MPI过程与MPI数据类型

    2024-03-22 19:56:04       35 阅读
  5. 1064:奥运奖牌计数

    2024-03-22 19:56:04       44 阅读
  6. c++算法学习笔记 (14) 并查集

    2024-03-22 19:56:04       39 阅读
  7. SpringBoot自定义starter开发:定时任务报表开发

    2024-03-22 19:56:04       37 阅读
  8. Rust无法流行起来

    2024-03-22 19:56:04       45 阅读
  9. sqlite简单的增删改查

    2024-03-22 19:56:04       45 阅读
  10. 什么是设计模式?

    2024-03-22 19:56:04       43 阅读
  11. Springboot vue elementui 超市管理系统

    2024-03-22 19:56:04       37 阅读