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.
您好!
希望了解在 FIFO 模式 下(SCIFFTX:SCIFFENA=1)、SCI 错误是如何标记/清除的、因为 TRM 在几个点上不会被清除。
误差 | 发生错误时设置的错误标志 |
中断 | SCIRXST:RXERROR 和 SCIRXST:BRKDT |
成帧 | SCIRXBUF:SCIFFFE |
奇偶校验 | SCIRXBUF:SCIFFPE |
超限 | SCIFFRX:RXFFOVF |
谢谢!
此致、
洪恩
洪
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、感谢您的帮助。
此致、
洪恩