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.

[参考译文] 具有 RM46/48 MCU 的三模块化冗余(TMR)

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/579657/triple-modular-redundancy-tmr-with-rm46-48-mcus

主题中讨论的其他器件:TPS653850-Q1RM46L852

大家好!

我计划为无人系统/无人机设计新的三模块冗余(TMR)飞行控制器和自动驾驶仪。 基于 RM46的简单自动舵已存在一个项目:

因此、我对用于 MCU 内部通信和同步的端口有几个问题。 我找到了一篇有关 DSP TMR 的有趣文章:( ) 请访问第23页。

我的主要问题是:

1) 1)是否更好地使用 MibSPI 或 SPI 在 MCU 之间进行通信?

2) 2)是否最好使用 MibSPI 或 SPI 读取 IMU 传感器(例如 MPU9250)?

3) 3)更好地使用 eTPWM 或 HET?

提前感谢您的反馈。  

-Jarno

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

    您好、Jarno、

    首先、很难就这些问题提供相关建议、因为我们对您的系统要求一无所知、因此请根据我们的建议考虑、我们的建议可能不适合您的系统。

    [引用 USER="Jarno Puff]1)最好使用 MibSPI 或 SPI 在 MCU 之间进行通信?[/引用]

    当然、SPI 是最常用于器件间通信的协议、波特率高达25MBits /秒、也非常快。 许多信息可以非常快速地传输。 当然、如果需要/需要功能安全、则应考虑使用内置错误通知、例如位错误、消息奇偶校验错误、数据溢出错误等 此外、您还应考虑使用一些与协议相关的附加安全概念、例如数据包 CRC (由 ISO26262和 IEC61508定义的信息冗余)和传输冗余、例如数据包/数据的冗余传输、以确保传输期间不会出现瞬态故障。  

    [引用 USER="Jarno Puff]2)最好使用 MibSPI 或 SPI 来读取 IMU 传感器(例如 MPU9250)?

    这取决于带宽需求。 当然、如果您发送的数据包具有多个数据字节或比标准 SPI 消息类型更长的数据、MibSPI 将是最佳选择。 即传输多个字节以实现64位数据字。 MibSPI 可让您将数据组合成传输组、然后一起处理。 如果数据可以作为单独的16位数据发送,并由数据流每一端的应用程序管理,则可能 SPI 也会起作用。 这实际上取决于您、应根据带宽需求进行评估。 我强烈建议使用 DMA 来减少 SPI/MibSPI ISR 内的 CPU 负载和时间。

    [引用 user="Jarno Puff"] 3)最好使用 eTPWM 或 HET?[/quot]

    这也取决于您的需求。 以确保 ePWM 和 NHET 均应满足您的需求。 NHET 在灵活性方面更加先进、并且可在无需 CPU 干预的情况下自主运行。 不过、NHET 的学习和编程可能很困难、因此也许首先从 ePWM 开始进行基本操作、然后当您获得更高级的需求或需要比 ePWM 提供的更多通道时、请查看 NHET。

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

    感谢您的快速响应。
    1) 1)如果我理解正确、所有 MibSPI 也可以用作标准 SPI、我是对的? 最后、如果我有4线 SPI MCU 到 MCU 连接、我可以测试并选择最适合我的应用的连接。 对吧? 最后、我想获得与上面链接的 DSP-TMR 项目中描述的相同架构。 但我不会把 PWM 发送给多数选民,而是会使用 CAN 总线。

    2) 2)我将使用大约1.000Hz 的 IMU

    3) 3)好的、我可以使用4个 ePWM 和4个 NHET 端口、因此我在板上都有这两个端口。 这有道理吗?

    4)对于电源、我想使用 TPS653850-Q1 (www.ti.com/.../description)。 这是否是 RM46L852的合适选择、或者是否有更好的选择? TPS 具有用于 MCU 通信的 SPI 总线、但我无法确定这是必须是专用 SPI 总线、还是可以与 EEPROM、SD 卡和 FRAM 等其他器件共享。

    5) 5)我需要使用 Futaba S.bus 协议、但我从未在 Hercules 上使用过它、因此我不知道应该使用哪种 MCU 端口。 对于那里的 PPM、我将使用 eCAP、但对于 S.bus、我将使用 eCAP? 在此处、您可以根据协议规格建议使用哪一个 MCU 端口(GIO、eCAP、HET 等): developer.mbed.org/.../

    谢谢、此致、

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

    您好、Jarno、

    [引用 USER="Jarno Puff]1)如果我理解正确、所有 MibSPI 也可以用作标准 SPI、我是对的? 最后、如果我有4线 SPI MCU 到 MCU 连接、我可以测试并选择最适合我的应用的连接。 对吧? 最后、我想获得与上面链接的 DSP-TMR 项目中描述的相同架构。 但我不会把 PWM 发送给多数选民,而是会使用 CAN 总线。
    [/报价]

    是的。 只要您选择一组 MibSPI 引脚、您就可以使用缓冲功能或在兼容模式(4引脚模式下均可)下使用该功能。

    3) 3)好的、我可以使用4个 ePWM 和4个 NHET 端口、所以我在板上都有。 这是否有意义?[/引述]

    这两种情况都可以、但我建议您看看哪种情况更适合您的需求。 如果 ePWM 为您所用、我认为它们更容易实现;但是、如果您需要比它们提供的功能/灵活性更多的功能/灵活性、即使编程和使用更加复杂、NHET 也有很大的灵活性。

    [引述 USER="Jarno Puff]4)我想使用 TPS653850-Q1的电源 (www.ti.com

    说明)。 这是否是 RM46L852的合适选择 、或者是否有更好的选择? TPS 具有用于 MCU 通信的 SPI 总线、但我无法确定这是必须是专用 SPI 总线、还是可以与 EEPROM、SD 卡和 FRAM 等其他器件共享。 [/报价]

    我不熟悉该 PMIC。 我们经常建议器件的用户考虑 TPS65381、尽管由于某些问题需要修改版本、TPS65381的可用性最近有限。 该器件具有专门设计用于 Hercules 器件的 Q&A 看门狗和 nERROR 监控等功能。 我们提供了一份应用手册、其中概述了 TPS65381和 Hercules 器件的集成。 如果 SPI 也是 TPS65381中的 Q&A 看门狗、我建议使用专用 SPI。

    [引用 USER="Jarno Puff]5)我需要使用 F5aba S.bus 协议,但我从未在 Hercules 上使用过它,所以我不知道应该使用哪种 MCU 端口。 对于那里的 PPM、我将使用 eCAP、但对于 S.bus、我将使用 eCAP? 在此处、您可以根据协议规格建议使用哪一个 MCU 端口(GIO、eCAP、HET 等): developer.mbed.org/.../

    遗憾的是、我完全不熟悉此界面。 然而、NHET 具有多种用途并且能够用于串行协议"位拆裂"。 我们已经成功地模拟了 I2C、SCI、SPI、并使用 NHET 模块发送了数据、因此我怀疑对于 Fetaba S.bus 协议可能也可以这样做。

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

    非常感谢您的建议。 我曾考虑使用 TPS65381、但它已标记为"NRND"、因此我选择了另一个。 但是、如果您说它仍然可用、我将使用它。 遗憾的是、我没有专用的可用 SPI、希望与 FRAM 和压力传感器共享:

    MIBSPI3.
    MIBSPI3CLK -> V9
    MIBSPI3SIMO -> W8
    MIBSPI3SOMI -> V8
    MibSPI3 CS0–MS5211 -> V10
    MibSPI3 CS1 -> V5 -> MDCLK
    MibSPI3 CS2–MS5525 -> B2
    MibSPI3 CS3–FRAM -> C3
    MibSPI3 CS4–TPS65381 -> E3


    关于 SPI 内容、我有最后一个(可能是最后一个)问题。 MibSPI5引脚与 RMII 和 ePWM4A 复用。 如果我选择使用 SPI/MibSPI 函数、我可以选择不使用 CS0、还是将它们硬连接到 SPI5函数? 我需要用于 PWM 输出的 ePWM4A 来驱动8个电机中的一个。

    MIBSPI5
    MIBSPI5CLK -> H19 -> RMII_TXEN
    MIBSPI5SIMO -> J19 -> RMII_TXD1
    MIBSPI5SOMI -> J18 -> RMII_TXD0
    MibSPI5 CS0 -> E19 -> EPWM4A
    MibSPI5 CS1 -> B6
    MibSPI5 CS2 -> W6
    MibSPI5 CS3 -> T12

    感谢 NHET 的建议、我们会考虑它。 是否可以将其选择为反相串行格式? SBus 是一件有趣的事情。 它使用具有25字节传输的100000波特反相 UART。


    最棒的

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

    您好、Jarno、

    我知道 TPS65381被标记为 NRND、但我认为这是 由于他们目前正在进行的修订更改。 对于这方面的明确答案、我建议将问题发布到他们的论坛、以获取产品支持特定的建议。

    [引用 USER="Jarno Puff">不幸的是、我没有专用的可用 SPI、想与 FRAM 和压力传感器共享:

    MIBSPI3.
    MIBSPI3CLK -> V9
    MIBSPI3SIMO -> W8
    MIBSPI3SOMI -> V8
    MibSPI3 CS0–MS5211 -> V10
    MibSPI3 CS1 -> V5 -> MDCLK
    MibSPI3 CS2–MS5525 -> B2
    MibSPI3 CS3–FRAM -> C3
    MibSPI3 CS4–TPS65381 -> E3[/引用]

    这应该可以正常工作。 请记住、TPS SPI 输入的功能之一是问答看门狗、因此请注意、并确保您可以为所需的 WD 带宽提供服务。

    [引用 user="Jarno Puff">关于 SPI 内容、我有最后一个(可能是最后一个)问题。 MibSPI5引脚与 RMII 和 ePWM4A 复用。 如果我选择使用 SPI/MibSPI 函数、我可以选择不使用 CS0、还是将它们硬连接到 SPI5函数? 我需要用于 PWM 输出的 ePWM4A 来驱动8个电机中的一个。

    MIBSPI5
    MIBSPI5CLK -> H19 -> RMII_TXEN
    MIBSPI5SIMO -> J19 -> RMII_TXD1
    MIBSPI5SOMI -> J18 -> RMII_TXD0
    MibSPI5 CS0 -> E19 -> EPWM4A
    MibSPI5 CS1 -> B6
    MibSPI5 CS2 -> W6
    MibSPI5 CS3 -> T12[/引用]

    这也应该很好。 可以为每个 TG 分配相应的 CS。

    最后、关于您对 NHET 的问题。 您可以使用现有的 SCI/UART 参考设计来帮助实施新协议。 我想唯一的技巧是更改捕捉正在移入的输入位时所处的边沿、对吧? 一旦接收到一个完整字节、您将使用 HTU 将值传输到一个缓冲区。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Chuck,非常感谢! 现在、我有一些基本输入来继续进行硬件设计。

    最棒的

    雅诺