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.

[参考译文] EK-TM4C129EXL:SSI EOT 连续中断

Guru**** 2344370 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/1242368/ek-tm4c129exl-ssi-eot-continuous-interrupt

器件型号:EK-TM4C129EXL
主题中讨论的其他器件:TM4C129ENCPDT、TM4C123

您好!

我在 SSI1的传输结束(EOT)中断方面遇到了一些问题。 EOT 中断启用后立即进入中断处理程序。

我已经确保在启用中断前已经清除了中断标志(以及在 ISR 中):

SSIIntClear (SSI1_BASE、SSI_TXEOT);

_ nop ();//允许在重新启用中断之前清除中断标志
_ nop();
_ nop();
_ nop();
IntEnable (INT_SSI1);

如果不深入介绍所有细节、我看到的内容是否与勘误表 SSI#07 "SSI 发送中断状态位未被锁存"相关? 我想我看到了一个类似症状的帖子、并且 SSI#07是原因、尽管我现在无法找到该帖子。

SSI#07没有 说明 EOT 中断受芯片问题影响、在此之前、我想确定一点、以便进行进一步调查。

谢谢!

马修

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

    Matthew、您好!

     是的,这与勘误表 SSI#07有关。 另请参阅此类似帖子。  https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/510129/interrupt-ssi?tisearch=e2e-sitesearch&keymatch=SSI_TXEOT#

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

    尊敬的 Charles:

    感谢您这么快回复。

    令我部分欣慰的是、勘误表问题导致了这一问题、因为我看不到我做错了什么、但勘误表并不能真正描述我看到的问题、这也让我感到困惑。

    此外、勘误表还涉及 SSICR1.EOT 位置1且 SSICR1.EOT 清零时的情况。 我尚未听说过此位、在数据表(TM4C129ENCPDT、 https://www.ti.com/lit/gpn/tm4c129encpdt)中 我读到  SSICR1寄存器的3-5位是保留的、我没有看到任何称为 EOT 的位。 唯一值得一提的是、该位已从数据表中删除:

    "在 SSI 章节中:-澄清了接收 FIFO 的操作。 对 DMA 操作进行了说明。 –删除了 QSSI 控制1 (SSICR1)寄存器的发送结束(EOT)位4 "

    为什么将其删除?  

    在 CCS 寄存器窗口中、我看到 EOT 位已清除。 我想、如果希望 EOT 中断正常工作、应该设置此位? Ali 我正在设置 SSI 的步骤如下:

    SSIIntDisable (SSI1_BASE、SSI_TXFF | SSI_RXFF | SSI_RXTO | SSI_RXOR);
    SSIIntClear (SSI1_BASE、SSI_TXFF | SSI_RXFF | SSI_RXTO | SSI_RXOR);
    IntRegister (INT_SSI1、SSI1_int_handler);
    SSIIntEnable (SSI1_BASE、SSI_TXEOT);
    IntDisable (INT_SSI1);

    SSIEnable (SSI1_BASE);
    SSIDMAEnable (SSI1_BASE、SSI_DMA_RX);

    ISR 的启动方式为(EOT 是我要使用的唯一中断)。  :

    void SSI1_int_handler (void)
    {
      SSIIntClear (SSI1_BASE、SSI_TXEOT);
      IntDisable (INT_SSI1);

      SET_TEST_PIN();

      //等等...

    我出于好奇心查看了另一份数据表(TM4C1233)、该数据表指出 EOT 位确定 TXRIS 置位的时间、FIFO 半空或 FIFO 全空。

    对于 EOT 中断、我的初始化代码和 ISR 是否正确? 当然、如果勘误表问题意味着这不起作用、这一点有些学术性。

    关于权变措施、我不确定详细的解决方法是否可以帮助我、因为我正在使用计时器 DMA 通道将 RAM 中的六个16位字写入 SSI 数据寄存器(以将 SSI 时钟与 PWM 信号同步、从而生成 连续时钟)。 该操作预计 FIFO 是空的(8个字深)。 您能想到合适的权变措施方法吗?

    由于我每次都发送相同的数据长度、我可以在 SSI TX 开始时启动一个硬件定时器、并使用它的中断来代替 SSI 中断。

    我欢迎您的意见。

    此致、

    马修  

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

    尊敬的 Charles:

    我不小心将我之前的回复标记为解决了这个问题、这是一个错误。

    此致、

    马修

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

    您好、Mathew:

    此外、勘误表还涉及 SSICR1.EOT 位置1且 SSICR1.EOT 清零时的情况。 我尚未听说过此位、在数据表(TM4C129ENCPDT、 https://www.ti.com/lit/gpn/tm4c129encpdt)中 我读到  SSICR1寄存器的3-5位是保留的、我没有看到任何称为 EOT 的位。 唯一值得一提的是、该位已从数据表中删除:

    "在 SSI 章节中:-澄清了接收 FIFO 的操作。 对 DMA 操作进行了说明。 –删除了 QSSI 控制1 (SSICR1)寄存器的发送结束(EOT)位4 "

    为什么将其删除?  

    [/报价]

     我正在阅读内部未发布的数据表、即使它没有 EOT 位。 是的,也许有一个时间点,但从很久以前被删除。 我没有关于为什么将其删除的历史记录。  

    出于好奇,我查看了另一份数据表(TM4C1233),其中指出 EOT 位确定何时设置 TXRIS,是 FIFO 半空还是 FIFO 完全空。

    TM4C123使用 SSI、而不是 QSSI。 我不会在 TM4C129上引用 TM4C123中的 EOT 位。 这可能会导致未知问题。  

    我的初始化代码和 ISR 对于 EOT 中断是否正确? 如果勘误表问题意味着这不起作用,这当然是有些学术性的。

    我真的不会看到您的代码有问题。 我建议您不要参考 EOT 位、因为数据表中没有该位、尽管修订历史记录中提到了该位。 该位可能是在某个时间点存在、但由于使用时可能出现的错误而被删除。 我真的不知道。 我只是不建议使用最新数据表中没有的位。  

    关于权变措施,我不确定详细的方法是否能帮助我,因为我正在使用定时器 DMA 通道将 RAM 中的六个16位字写入 SSI 数据寄存器(以同步 SSI 时钟与 PWM 信号来生成 连续时钟)。 该操作预计 FIFO 是空的(8个字深)。 您能想到合适的权变措施方法吗?

    您是否能够尝试 EOTRIS 来指示传输结束?

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

    尊敬的 Charles:

    一如既往地感谢你的帮助,这一切!

    此致、

    马修