This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] TMS320F2808:传感器的集成问题和 Simulink 中的 TMS320F2808

Guru**** 1840780 points
Other Parts Discussed in Thread: AM1808, TMS320F2808
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/781265/tms320f2808-integration-problem-of-a-sensor-and-tms320f2808-in-simulink

器件型号:TMS320F2808
主题中讨论的其他器件:AM1808

大家好、

我遇到了与 Simulink 相关的问题。

我有 STIM210陀螺仪传感器、我从 Simulink 中处理器(TMS320F2808)的 SCI 接口读取该传感器。 此外、还与另一个处理器(AM1808)进行 SPI 通信、在该处理器中、我通过 GPIO 引脚发送 PWM 信号、以告知我已准备好进行 SPI 通信。 AM1808处理器对 PWM 周期进行计数、以了解 TMS320F2808是否正常工作。 如果被计数的 PWM 周期不等于预期的周期、它会始终向 TMS320F2808发送复位信号、以便重新启动 SPI 通信和所有其他外设正常工作。 在进行此介绍之后、出现了以下问题:

如果在 TMS320F2808工作之前 STIM210未上电、TMS320F2808处理器将无法正常工作。 以下内容理解了这一点:

-如果 AM1808处理器对 TMS320F2808发送的 PWM 周期进行计数、它会发现周期数是(1/8)倍、应为(cycle_count=cycle_counted_w应该 为/8)。  

如果发生这种情况、TMS320F2808处理器将不再正常工作、它需要进行电源复位以修复问题。

我愿意接受各种想法和建议。

谢谢。

 

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    从陈述中:
    "如果在 TMS320F2808工作之前 STIM210未上电、TMS320F2808处理器无法正常工作"
    在以下情况下是否正确:
    "如果 STIM210在 TMS320F2808工作之前加电、TMS320F2808处理器工作正常。"

    还是 TMS320F2808无法从 SCI 接口读取? 您能否独立测试并确认?

    很抱歉,从对你问题的描述来看,没有什么可以帮助我们调查我们一方的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Venkatesh、

    首先、感谢您的快速响应。 您是对的、描述效率低。 很抱歉。 但是、就我搜索到的内容而言、问题出在 SCI 接口及其生成的代码上。 让我详细解释一下层次结构、也许您可以更好地了解:

    我们提供了 STIM210、可通过 RS485收发器(ADM2582E)读取该收发器、需要在读取操作之前启用该收发器。 首先、我们通过低电平有效输入启用收发器、然后将陀螺仪数据作为其输出。 收发器的输出引脚连接到 SCIRXDA、我们在这里通过 Simulink 中的 SCI 接收块进行收集。 这是读取陀螺仪的主要层次结构。

    现在、如果在为 STIM210加电之前为陀螺仪加电、通常我们可以读取陀螺仪而不会出现任何错误。 当我们不为 STIM210加电并为 TMS320F2808加电时、会出现此问题。 通常、除了陀螺仪读数之外、我们的模型中还需要运行其他几个过程和算法。 如果我们无法从陀螺仪接收任何数据、我们的代码似乎会卡在那里、不会再执行任何操作。 要重新运行、我们需要对整个机制进行电源复位。 当我调试到 Code Composer Studio 中的代码中时、我会遇到几件事情:

    -scia_rcv () 函数只是进入 while 循环,在收到数据之前不会将其保留一段时间。

    -离开时、它返回一个激活  RXERRA 的错误 、而 在 RXERRA 中、 只有一行  asm (" nop")。 它不会将 SCI 接收块的输出分配给任何东西。 之后、我们的代码会卡住、不再工作。

    我希望这澄清了问题。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我理解问题。 但是、由于 SCI 接收是一个全局变量、如果未接收到数据、它必须读取为零。 您是否不会将该块读取为默认值。 如果条件为零、则应用程序将执行什么操作。 也许这是一个线索。

    轮询有一个延迟、可通过在中断上下文下使用块来克服。 在这种情况下、在中断下使用块将有所帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "轮询有一个延迟、可以通过在中断上下文下使用块来克服该延迟。 在这种情况下、使用中断下的块将有所帮助。"

    我不理解这句话。 您是否告诉我在 TI 库下的 Simulink 中使用模型中的某些特定块?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    请参阅示例;
    in.mathworks.com/.../adc-pwm-synchronization-via-adc-interrupt.html

    如何使用硬件中断块来设置中断。 您可以尝试在中断块下使用 SCI Rx 块。
    注:您需要为 SCIRX 中断配置硬件中断块。 双击硬件中断块后、只需单击"Help"按钮、这将为您提供指导。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    更多问题:

    -除了上述情况外,PWM 信号的频率为何会降低? 我在最初的帖子中提到了这种 PWM 情况。

    -该延迟在轮询中持续多长时间?

    -scia_rcv()中的轮询会 使代码无法执行多长时间?  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    您可能希望调查您的应用程序、以了解您看到的某些行为。
    要计算轮询延迟、您可以切换 GPIO 以计算时间。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    我提出了一些意见。 我们的问题似乎来自 SCI 接收块的工作原理。 如果未接收到数据、则只需在 while 循环中等待、直到数据在特定的时间内被接收。 当代码处于 while 循环中时、我们的代码应该在1毫秒内运行、运行速度要慢得多。 之后、它离开 while 循环、并返回等于1的超时错误。 最后一个问题是:

    -scia_rcv()函数中进入 while 循环时,代码运行速度会慢得多,这是否正常? 它的运行速度要慢得多、我实时观察到了。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    考虑到现在无法配置的延迟因素、最好的权变措施是使用中断。
    还有一个示例'c28069pmsfocdual_ERT'、其中我们配置了串行接收中断。 我认为使用中断将有助于解决您的问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我们现在已经提出了一个解决方案、不是使用中断、而是使用中断方法。 感谢你的帮助。