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.

[参考译文] TM4C123BH6PM:除了设置的 TX 数据、如何发送0x0000?

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1003996/tm4c123bh6pm-how-to-transmit-0x0000-except-for-the-tx-data-which-is-set

器件型号:TM4C123BH6PM

大家好、

 

除了设置的 TX 数据、如何发送0x0000?

客户希望在发送所有缓冲区后发送0x0000。

当在 TM4C123BH6PM 的 SSI_Slave 上设置8 Tx 并且从主器件发送 SPI 通信超过9次时、来自 SSI_Slave 的应答数据始终继续发送第一组数据的内容。

也许、使用八个传输缓冲区、下一个传输数据似乎会返回到第一个缓冲区。

如果 设置为9、则发送第二组数据。

情况1:将从器件 SPI 设置为以下数据:

[缓冲器1] 0x0001

[缓冲区2] 0x0002

[缓冲器3] 0x0003

[缓冲区4] 0x0004

[缓冲区5] 0x0005

[缓冲区6] 0x0006

[缓冲区7] 0x0007

[缓冲区8] 0x0008

在上述情况下、如果 从主器件多次进行 SPI 通信、则第九个之后的所有数据都将在0x0001处输出。

 

情况2:将从器件 SPI 设置为以下数据:

[缓冲器1] 0x0001

[缓冲区2] 0x0002

[缓冲器3] 0x0003

[缓冲区4] 0x0004

[缓冲区5] 0x0005

[缓冲区6] 0x0006

[缓冲区7] 0x0007

[缓冲区8] 0x0008

[缓冲器9] 0x0009

在上述情况下、如果 从主器件多次进行 SPI 通信、则第10次之后的所有数据将输出为0x0002。

 

谢谢、此致、

Kuerbis

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

    您好、Kuerbis、

     我对您的描述不是很清楚。 是指 SPI FIFO 或您在应用中实现的某种类型的环形缓冲器的缓冲器。 SPI FIFO 只有8个位置深、您说在第二种情况下已配置9个缓冲区。 我想它是您在应用程序上实现的软件缓冲器结构、如果不是、请澄清。 当从器件从主器件接收到 SPICLK 时、TX FIFO 中是否有有效数据?

     如果您参考的是发送 FIFO、则数据表上有以下注释。  

    在从机模式下、SSI 在每次主机发起一个传输时发送数据。  如果是发送
    FIFO 为空、主机启动时、从机发送发送的最后一个数据
    FIFO。  如果 SSI 模块时钟发生后写入发送 FIFO 的值少于8个
    使用 RCGCSSI 寄存器中的 Rn 位启用、然后发送0。  应注意
    根据需要确保 FIFO 中存在有效数据。 SSI 模块可配置为产生中断
    或 μ μDMA 请求。

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

    您好、Charles、

     

    客户正在使用 uDAM。 但它们会执行以下程序、然后也会观察到相同的行为。

     

    for (i=1;i < 9;i++){

          HWREG (SSI0_BASE + SSI_O_DR)= I;

      }

     

    当主器件提供时钟时、在第9次传输后发送0x0001。

     

    您需要什么样的信息才能对此进行调查?

    感谢您提供 RCGCSSI 寄存器中 Rn 位的信息。 在这种情况下、从器件生成时钟。 对吧? 客户案例是主器件提供时钟。 所以,不同的情况是,不是。

     

    谢谢、此致、

    Kuerbis

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

    您好、Kuerbis、

     现在我不清楚您的问题。 在最初的问题中、您讨论的是从器件。 现在您似乎在谈论主器件。 您能不能澄清问题是什么。 MCU 是 SPI 从器件还是 SPI 主器件? 如果您是主设备、则会生成 SPI 时钟。 从器件不生成 SPI 时钟。 请先向我说明 MCU 是主设备还是从设备。

     我引用了数据表中的以下陈述。 这是从主器件接收 SPI 时钟的从器件的行为。  请仔细阅读下面以红色突出显示的陈述(如果适用)。 当主器件向您发送时钟时、FIFO 中是否有足够的数据?  

    [引用 userid="93620" URL"~/support/microcontrollers/other-microcontrollers-group/other/f/other-microcontrollers-forum/1003996/tm4c123bh6pm-how-to-transmit-0x0000-except-for-the-tx-data-which-is-set/3709349 #3709349']在从机模式下、SSI 在主机每次发起事务时都会传输数据。  如果是发送
    FIFO 为空、主机启动时、从机发送发送的最后一个数据
    FIFO。  如果 SSI 模块时钟发生后写入发送 FIFO 的值少于8个
    使用 RCGCSSI 寄存器中的 Rn 位启用、然后发送0。  应注意
    根据需要确保 FIFO 中存在有效数据。 SSI 模块可配置为产生中断
    或 μ μDMA 请求。[/报价]
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Charles、

     

    我所说的是从属设备。

    很抱歉,我对 RCGCSSI 寄存器中的 Rn 位作为 SPI 时钟生成有误的理解。 它只是模块时钟启用,而不是 SPI 时钟。

     

    >主设备向您发送时钟时、FIFO 中是否有足够的数据?  

    它们写入数据、主器件开始通信。 那么、我认为 FIFO 中有足够的数据。 但我会问它。

     

    红色陈述与报告的客户不匹配。 你有什么想法吗?

     

    谢谢、此致、

    Kuerbis

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

    尊敬的 Akemi-San:

     我想我已经用电子邮件回复了您。