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 Tx-FIFO

Guru**** 2482105 points


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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/715727/tm4c1294ncpdt-how-to-clear-the-ssi-tx-fifo

器件型号:TM4C1294NCPDT

对每个人来说都是美好的一天

我有一个非常简单的问题。 在使用 TM4C1294的 RTOS 应用中、我有一项任务、就是侦听通过外部主器件的 SPI 传输传入的任何字节。 工作完美。

但在我的 TX-Fifo 中、有几个字节在主器件发送内容时进行交换。 现在发生的情况是、当主器件请求意外的字节数时、同步丢失。 嗯、我不知道 TX-Fifo 中到底有多少字节和剩余什么。 我的简单问题是、如何清除 Tx-FIFO? 没有找到寄存器来管理这个简单的问题!

如果其他人比我了解更多、那会很好。  Klaus-Michael

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Claus、
    没有这样的寄存器位来清零 TX FIFO。 在这种情况下、我建议您为 SPI 从器件调用 SPI_Close()或调用 TivaWare 驱动程序 API SysCtlPeripheralDisable()、然后调用 SysCtlPeripheralEnable。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    不要怀疑/质疑("在这里/现在!"除外)   不会、 "回顾 DriverLib -提供有价值的见解?"   因此...

    SSIEnable (uint32_t ui32Base)


    //检查参数。
    assert (_SSIBaseValid (ui32Base));
    //读取-修改-写入使能位。
    HWREG (ui32Base + SSI_O_CR1)|= SSI_CR1_SSE;

    //

    SSIDisable (uint32_t ui32Base)


    //检查参数。
    assert (_SSIBaseValid (ui32Base));
    //读取-修改-写入使能位。
    HWREG (ui32Base + SSI_O_CR1)&=~(SSI_CR1_SSE);

    AAS - SSI FIFO 没有"清除和/或故意处理"-显示时会出现(我的已启用)识别...

    虽然"野蛮"- 人们会期望"外设复位"-会实现该间隙-但需要 Perhiperal (重复)初始化!

    [编辑]... 哎呀-刚刚注意到您建议了'SysCtlPeripheralDisable()' (不知怎么)'Crack sta'(OK - Moi)错过了!   (你能说, Dumkopf!)   我们正在检查-并将发布/报告...

    现在我们的初衷是:

    //! 禁用外设。
    //! 此函数禁用外设。 一旦被禁用、它们将不运行或者对寄存器读取/写入做出响应
    //

    无效
    SysCtlPeripheralDisable (uint32_t ui32Peripheral)

    //检查参数。
    Assert (_SysCtlPeripheralValid (ui32Peripheral));

    //禁用此外设。
    HWREGBITW (SYSCTL_RCGCBASE +((ui32Peripheral & 0x0000)>> 8)、
    ui32Peripheral & 0xff)= 0;

    不清楚(至少对我来说)是否 有(此) 功能、"确实清除了 SSI FIFO "。   为了保护您的客户端-用户- SSI-FIFO (和/或)、大多数这样的'FIFO'''都'没有充分解释'-并且它们的位置在这里可能会是过度挑战。   (一定要包括这位记者...)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1、
    我建议使用 SSE 位、但我不确定它是否会复位 FIFO 指针、或者只是停止 SPI、直到它再次被重新启用。 如果 FIFO 指针不清零、那么一旦 SPI 再次使能、FIFO 中先前的固有数据仍然可以输出到总线。 这就是我建议外设复位的原因。 如果从器件失去与主器件的同步、我认为不仅可以复位从器件、还可以复位主器件以重新建立同步。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    大家都同意、大家可能会注意到、我的团队是"外设复位"的"忠实粉丝"、因为这可以确保外设从已知/稳定的初始条件中"停止"。   也就是说、您没有建议'SysCtlPeripheralDisable ()'-在'Close/Ments'时-证明()'Peripheral Reset (外设复位)'。

    '问题解决帖子'-首先识别  SysCtlPeripheralReset()-是我的-在这里展示(第一)@ 06:48-今天早上...

    然而-有一个(严重)"下载"至"外设复位!"    正如您所知-外设必须 (然后)完全"重新初始化!"   因此-用户以"时间"(外设初始化并准备就绪)换取"稳健性"- 希望"干净重启"能够提供...

    假定(希望可以)可能存在"清除 SSI FIFO"的"其他方法"。   然而(如前所述)技术写作人员提供了:

    •  仅指导的"最低限度"
    • 和/或"自己不知道"
    • 或者只需选择"不共享"  

    现在、根据您的建议 、" SSE 位、但我不确定它是否会复位 FIFO 指针"  这里的工作人员(这些人处于唤醒状态)"深度不存在"- 未发现

    寄存器3:SSI 数据寄存器(SSIDR)、偏移量0x008

    即使  SSICR1寄存 器的 SSE 位清零、发送 FIFO 和接收 FIFO 也不会被清零、从而允许软件在使能 SSI 模块之前填充发送 FIFO。

    也许-如果他"与我们在一起"-海报可能会注意到他的"问题" (在谁的眼中?) - 通过发出"SI 外设复位"调用 (然后重新初始化)(这是人们的高度期待)可以(很可能)实现、该调用应"清除 SSI 的 TX (和 RX) FIFO。"   (海报将其声明为""-可能会遇到一些(当之无愧的)挑战!)

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 CB1、
    感谢您抓住我的错误。 当我写外设复位时、我引用了错误的 API。 SysCtlPeripheralDisable 将关闭到外设的时钟。 SysCtlPeripheralReset 是为了创建一个到外设的软件复位。 你是对的。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Charles、

    我们建议您"确保"SE"位不会导致 FIFO 复位!   (请参阅员工的"确认查找"-您的确切指导-以上内容)

    再一次-甚至是一只"盲松鼠"-偶然发现了一只(偶尔)胡桃木。 (在读取或写入该线程期间,没有松鼠,特别是失明的松鼠受到伤害。 对核桃也不能说同样的……)

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

    感谢所有贡献者、

    百叶松鼠还在身边。 我想"核桃"在 Fifos 方面设计得不好。 我对外设复位和新设置不满意。 这可能会导致主器件的传输丢失。
    通常、主器件将按预期运行、并始终发送所需的字节数。 现在、我要实现一个神奇的返回主器件、让他知道、当从器件失去同步时。 然后、他可以发送额外的命令来触发外设复位。 这将是一个保存权变措施...

    对我来说,这个问题已尽可能得到解决。  Klaus-Michael  

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

    由于您的"解决方案"源于之前"确定并推荐使用"外设重置"-(曾)被称为"野蛮"-公平(以及考虑投入的时间/精力(代表您))将产生"双奖"-一个给您(针对外设重置的"收紧"(按需)触发) 第二个是"该 关键功能的标识符"-它代表(并保持)您的"最佳且唯一的"希望...