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.

[参考译文] CCS/TMS570LC4357:SCI TMS570通过中断接收

Guru**** 2486805 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/733340/ccs-tms570lc4357-sci-tms570-receive-via-interrupt

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

工具/软件:Code Composer Studio

您好!

我使用 TMS570 Launchpad 通过 SCI 接口进行通信。 我正在尝试在同一个板上从 SCI1发送到 sci3。(SCI1用于发送/ sci3用于接收)。

我已在 SCI 全局选项卡中为 sci3上的 Rx 启用了中断、也在 VIM 通道 sci3高/低中断中启用了中断、并为 sci3启用了 pinmux。 在头文件_enable_interrupt_()中,我看到 这被用来为非操作系统使用启用中断(但我也尝试了_enable_IRQ_interrupt_())。 在板上、我将 SCI1的 TX 连接到 sci3的 Rx。

当我进行调试时,我注意到 sciNotification()从未被触发。

我还将附加我的主源文件。

e2e.ti.com/.../4338.HL_5F00_sys_5F00_main.c

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ciprian、
    请将"sciEnableNotification (sciREG3、1);"更改为"sciEnableNotification (sciREG3、SCI_RX_INT);"
    在 sciSend 之前移动 sciEnableNotification 函数。
    请告诉我这是否解决了问题。 如果这无法解决此问题、请向我发送 HALCoGen 文件。
    您是否有示波器来检查传输是否完成?

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

    这是设置:

    引脚 J5.44 (UA1TX)连接到引脚 J1.3 (UA3RX)

    我已经做过你说的、它不起作用。 我甚至现在也尝试过它。 我成功地在不使用中断的情况下使用 sendbyte 和 receivebyte 传输数据、但我想实现中断。

    遗憾 的是,我没有示波器,但我检查了 sci->TD 寄存器,它是发送缓冲区,数据通过它被正确移动。

    奇怪的是、我对一个较旧的项目执行了相同的操作、它启用了中断、但即使这样、数据也未按预期进行传输。

    此致、

    Ciprian。

    .e2e.ti.com/.../0842.halcogen-config.rar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ciprian、
    请同时发送*。DIL 文件。 *.DIL 文件是 HALCoGen 项目的一部分。 如果没有*。DIL 文件、我无法加载您的设置。

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

    很抱歉,我的错。 我有急事。

    e2e.ti.com/.../8407.sciMS.rar

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ciprian、
    在 SCI1->SCI 端口中、选中 DIR 复选框、使 SCI TX 成为输出。 在 SCI3->SCI 端口选项卡中执行相同的操作。

    我看不到其他问题。 请告诉我、如果这不起作用。

    此致、
    米罗
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    那么、默认情况下引脚是输入? 我检查 SCI1端口中 TX 引脚的 DIR、我还检查 sci3端口上的 Rx 引脚? 如果该 DIR 检查使 SCI1上的 TX 引脚成为输出、则我需要 Rx 作为 sci3上的输入而不是输出。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好!

    随附的图片符合我的意思:

    此致、

    米罗

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

    我这么做了、但我仍然没有接收数据。 总之、我不理解的另一个问题是:

    我禁用了所有中断并逐字节发送 、因为我在其他实例中看到、即使我使用 sciSend/sciReceive 而不是 sciSendBye/sciReceiveByte、我也只从 sci->TD 接收最后一个字节、我不知道它为什么这样做。 因此、现在我使用不带中断的 sciSendBye/sciReceiveByte、并且只有当我按如下所示设置断点时、我才能在调试时看到数据:

    但是、如果我以其他方式设置它们、如下所示:

    它将在 sciReceiveByte 中以无限循环运行、等待传入数据。 我还尝试在发送和接收之间设置延迟。 现在我感到困惑、因为我不知道我是否发送/接收任何数据。

    有些东西还可以、但同时也有问题。

    请您解释一下这个问题吗? 此外、在中断中接收也不起作用、或者发生了相同的情况、我无法看到在该特定时间接收到的数据。

    此致、

    Ciprian。

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

    您好、Ciprian、

    关于在中断模式下使用 SCI 接收... 请在中断处理程序(sciHighLevelInterrupt)处放置断点。 在中断处理程序内调用 sciNotification。 如果您进入中断处理程序、则可能没有调用 sciNotification、因为(g_sciTransfer_t[0U].rx_length > 0U)始终为 false。 如果是这种情况、请尝试附加文件。 您可以手动初始化值、而不是在发送数据之前调用 sciReceive。

    e2e.ti.com/.../6180.HL_5F00_sys_5F00_main.c

    此致、

    米罗

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

    什么是 scilinREG? 因为它不会在我的任何页眉中退出。

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

    您好、Ciprian、
    抱歉、您可以删除此原始代码、也可以将其更改为 sciREG1...

    此致、
    米罗

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    首先、我设法发送和接收、如果接收同时出现在主代码和中断中、它将无法正常工作、它仅与主代码中的接收一起工作、并且工作正常。 我还不明白为什么、我看到唯一的变化是手动设置的 FLR 寄存器。 此外、scilinREG 应该是 sciREG3、因为我在接收上使用的是 sci3上的中断。 这就是我正确地收发的方式,我希望这不仅是巧合。 如果没有发生任何奇怪的情况、我将进一步测试它并将此帖子标记为"已解决的问题"。 谢谢你。 我还将发布主代码、这可能会对其他人有所帮助。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Miro、

    因此、为了弄清这一点、我将附加我的文件 halcogen + hL_sys_main、以下示例正在工作。 主要区别在于、FLR 寄存器是在主程序中手动设置的。 此外、sciNotification 完全不起作用、如果我在 sciNotification 中使用接收、我只接收最后一个字节。 我不知道为什么。 如果同时使用这两个字节、则无法正常工作、它将接收数据、然后将 Rx 中的第一个字节替换为来自 TX 的最后一个字节、TX 基本上仅接收最后一个字节、我已经解释过了这一点(无论如何、接收函数应该只调用一次)。 我希望你同意我关于这个问题的看法。 我唯一不理解的是 sciNotification 函数不起作用、否则一切都很好。

    此致、

    Ciprian。

    e2e.ti.com/.../0842.HL_5F00_sys_5F00_main.rar

    e2e.ti.com/.../2844.halcogen.rar

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

    您好、Ciprian、
    我在 main.c 中放置 sciReceive 的原因是要初始化长度... 中断处理程序从检查长度开始... 在发送任何数据之前以及在前5个字节(在代码中)被感应 后调用 sciReceive、以便为下一个字节准备 UART (长度可能不同)。

    此致、
    米罗

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    但它会使整个事情变得混乱、只需尝试一下即可。 如果您将接收函数放在主函数中、它实际上会接收数据。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我已编辑了我之前的帖子

    此致、
    米罗