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.

[参考译文] TMS320F28377D:SCI 接收器过量运行错误

Guru**** 2442090 points
Other Parts Discussed in Thread: TMS320F28377D

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1530732/tms320f28377d-sci-receiver-over-run-error

器件型号:TMS320F28377D

工具/软件:

您好团队:

我正在将 RS485 与 TMS320F28377D 控制器配合使用、三个控制器连接在同一 RS485 总线上

我在全部三块电路板上都使用四线 RS485 收发器。

在多个事件后一段时间、任何电路板接收器 ISR 都会停止触发。 调试后、我开始知道  SCIRXST r 的 RXERROR 位  接收状态寄存器为高电平

它显示了 SCI over Run 标志。

我已尝试使用进行重置  SCIRST 注册、但它不会再次进入正常状态。

请建议一种从 SCI 模块中删除此错误的方法或一种在出现错误时复位该错误的方法。

此致、

Bharat

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

    尊敬的 Bharant:

    奇怪的是、驱动器库清除 RX OVF 寄存器位既不起作用、也不清除 RX INT 标志。 也许在 RX FIFO 输入调用之前、将以下具有 MCU 级外设偏移寄存器地址的代码补丁添加到 RX ISR 例程中、它实际上在 x39c、x49c 上工作。 这 RX OVF 标志驱动疯狂终于有足够写了下面的代码嗅探工作。 您可能会丢失 FIFO 数据、但可以重新发送发送发送到客户端发起的数据的 NAK。

      

        /* Check SCIFFRX register FIFO has overflowed */
        //if(SCI_getOverflowStatus(SCIB_BASE))
        if((HWREGH(SCIB_BASE + SCI_O_FFRX) & SCI_FFRX_RXFFOVF) == SCI_FFRX_RXFFOVF)
        {
            // Acknowledge interrupt from PIE group 9
            Interrupt_clearACKGroup(INTERRUPT_ACK_GROUP9);
            /* Clear Rx overflow status */
            //SCI_clearOverflowStatus(SCIB_BASE);
    
            /* Check SCIFFRX register FIFO has overflowed */
            if(HWREGH(SCIB_BASE + SCI_O_FFRX) == 0xB0A6)//0xAEA6
            {
                /* Clear the RXFIFO OVF flag bit */
                HWREGH(SCIB_BASE + SCI_O_FFRX) |=  0x68A6;
                /* Allow RXFIFO flag bit to reset 2ms */
                DEVICE_DELAY_US(2000);
                /* Clear RXFIFO RXINT flag bit */
                HWREGH(SCIB_BASE + SCI_O_FFRX) |= 0x2066;
            }
    
            /* SCIA Prints event message */
            SCIprintf("\n*ClRxOVF&RxIntRXD\n");
        }

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

    尊敬的 Bharat:

    几个问题:

    • 在进行信道复位时、您是否主动尝试发送/接收数据?
    • 您 是否还可以尝试使用软件复位功能?
    • 您在哪里调用重置? 以及要设置哪些其他错误标志(RXERROR 是中断检测,成帧错误,溢出和奇偶校验错误使能标志的逻辑或)?

    此致、

    Allison