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.

[参考译文] TMS320F280049C:标记/清除 FIFO 模式中的 SCI 错误

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/903529/tms320f280049c-flagging-clearing-of-sci-errors-in-fifo-mode

器件型号:TMS320F280049C

您好!

希望了解在 FIFO 模式 下(SCIFFTX:SCIFFENA=1)、SCI 错误是如何标记/清除的、因为 TRM 在几个点上不会被清除。

  1. 启用 FIFO 时、是否可以说存在4个相关错误和5个错误标志?
    误差 发生错误时设置的错误标志
    中断 SCIRXST:RXERROR 和 SCIRXST:BRKDT
    成帧 SCIRXBUF:SCIFFFE
    奇偶校验 SCIRXBUF:SCIFFPE
    超限 SCIFFRX:RXFFOVF

  2. 是否正确地说、在 FIFO 模式下、 只有中断错误可以触发接收中断(而成帧、奇偶校验和溢出错误只设置必须在接收 ISR 中手动检查的标志)? 为了实现这一点、必须设置 SCICTL1:RXERRINTENA?

  3. 即使启用 FIFO、硬件也会设置 SCIRXST 中的 FE、OE 和 PE 错误标志吗? 即导致不必要地设置 RXERROR 标志。

  4. SCIFFFE 和 SCIFFPE 错误标志是否由软件复位(SCICTL1:SWRESET)或通道复位(SCIFFTX:SCIRST)清除? 或者、它们只能通过直接向标志写入零来清除吗?

谢谢!

此致、

洪恩

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

    1.您的表格看起来正确。

     

    2.否、如果 RXERRINTENA 被使能、中断将被自动触发。  请注意、为了使 BRKDT 产生一个中断、必须使能 RXBKINTENA。

     

    3、是的、这些位与启用的 FIFO 无关。  RXERROR 标志由 BRKDT、FE、OE 和 PE 的逻辑 OR 置位。  请注意 、RXERROR 不会不必要地被置位、但是 如果它确实检测到一个错误、它 将表明这一点。

     

    4、这些位仅在 FIFO 使能时可用。  是的、两 个复位 都将清除这些标志。

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken

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

    您好 Ken、

    感谢您的回复、尽管我对2和4不清楚:

    2.为了检测 BRKDT 错误、我尝试根据 TRM 表23-4的脚注(2)使用 RXERRINTENA 来启用中断。 您在对 Q3的答复中注意到的问题是 FE、PE 和 OE (即使在启用 FIFO 时不相关)也会设置相同的 RXERR 标志并触发中断。

    我所面临的困难是、在发生中断错误时、FE 首先被置位、BRKDT 在此之后只被置位10位次。 是否正确地说、如果我在 BRKDT 被置位前(即10位时间被置位前)通过 SCI 软件复位来清零 FE、那么 BRKDT 将永远不会被置位? 希望 TI 知道、为了编写我的错误处理代码、应该会出现什么预期行为。

    4.我无法用这两个复位中的任何一个来清除 SCIFFFE/SCIFFPE 标志。 是否有办法这样做?

    此致、

    洪恩

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

    我正在调查您的问题、我将很快答复。

    - Ken

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

    谢谢 Ken、非常感谢。

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

    我咨询了设计团队、下面请找到问题2和4的答案:

    FE  由 SCI 软件复位 SWRESET 位清零、SWRESET 位复位 SCI 状态机。 因此,如果 FE 在 BRKDT 置位前清零,则在软件复位后将不会置位 BRKDT。 此外、BRKDT 清除应始终是错误处理 ISR 的一部分。  有一个类似的 e2e 查询:

    https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/655383

     

    根据 SCIRXBUF (位15 SCIFFFE 和位14 SCIFFPE)的寄存器描述 、将通过系统复位来清除。

     

    但愿这对您有所帮助。 如果您的问题得到了解答、请单击绿色的"验证答案"按钮。 谢谢。

    - Ken

     

     

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

    谢谢 Ken、感谢您的帮助。

    此致、

    洪恩