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.

[参考译文] TM4C123GH6PM:SSI 模块-如何在模式0和模式1之间安全切换

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/617506/tm4c123gh6pm-ssi-module---how-to-safely-switch-between-mode-0-and-mode-1

器件型号:TM4C123GH6PM

大家好、我正在尝试解决 SSI 模块上的问题。 一条总线上的器件。 一个是"模式1器件"、另一个是"模式0器件"。 如何属性更改 SSI 模式?

开始时、我将数据发送到"模式0器件"、因此我调用此函数来设置 SSI 模块:

SSIConfigSetExpClk (SSI3_base、SysCtlClockGet ()、SSI_FRF_MOTO_MOTO_0、SSI_MODE_MASTER、50000、8); 

当我想将数据发送到"模式1器件"时、我调用相同的函数、但使用另一个模式参数:

SSIConfigSetExpClk (SSI3_base、SysCtlClockGet ()、SSI_FRF_MOTO_MOTO_1、SSI_MODE_MASTER、50000、8); 

我的问题是、这是一个好的做法、还是我必须禁用模块、更改参数和启用模块。

谢谢、

1月

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

    [引用用户="Jan Juranek">...using SSI 模块... 我在一条总线上有两个器件。[/quot]

    虽然未声明-每个器件必须有单独的"芯片选择"-这是不是真的吗?

    现在既不严格、也没有"在模式之间切换"(正如您所建议的)、但是"芯片选择的独立性"应该正确地"隔离"每个从器件。   未知或有疑问的是、" MCU 如何或如果将证明接受这一点、"动态"模式会发生变化。"   

    在没有"直接工厂指导"的情况下-您是否不会在示波器中捕获 "每个 SPI 模式的总线事务"-包括"之前和之后"这种模式更改-提供(一些)见解和舒适性?   

    我怀疑"最佳实践"会在进行此类更改之前看到您"禁用 SPI 模块"。   (这不会造成太多的时间损失)  、而您现在(可能)的 MCU 在"禁用安全"的情况下似乎运行良好-这种行为可能(不)会在将来继续发生-尤其是在引入 MCU 过程更改的情况下。

    通过"旁路外设禁用"、"几乎没有收获"、我选择在"更受控制"(模式更改前禁用)方法下更有保证的安全和"已知条件"。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Jan、
    如果您可以确保 FIFO 已完全耗尽、并且所有未完成的 SPI 事务已完全完成、则可以更改模式。 但是、为了安全起见、请根据 CB1的建议在切换模式之前额外禁用 SPI。
    我们还有其他支持 SPI 的 TI MCU、该 MCU 支持多个 CS、并且每个 CS 具有不同格式/模式的功能。 SPI 的内部内核负责不同 CS 模式之间的切换。 TM4C 并非如此。 因此、应用必须确保模式切换是一种非常干净的方式。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    G'Day Charles、

    可能(更多)涉及技术的业务/财务方面(在这里大多数人)、因此应注意"风险回报"的概念。

    尽管海报肯定并提出了问题-任何"收获"似乎都是"轻微的"-而"风险"现在似乎是未知的(由于"罕见"、"即时"模式变化)-因此、"应以谨慎为主导"。 (即、如海报所述-"在这种(重复)模式更改之前禁用外设-是首选...)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我看不到在选择之间禁用 SPI 模块的任何原因。 您需要做的是、在取消选择时验证外设是否会关闭其接口。 我已经看到"SPI 外设"、即使在取消选择时也仍然对时钟做出反应。

    另一个限制是、您可能不应使用 SPI 外设的内置 FSS (在任何情况下都不应使用该 FSS、这会带来比它更值得的麻烦)。

    在最坏的情况下、您在外设前面添加了一个具有使能(连接到 CS 线路)的缓冲器、以确保未选择时不会出现干扰。 请注意、如果您在更改模式时需要使用 SPI 使能进行此保护、则在更改模式时禁用 SPI 时也需要此保护。

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

    [报价用户="Robert Adsett72"]我没有看到在选择之间禁用 SPI 模块的任何原因。

    我会做-并将进一步详细介绍。   因此、"动态"模式切换(相对而言)在这里是罕见的-这种切换是否已收到供应商的(正常/习惯)详尽的"套件测试"令人怀疑。   这会引入"风险因素"-这不是吗?    (即使 germlin 发生在其第20个甚至更高的计数上、"动态"模式也会发生变化。)

    虽然您"不(尚未)看到任何原因"-但"邀请潜在风险"(忽略返回到安全/已知的"初始条件")是否有意义是值得怀疑的。   而且,虽然没有人怀疑你过去的经历,正如你/我经常说的那样,"每一个案例都证明是独一无二的!"

    我完全同意、"取消选择"从器件可能会揭示问题-并且"必须"进行测试/验证。   (您已经看到"对时钟的反应"-我已经看到(从数据输出)"捕获总线!")

    至于、在 SPI 模式改变之前、"改变模式"-我会(积极)禁用两个器件(使任何/所有芯片选择处于非活动状态)之前(任何)禁用或启用此类"。

    我相信事实是,我们,“只是不知道”这种“模式改变”的潜在影响,以及(一些)抗辩(即海报建议的禁用/启用-在我之前的“取消每一个奴隶的选择”的帮助下)应该作为一种开始的测试方法。   (当然还需要通过海报进行深入的审查-并且他的"接受"比任何新的/更改的 SPI 从属设备都可能"不会以类似的方式做出反应"。)

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

    [引用 USER="CB1_MOBILE"]

    Robert Adsett72.
    我看不到在选择之间禁用 SPI 模块的任何原因。

    我会做-并将进一步详细介绍。   因此、"动态"模式切换(相对而言)在这里是罕见的-这种切换是否已接受供应商(正常/习惯)的详尽测试令人怀疑。   这会引入"风险因素"-这不是吗?    (即使 germlin 在其第20个甚至更高的数量上发生、"动态"模式也会发生变化。)

    [/报价]

    首先、我认为它的风险要比重复启用/禁用模块的风险小一些。 也更易于验证。

    [引用 USER="CB1_MOBILE]]我完全同意、从器件的"取消选择"可能会揭示问题-并且"必须"进行测试/验证。   (您已经看到"对时钟的反应"-我已经看到(从数据输出)"捕获总线!")[/quot]

    好的一点、我也看到过这一点。 值得注意的是、即使两个外设都能够使用相同的模式、也存在这两种风险。

    [引用 USER="CB1_MOBIST"]至于、"更改模式"-在(任何)此类"禁用或启用"之前、我会(积极)禁用两个器件(使任何/所有芯片选择处于非活动状态)-在 SPI 模式更改之前。[/QUERP]

    毫无疑问。 这个要求是我不使用 SPI 内置从器件选择的原因的一部分。

    ----

    在我看来、存在(可能)第三个选项。 通过将逆变器适当插入时钟(或在某些情况下为数据)线路、可以将某些 SPI 模式转换为另一种模式。 如果可以执行此操作、则可以避免更改模式的需要和风险。 您需要首先绘制波形并将其与数据表要求进行比较、然后使用示波器/逻辑分析仪进行测量、以验证时序、但在任何情况下都确实需要这样做。

    Robert

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

    [引用 user="Robert Adsett72"]通过将逆变器适当插入时钟(或在某些情况下为数据)行,可以将某些 SPI 模式转换为另一种模式。

    不是破坏“相似”——“神圣”(都知道)论坛神应该创造,“真的很喜欢!”

    真的很喜欢…  真的很喜欢…  真的很喜欢…  真的很喜欢… 非常喜欢

    太棒了,太棒了!   (这说明了(软冻) tundra 附近的"大降压"(流)。)    逆变器必须速度相当快-以避免引入"设置和/或保持"违规行为。  一个伟大的-"减少问题"-如果不是完全解决问题)想法!    干得不错。   (并且通常-更容易"弯曲硬件"-而不是"上游游泳"-尤其是当那些"上游水域"[*]被证明是浑浊/未知的时候!)  

    另请注意、可以(始终)找到用于(其余)逆变器部分的方法。   (或使用"微型-单路逆变器"(sot-23)。)

    [*] (从器件和 MCU 对模式更改和/或禁用的处理)

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

    为了进一步的利益、"间接 MCU 问题解决"-通过"已更改条件- MCU 外部"-另一种方法出现。   由于只有两个 SPI 从器件在"运行中"-(实际上)查找具有相同 SPI 工作 模式的从器件的难度有多大?   事实上,是否考虑了这种做法?

    种方法消除了 SPI 模式切换以及对"外部硬件"的所有需求、因此应充分考虑...  (海报"不太可能"严格搜索"模式共享从属设备"、(缺点)直接导致这种(模式共享)困境。)

    总之-寻找海报、"在 SPI 模式之间安全切换"。    实现"安全"目标的最佳(和最可靠)方法(显然)可能源于"不切换?"    (即选择共享相同从模式或"足够灵活"以使从器件能够"选择、从而匹配"SPI 模式...)

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

    [引用 USER="CB1_MOBIT]*因为只有两个 SPI 从器件在"运行中"-(实际上)有多难-找到具有相同 SPI 工作 模式的从器件?  [/报价]

    甚至更好。  但具体的困难程度取决于 IC 的工作原理。

    Robert

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

    感谢您-为您提供了指导、建议"非 MCU"是指"解决问题"。   我只是跟着你的"新鲜的钎焊小径"、甚至跟"不专业(即生产的员工)的木球菌"一起、这条小径让你的"清理!"    (无切换比"有风险"切换更好!)  

    应根据功能和"易于集成"来选择系统组件。    (此类"融合"是否得到公平/适当的承认(仍有疑问)。)