大家好、
我需要一些帮助来启动和运行我的项目。 我有一个 LAUNCHXL-F8377S、我使用的是 LS7366R 正交计数器(www.lsicsi.com/.../LS7366R.pdf)、该计数器从编码器读取 A/B 脉冲、并将该数据存储到计数器中、以便通过 SPI 读取。 计数器需要在启动时通过向一系列寄存器写入数据进行配置。 配置完毕后、我可以通过向同一寄存器写入(然后读取)来反复读取计数器。 这在 CCS 中相当简单、但我要尝试使用 Simulink 中用于德州仪器 C2000处理器的嵌入式编码器支持包。
Simulink 似乎没有一种好的方法来运行某些块作为初始化序列的一部分、并在模型的其余执行过程中忽略它们。 除此之外、我需要在外部模式下执行此操作、这可能会增加额外的困难。 有一个示例显示了使用面向 Simulink 的 Arduino 支持包执行的基本相同过程、我已将其链接如下:
www.mathworks.com/.../communicating-with-an-spi-based-eeprom-using-arduino-hardware.html
基本上、它使用延迟块在第一个时间步进触发 One_Time_Intiization 子系统、并在此后运行执行循环。 因为它适用于 Arduino、所以我怀疑需要执行其他一些配置才能与 LAUNCHXL-F8377S 配合使用。 我已使用 C2000支持包通过以下方式更改 One_TIME_CONFIGURATION 块的内容来复制此内容:
在这里、我将 MOSI 连接到电路板上的 MISO 引脚、以便读取我正在传输的数据。 然后、我将已发送/读取的整数 I 发送到 PWM 模块、以设置占空比、以便在示波器上查看。 当我在外部模式下运行模型时、尽管应退出循环并且不再进入循环、但 One_TIME_INITIALIZATION 子系统中的 SPI 传输块仍能够传输。 我知道这是因为当我更新被馈入 SPI 发送块的值时、ePWM 上的占空比会发生变化。
我知道这可能是一种更好的方法、因此我愿意接受建议(Stateflow?)。 如果我可以确保 one_time_initialization 子系统只执行一次、那么我可以使用 for 循环在连续读取执行循环中的计数器之前按顺序发送配置命令、如下所示:
这可能不是有关 SPI 的问题、而是有关在使用 Simulink 中的 C2000支持包对 Launchpad 进行编码时如何仅执行一组命令的问题。 如果有任何帮助,将不胜感激。
谢谢、
B
