为Arduino库创建Simulink块,如liquidcrystal

ash*_*hah 6 c matlab simulink arduino

我想使用Simulink为Arduino Uno硬件创建程序.但我想使用现有的库,如liquidcrystal,来处理LCD显示器的输出.如何创建包含liquidcrystal类文件的s函数?

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

Ric*_*urs 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 进程来调试它。

富有的