TI E2E™ 设计支持论坛将于 5 月 30 日至 6 月 1 日进行维护。如果您在此期间需要技术支持,请联系 TI 的客户支持中心寻求帮助。

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.

[参考译文] TMS320F28035:没有 FIFO 的 SCI RX 中断不起作用

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/601180/tms320f28035-sci-rx-interrupt-without-fifo-not-working

器件型号:TMS320F28035
主题中讨论的其他器件:C2000WARE

大家好、

我正在将具有集线站 USB EMU [R3]的 F28035控制卡用于我的项目。

我在使用控制卡时遇到问题、在讨论论坛上找不到任何可行的解决方案。

1–我无法生成 SCI RX 中断(不使用 FIFO)、我已验证所有寄存器设置、但仍然无法通过 SCI 获得 Rx 中断。 但 TX 中断工作正常。 在我的设置中、我直接在 PC 和 MCU 控制卡之间进行通信。 您对此有什么意见吗?

这是我已经尝试过的-  

A -我移除了控制卡上的 R27并将 UART 电缆直接连接到 GPIO 28和29

b -来自控制套件的示例"Example_2803xSci_Echoback"工作正常、但这不使用中断。

B -当我在代码中启用环回模式时、我可以看到 RX 中断工作、但当我禁用环回模式时、我看不到 RX 中断

C -我尝试了其他帖子中讨论的各种其他选项、例如禁用 FIFO 中断、禁用 FIFO、但不幸运。

请告诉我、我是否遗漏了任何重要事项。

此致

Amjad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否在 SCI、PIE 以及 IER 寄存器中启用了中断?

    请参阅 C2000Ware 中 F2837x 的 SCI 中断示例。

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

    你好 Sal、

    感谢您的回答。

    示例 SCI 中断使用 FIFO、但我需要 SCI 使用无 FIFO 的中断。 供您参考-所有3个示例均正常工作。

    是的、我启用了 SCI 中断。

    以下是初始化代码:-

    SCI 设置为:-

       GPIO_setMode (28、GPIO_28_Mode_SCIRXDA);

       GPIO_setMode (29、GPIO_29_Mode_SCITXDA);

       clk_enableSciaClock();

       /*设置 SCI 外设*/

       sci_disable();

       SCI_setNumStopBits (SCI_NumStopBits);

       sci_disableParity ();

       SCI_setCharLength (SCI_CharLength _8_Bits);

       SCI_enableRxErrorInt();

       SCI_enableTx();

       sci_enableRx();

       SCI_setBaudRate (SCI_bauddrate_115_2_kBaud);//根据 LPSCLK 更新枚举,此处 LPOSCLK = 15e+6

       SCI_enableRxInt();

       SCI_enableTxInt();

       //SCI_enableLoopBack ();

       SCI_disableRxFifoInt();

       SCI_disableTxFifoInt();

       sci_disableFifoEnh();

       SciaRegs.SCIFFRX.bit.RXFIFORESET = 0;

       SCI_ENABLE();

    /*中断启用*/

       IER |= M_INT9;

       PieCtrlRegs.PIEIER9.bit.INTx1 = 1;

       PieCtrlRegs.PIEIER9.bit.INTx2 = 1;

       EINT; //启用全局中断 INTM

       ERTM; //启用全局实时中断 DBGM

    调试中的寄存器值:-

    如果我缺少任何内容、请告诉我。

    此致

    Amjad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    可以使用查看 RXBUF 是否正在接收任何数据、或 RX 引脚上是否有任何数据?

    您需要确保数据实际上是首先传送到 SCI 的。

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

    我可以使用示波器在 RX 线上查看数据。
    我无法在 RXBUF 中看到数据。

    此外、使用相同的硬件、我能够运行"Example_2803xSci_Echoback" Fine。 它在发送和接收时都能正常工作。 -唯一的区别是中断源、这个示例不使用 SCI SCIRXINTA_ISR。

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

    Amjad、

    当您尝试从 PC 接收数据时 、接收器错误标志的状态是什么? 这些 内容可在 SCIRXST 寄存 器(RXERROR、BRKDT、FE、OE、PE)中找到、有关这些内容的说明可在 SCI 参考指南的表13中找到。

    我猜您的代码会将 SCI 设置为不同的波特率/奇偶校验等 Echoback 示例。  这可能会导致 RXERROR 标志被置位、从而在应用代码复位接收器之前关闭 SCI 接收器。

    此致、
    Cody

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

    感谢您的回答。

    SCIRXT 寄存器没有变化、除了 RXWAKE 位、所有的值都是零、这是有道理的。

    我不认为存在任何与波特率/奇偶校验相关的问题。 您可以在调试中参阅寄存器值的屏幕截图。 而且、我编写代码的方式是、启动后 MCU 传输几个字节、我可以很好地接收到这些字节。

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

    Amjad、

    我同意、如果没有设置标志 、那么您的诱饵/奇偶校验可能目前不是问题。

    请确认我的理解:

    禁用内部回送的情况下使用代码:您在 RX 寄存器中看不到任何内容。

    启用内部回送的情况下使用完全相同的代码:一切都按预期工作。

    此致、
    Cody

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

    您好 Cody、

    感谢您的回答。

    是的、您的理解是正确的。

    当我启用内部回路模式时、我可以看到两个中断(Rx 和 Tx)。

    但是、当我禁用内部回路模式时、我只能看到 TX 中断、不能看到 Rx 中断。

    此致

    Amjad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您能否确认数据是否在 RX 线上、请使用振荡器?

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

    你好 Sal、

    是的、当然可以。

    我已经为我的现有 SCI Rx/Tx 代码捕获了两个映像:-

    • 示波器捕获-捕获我在 SCI Rx 线路上从 PC 发送数据0x01的时刻。

    • 终端屏幕捕获-您会看到、首先 MCU 向 PC 发送0xAA、然后 PC 尝试向 MCU 发送0x01 -但 MCU 未收到该值、并且没有 RX 中断

    我还在 F28035的"Example_2803xSci_Echoback"示例的终端屏幕上捕获了数据

       

    请注意-两个测试的硬件连接完全相同。

    如果您愿意、我可以将我的源代码分享给您的官方 TI 电子邮件 ID。(此处的论坛不提供)

    此致

    Amjad

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

    Amjad、

    我们很明显可以俯瞰这里的简单事物...

    1. SCICTL1.RXENA 的值是什么?
    2. SCICTL1.Sleep 的价值是什么?
    3. 您是否正在使用自动波特?
    4. 您是否使用多处理器模式(我不希望您使用、因为这是一种简单的点对点通信)?

    是否可以在 SCIRX 连接到 PC 的情况下运行设备

    1. 观察其故障
    2. 暂停器件执行
    3. 断开 PC 连接
    4. 通过使用内存浏览器设置环回 ENA 位来启用内部环回(不要复位器件)
    5. 从暂停的位置继续运行并观察状态(是否设置了任何错误标志、接收器是否正常工作等)

    希望这能使我们更接近解决方案。


    此致、
    Cody

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

    您好 Cody、

    我发现我的代码有问题。 在未知情况下、我为 GPIO 7和 GPIO 28分配了 SCIRXDA 模式。

     它现在正在工作。

    感谢你的帮助。

    此致

    Amjad

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    还不错! 感谢您的更新。 如果您有任何疑问、请随时开始新的主题。

    此致、
    Cody