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.

[参考译文] TMS570LS3137:SCI RX 中断循环

Guru**** 2617025 points

Other Parts Discussed in Thread: HALCOGEN

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/780342/tms570ls3137-sci-rx-interrupt-looping

器件型号:TMS570LS3137
主题中讨论的其他器件:HALCOGEN

您好!

我目前正在围绕 TMS570LS3137ZWT Hercules 开发套件开展一个项目。 我需要设置 LIN (处于 SCI 模式)模块以用作 UART。 正常程序流必须在接收数据时中断、以便在某些缓冲区中设置。

HALCoGen 用于在以下配置中生成代码:

-启用 SCI2驱动程序

-在 SCI/LIN 全局模式中启用 RX INT

- SCI/LIN 数据格式设置为适合项目、对应于 PC 端的设置

-在 SCI/LIN 端口中、TX 引脚被设定为输出方向、RX 和 TX 引脚 SCI、上拉模式

- VIM 通道13和24被启用,IRQ (奇怪的是,我似乎不必调用 vimInit()来使中断正常工作)

接收到数据时出现问题。 PC 发送一个字节、SCI RX 中断检测并检索到该字节。 之后、中断循环、即连续触发中断。

附加的是生成此错误的最小代码片段。 "controller_main.h"仅包含函数 ControllerMain()和 UponSCIReceive()的原型。 ControllerMain()在 main()中的"sys_main.c"中调用(在那里没有发生任何其他情况)。 如果标志为 SCI_RX_INT (那里没有发生其他情况),则在 sciNotification()中调用 UponSCIReceive()。 除了 SCI RX 之外、没有其他 SCI 中断被启用。 中断成功地被用来执行一个 HET 定时器和其它东西(在代码段中未显示)。 循环会使 sciSend()或 UponSCIReceive()中放置的任何代码连续执行。

e2e.ti.com/.../8182.controller_5F00_main.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    您的代码看起来正常。
    当 SCI 将新接收的数据从 SCIRXSHF 传输到 SCIRD 时、接收就绪(RXRDY)标志被置位。 因此、RXRDY 标志指示 SCI 有新的数据要读取。 RXRDY 位通过读取 SCIRD 寄存器清零。
    我对以下两件事感到怀疑:
    -PC 是否未重新发送字符;
    - TMS570LS3137ZWT 赫丘利斯开发套件上的 SCILIN 端口(SCI2)不仅被连接至 J11、在 J11上、我假设您已经将 UART->USB 适配器连接至 U27 (FT2232HL)并且被用作一个 UART 至 USB。
    用 SCI 更改 SCILIN( SCI2)是否有问题?

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

    您好、Miro、

    感谢你的答复。

    PC 似乎没有重新发送字符(我如何知道在没有将示波器连接到线路的情况下是否会重新发送字符?)。 我在以下情况下尝试发送:
    -在时间合适时,从将处理通讯的定制程序中;
    -来自 RealTerm;
    -来自 Code Composer Studio 嵌入式控制台。
    这三种方法产生相同的结果。 我使用来自 J7上 JTAG/SCI 端口的 SCI、即 USB 接口。
    另一个 SCI 应连接另一个器件、因此我应使该 SCILIN 正常工作。 如果我正确地安装了、另一个 SCI 的焊球 N2上有 TX 引脚、而 W3上有 RX 引脚、因此使用这些引脚与 PC 连接并不有利。

    此致、
    Christophe

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我认为您没有使用板载 UART->USB。
    我将在我的地方进行一些测试!

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

    您好!

    我使用 SCI2进行了板载终端测试、无法观察到与您相同的行为。

    e2e.ti.com/.../2604.e2e_5F00_SCI_5F00_INT.zip

    此致、

    米罗

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

    实际上、我在.zip 存档中编译了项目并将其上传到了我的板上、并获得了预期行为。
    我做了更多的测试,并看到如果我只是处理 sciNotification()函数内的中断,一切都很好。
    但是,如果我从 sciNotification()中的另一个标头调用函数,那么我似乎得到了中断循环行为。
    我真的不知道这是如何发生的、也不知道为什么。 我猜这个错误一定在我的一边、但我找不到它。

    解决方法是处理 sciNotification()中的中断而无需外部函数调用,或者使用 DMA 传输数据。

    感谢您的帮助、如果您了解螺旋桨的位置、请告诉我。

    此致、
    Christophe
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Christophe、
    我现在要关闭此主题。 我将进行更多测试、并尝试重新创建。

    此致、
    米罗