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.

[参考译文] LAUNCHXL-F280049C:C2000ware 清除溢出 RXFFIO RXFFINT RXFFFFOVF 标志补丁

Guru**** 2465890 points
Other Parts Discussed in Thread: C2000WARE

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1495767/launchxl-f280049c-c2000ware-clear-overflow-rxffio-rxffint-rxffovf-flag-patches

器件型号:LAUNCHXL-F280049C
Thread 中讨论的其他器件:C2000WARE

工具与软件:

C2000Ware 调用失败问题清除 RXFIFFO RXOVF 和 RXINT 标志。 奇怪的是、下面的十六进制代码似乎在符号不起作用的情况下起作用。

下面的 HWREGH 补丁实际上用于清除 RXOVF 和 RXFFINT 标志。 尽管您仍很好奇为什么 C2000Ware 清除溢出调用函数无法清除这些登录任务的标志以使其正常工作或其他情况。 注意组清除 ACK 似乎允许清除 RXFFINT 标志、因为该标志仅存在于底部附近的 RXFIFO ISR。  注意到的 x49c TRM 指示函数底部附近的组 ACK 放置。 不过、不确定 GroupClearACK 是否有助于 C2000ware [SCI_clearOverflowStatus (SCIB_BASE)]。

在 RXFFINT 被清除之后以及可能在 ClearACKgroup 被置为有效之后、任何注释都欢迎使用补丁 RXFFINT 和 TXFFINT ISR 来分别捕获 RXFFOVF。

/* 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)
    {
       /* 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;
    }
}