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.

[参考译文] TM4C1294NCPDT:在高级双模中使用 SSI

Guru**** 2469120 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/677382/tm4c1294ncpdt-using-ssi-in-advanced-bi-mode

器件型号:TM4C1294NCPDT

我尝试使用 SSI0同时从两个外部 ADC 接收数据。

在高级双模式(读取)下使用 SSI 似乎对我的应用很有意义。

SSI0CLK 和 SSI0XDATA0 (MOSI)连接到两个 ADC。 ADC1连接到 SSI0XDATA1 (MISO)、ADC2连接到 SSI0XDATA2 (MISO)。

此模式下的 SSI 是否支持此类用例? 从每条数据线接收 FIFO 中的数据是如何存储的?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Richard、
    在高级双 SSI 和四 SSI 模式下、数据传输仅为半双工。 您似乎需要使用 SSI0XDATA0进行发送的全双工设置以及使用 SSI0XDATA1和 SSI0DATA2进行接收的设置。 这不奏效。 有关详细信息、请参阅数据表。

    17.3.3高级、双 SSI 和四 SSI 功能
    BI-SSI 使用两个数据管脚 SSInXDAT0和 SSInXDAT1、这两个管脚可配置为接收或
    发送数据。 在四 SSI 模式下、SSInXDAT0、SSInXDAT1、SSInXDAT2和 SSInXDAT3允许
    一次接收或发送四位数据。 请注意、在双 SSI 和四 SSI 数据传输中
    仅为半双工。
    通过对 SSICR1寄存器的 MODE 位进行编程、可以启用高级、双 SSI 或四 SSI。
    提供了方向位 DIR、用于在双 SSI 或四 SSI 事务期间对操作方向进行编程。
    由于双 SSI 和四 SSI 不能为全双工、DIR 位决定是否为
    RX FIFO 被禁用。 在高级操作中、如果启用 QSSI 模块 TX (写入)模式
    RX FIFO 被自动禁止接收任何数据。 当高级 SSI 在 RX (读取)时
    它作为全双工接口运行。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    查尔斯

    我知道该模式仅在半双工模式下工作。

    如果我只是从 ADC 中读取、这将如何工作?

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

    您好 Richard、

     当您处于 Bi-SSI 模式时、您需要像我之前所说的那样使用 DIR 位来改变数据流的方向。

    通过对 SSICR1寄存器的 MODE 位进行编程、可以启用高级、双 SSI 或四 SSI。

    提供了方向位 DIR、用于在双 SSI 或四 SSI 事务期间对操作方向进行编程

    由于双 SSI 和四 SSI 不能为全双工、DIR 位决定是否为

    RX FIFO 被禁用。

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

    DIR 位是合理的。

    我仍然不明白如何从 SSI 模块读取数据。

    如何从两个数据引脚读取? 数据在两个引脚上同时计时。 如何访问此数据?

    RX FIFO 是否连接到 SSI0XDAT1引脚上的数据?
    TX FIFO 是否与 SSI0XDAT2引脚上的数据绑定?

    读取 SSI_O_DR 寄存器时、连接到不同的数据输入引脚。

    在这种模式下、似乎没有机制从每个 SSI0数据线路读取数据。

    另一个想法是、数据是通过某种方式组合在一起的吗? 是将每个数据线视为单独的串行输入、还是将其视为并行输入数据线?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Richard、
    双 SSI 或四 SSI 模式应与支持多 I/O 的外部 SPI 配合使用 有一些闪存器件支持此类器件。 假设您希望从从器件串行读取数据0x55、SSI 模块主站将提供8个 SSICLK、并且您将收到二进制位0、1、0、1、0、1、0、1、0、1。 如果您处于双模模式、那么 SSI 主设备将提供4个 SSICLK、并且在每个时钟中、您将收到两个位、它们分别为"01"、"01"、"01"、"01"、"01"。 现在您正在尝试将处于双模模式的 SSI 主设备连接到两个不同的 ADC。 这不奏效。 这些 ADC 仍然希望主器件发送8个时钟、而不是4个时钟。 他们不知道主器件是串行、双路或四路。 它们需要8个时钟用于8位数据。

    您不能在应用中使用两个 SSI 模块是否有任何原因? 我想您会让您的项目变得更加简单。