6

我想使用 Simulink 为Arduino Uno硬件创建程序。但我想使用现有的库(如液晶)来处理LCD显示器的输出。如何创建包含液晶类文件的 s-function?

我认为 s-function 是要走的路,因为现有的 Simulink Arduino 库模块实际上是被屏蔽的 s-function。我正在使用 Simulink 学生版,所以我认为我不能从模型编译C代码并将其合并到 Arduino IDE 中的项目中。

4

1 回答 1

1

我会把我的评论变成答案...... :)

好的,要从 Simulink 创建程序,您需要安装代码生成工具。ver会告诉您是否有 Simulink Coder,以及可选的 Embedded Coder。如果您使用的是旧版本的 MATLAB,则它称为 Real-time Workshop。如果没有其中一个,您将不会生成任何代码。

因此,假设您可以代码生成:

S-functions 是他们要走的路:http: //www.mathworks.co.uk/help/simulink/s-function-basics.html

...尽管有各种工具可以帮助创建 S-Function。

简而言之,过程是:

  • 获取 sfunc_basic.c(或类似的)S-Function C 文件模板的副本并相应地填充。这无论如何都不是微不足道的,它可能需要很长时间才能编译(见下文)并且在模型中实例化时不会使 MATLAB 崩溃。
  • 使用 mex 命令编译(参见文档)。
  • 在模型中使用块。为自己创建一个执行非常简单的测试工具模型。使用创建工作解决方案所需的最小模型块。
  • 创建一个 TLC 文件,该文件将定义如何在模型 C 程序的编译和运行时使用块数据。在这里,您将调用液晶库。
  • 使用 TLC 和/或 S-Function 生成代码/修复错误/修复生成代码中的错误/重复直到完成:)

所有这些步骤都可以扩展很多。第一次这个过程有点麻烦,但你会学到很多关于 S-Function、model.RTW 文件、TLC 和调试所有上述内容的知识。

哦,是的,调试 S-Function 可能很麻烦。准备好使用 Visual Studio 之类的东西“附加”到 matlab 进程来调试它。

富有的

于 2014-05-04T09:39:48.400 回答