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.

[参考译文] TM4C129ENCPDT:QSSI 模式和帧格式

Guru**** 2481985 points
Other Parts Discussed in Thread: TM4C129ENCPDT

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/705241/tm4c129encpdt-qssi-modes-and-frame-formats

器件型号:TM4C129ENCPDT

您好 Tiva 团队、

我很困惑 TM4C129ENCPDT 中 QSSI 的工作模式。  请参阅日期为2014年6月18日的数据表第20章。

似乎有四种不同的操作"二极管":传统、高级、双 SSI 和四 SSI。  帧格式似乎也有两种不同:Freescale SPI 和 TI-SSI。  对吧?

根据第20.3.7节、似乎我可以使用四种模式中的任何一种选择帧格式。  对吧?  (尽管根据部分中的"注释"、Freescale 格式在高级/双/四通道模式下的灵活性存在一些限制)。

什么是高级模式?  数据表似乎没有对其进行太多的说明。  我假设它是单个 TX 和 RX 引脚、但 选择8位数据的传统模式 TI-SSI 格式与采用 TI-SSI 格式的高级模式之间有何区别?  它们看起来是一样的(两个都有8位帧和 TI-SSI 帧格式)。

在第20.3.3节的末尾、您可以在 FIFO 中连续传输的不同模式之间切换。  有人为什么要这样做?  似乎只有一个芯片选择引脚(帧信号)、所以您不能更改从 QSSI 内部连接到的器件。  我看不到这种开关功能的用途是什么。

谢谢、

David

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

    尊敬的 David:

    [引用 user="David M. Alter"]操作似乎有四个不同的'mode':传统、高级、双 SSI 和四 SSI。  帧格式似乎也有两种不同:Freescale SPI 和 TI-SSI。  正确?[/报价]

    正确。 我要补充的是、传统模式支持4到16个数据帧、而高级/双 SSI /四 SSI 仅支持8位数据帧。

    [引用 user="David M. Alter"]根据第20.3.7节、我可以选择四种模式中的任意一种帧格式。  对吧?  (尽管根据部分中的"注释"、Freescale 格式在高级/双/四通道模式下的灵活性存在一些限制)。[/引用]

    正确。

    [引用 user="David M. Alter"]高级模式到底是什么?  数据表似乎没有对其进行太多的说明。  我假设它是单个 TX 和 RX 引脚、但 选择8位数据的传统模式 TI-SSI 格式与采用 TI-SSI 格式的高级模式之间有何区别?  它们看起来是一样的(两个都有8位帧和 TI-SSI 帧格式)。

    我同意高级模式定义不明确、我将尝试帮助弥补其中的一些差距。

    首先、高级模式是在 RX 模式下允许全双工操作的唯一模式。

    通过对 SSICR1寄存器的 MODE 位进行编程、可以启用高级、双 SSI 或四 SSI。
    提供了方向位 DIR、用于在双 SSI 或四 SSI 事务期间对操作方向进行编程。
    由于双 SSI 和四 SSI 不能为全双工、DIR 位决定
    是否禁用 RX FIFO。 在高级操作中、如果 QSSI 模块 TX (写入)模式被启用、
    RX FIFO 将自动禁止接收任何数据。 当高级 SSI 处于 RX (读取)
    模式时、它作为全双工接口运行 

    其次、高级模式提供一些具有双/四模式的独特功能、但无需使用双/四模式。

    例如 、SSInFss 功能(第20.3.4节)是高级模式为客户解决问题的一个方面。 如果不使用高级模式、当尝试发送超过16位的数据(通过传统模式的最大长度)时、即使通过 GPIO 手动将 SS 线路下拉、也不可能在数据字节之间存在间隙(如果使用 SSInFss、 传统模式甚至会在字节之间强制 SS 线路处于高电平)。 也就是说、如果没有高级模式、则无法连续发送24位数据。 在高级模式下、只要 TX FIFO 及时加载、多个数据字节就可以流式输出、字节之间没有任何延迟、从而可以创建更大的数据包大小、例如24位。 当然、在这种情况下必须小心、因为 FIFO 被限制在8个字节、但是正确的编码将允许正确加载 FIFO 来实现此功能。

    这只是一个示例、 但更重要的是、高级/双/四路模式共享的一些功能对某些 SSI 操作非常有利、因此、虽然高级模式不会有自己的部分、但与某些应用的传统模式相比、这些功能可以为高级 SSI 模式提供更大的灵活性。

    [引用 user="David M. Alter"]在第20.3.3节的末尾,您可以在 FIFO 中连续事务的不同模式之间切换。  有人为什么要这样做?  似乎只有一个芯片选择引脚(帧信号)、所以您不能更改从 QSSI 内部连接到的器件。  我看不到这种切换功能的用途。[/quot]

    老实说、我不确定自己、在我支持这些器件的过程中、还没有出现这种情况。 有时、列出的所有功能都不会被证明是有用的。 也许社区成员可能有这样的经验、但可以评论其效用。

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

    [引用用户="Ralph Jacobi"]

    David M. Alter
    在第20.3.3节的末尾、您可以在 FIFO 中连续传输的不同模式之间切换。  有人为什么要这样做?  似乎只有一个芯片选择引脚(帧信号)、所以您不能更改从 QSSI 内部连接到的器件。  我看不到这种开关功能的用途是什么。  [/报价]

    我们公司遇到了(多个)高度专业化的 SPI 从器件-这些器件"看起来"是两个独特的 SPI 器件的"混合"。   这种"创造"的目的是通过这种"不神圣 的双重性"实现(非常)独特(即"混合"能力)-最快速/容易实现。    

    我很小心地说、"没有任何声明"、这是此类"动态 模式开关"的(唯一)解释。   相反、这是 我们(曾)遇到的、并且出于  对供应商拉尔夫的尊重和友谊而"被提议"的情况。。。  (根据他的上诉----在上面张贴)

    我认为、对 ARM MCU 供应商(可能)的"更广泛搜索"进一步揭示 了此类(动态模式切换)器件的"意图和处理方式"。    所有此类"关键/新信息"-很少驻留在"一个和唯一一个"-源和/或区域。   (因此、我的团队经常敦促使用"供应商不可知"的开发工具/挂钩/方法。)

    另请注意-海报依赖于2014年 CYL 数据演示-低于最佳-用于"实时和/或高效" 的"高级" 信息收集...

    我们遇到的是(包括)医疗和国防应用程序-因此不能说更多了。   而且- 我们被告知-有报告说这种技术-甚至进一步扩展...   (不神圣的"贞洁"-有人吗?)
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1、

    非常感谢您为您提供这项功能的体验、非常感谢!! *喜欢*
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    主席先生,你是最受欢迎的。

    我很高兴我创造了“不神圣的双性!”   将其扩展为“贞洁度”... 以前做过(很多、很多次)!"

    以某种方式(现在)引入"混合"-在这个主题中发出嘎嘎声...  (不能用蜡烛“不神圣的双性”)

    我本周和一个了解“更多”的人一起航行-如果有真正的兴趣的话-我(五月)... '取出(进一步)。'   (不过,另一家 ARM 供应商提供了更多(而且更现代)的详细信息... 这种"基础广泛" 的卓越调查技能-始终增加价值!)

    "技术人员"对这种古咒的"详细信息"的"关注"证明了其好奇心。    (也许(偶数)值得解释...)

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

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

    拉尔夫

    我有一个后续问题。  假设您有两个 TM4C 器件在高级模式下使用 QSSI 相互通信。

    一个器件需要具有传输模式 DIR=1。  数据来自哪个引脚(例如 SSInXDAT0/TX)?

    另一个器件需要将 DIR=0设置为接收模式。  数据在哪个引脚上接收(例如 SSInXDAT1/RX)?

    我问的原因是我上面提到的引脚是否正确、这需要交叉接线引脚连接、例如 D0->D1。  这与半双工双工双工和四双工连接不兼容,它们是直向 D0->D0、D1->D1,... 。

    谢谢、

    David

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

    TX 和 RX 指示 GPIO 专用于锁定该功能的传统模式。 对于高级模式、我认为您应该能够将一个器件的 D0设置为 TX、将另一个器件的 D0设置为 RX。 在 GPIO 电平上、我看不到会阻止您执行此操作的任何特定引脚配置、SSI 寄存器也不会发出任何红色标志。

    但是、我认为高级模式不会用于与其他 TM4C 器件的器件间通信、正如您所描述的、 我们没有任何这样做的示例、因此我建议在电路板布局之前测试该操作、以验证不存在意外限制。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    拉尔夫

    感谢您的快速响应。

    [引用用户="Ralph Jacobi"]

    对于高级模式、我认为您应该能够将一个器件的 D0设置为 TX、将另一个器件的 D0设置为 RX。 在 GPIO 电平上、我看不到会阻止您执行此操作的任何特定引脚配置、SSI 寄存器也不会发出任何红色标志。  

    [/报价]
    我可能缺少一些东西、但我看不到任何允许您更改 TX/RX 分配给的引脚的寄存器。  您会怎么做?
    此致、
    David
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 David:

    根据我的读数、关键是根据您的预期操作设置 DIR 位。 我相信同一个引脚可以同时用于 TX 和 RX、因为我看不到您可以将高级模式设置为使用两个引脚的方法、其中一个是 TX、另一个是 RX、但仍然可以获得高级模式的优势。 我看到的工作方法是将器件1设置为 TX 且 DIR = 0、将器件2设置为 RX 且 DIR = 1。

    这是基于数据表中的这条注释:"在高级操作中、如果启用了 QSSI 模块 TX (写入)模式
    RX FIFO 被自动禁止接收任何数据。"

    因此、您需要根据所需的内容切换 DIR 位。 在高级模式下、我看不到"SInXDAT0"是 TX、"SInXDAT1"是 RX 的设置。

    大家可以看到、对于 MCU 到 MCU 的通信设置、这并不是理想的、因此我的评论是、高级 SSI 模式并不完全适合您在这里尝试实现的目标。

    唯一的另一种可能是、我不知道如何使用所述的单线、并且高级模式需要 TX 和 RX 线、但 DS 不指示这一点、因为它仅提到传统模式引脚分配。 此外、DS 不提供任何配置来确定哪个引脚是 TX 引脚与哪个引脚是 RX 引脚、因此我实际上看不到一种方法、即获取 SSInXDAT0以仅连接到 SSInXDAT0、而获取 SSInXDAT1以仅连接到 SSInXDAT1以仅连接 RX 引脚。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ralph、

    数据表20.3.3的同一部分也显示了这一点

    当高级 SSI 处于 RX (读取)模式时、它作为全双工接口运行。

    因此、对于全双工、我假设 TX 位于 SSInXDAT0上、RX 位于 SSInXDAT1上。 我还假设在写模式下、TX 仍然在 SSInXDAT0上。

    你同意吗?

    无论您对 DIR 位执行什么操作、我都看不到任何更改方法。

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

    很好的标注、我的脑海中充斥着这样一个事实、即提到全双工意味着需要第二行、因此在这种情况下、它必须同时需要 TX 和 RX 行。 但是、这意味着我们现在处于"此外、DS 不提供任何配置来确定哪个引脚是 TX 引脚、哪个引脚是 RX 引脚、 因此、我实际上看不到一种方法、即获取 SSInXDAT0以仅连接到 SSInXDAT0 (用于 TX)、而获取 SSInXDAT1以仅连接到 SSInXDAT1 (用于 RX)。" 因此、您仍然会被束缚在交叉线的约束上。