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.

[参考译文] TMS570LC4357:SCI3至 SCI4通信

Guru**** 2481465 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/892150/tms570lc4357-sci3-to-sci4-communication

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

您好!

我一直在尝试与 SCI3进行简单的 SCI 通信、从而将信息传输到 SCI4。 我有从 SCI3TX (N2)到 SCI4RX (A13)的导线、代码就像:

sciInit();

_enable_IRQ_interrupt_();
sciEnableNotification (sciREG3、SCI_TX_INT);
sciEnableNotification (sciREG4、SCI_RX_INT);

sciSend (sciREG3、5、&TX[0]);

sciReceive (sciREG4、5、&Rx[0]);
printf ("接收完%d\n"、Rx[0]后);

 

但是、Rx 数组在 sciReceive 之后为空。 sciNotification 函数也从未调用过、我曾尝试将 sciReceiver 语句放在那里。  

 

在 Halcogen 中、我启用了 SCI3/SCI4驱动器、并且相应的引脚、SCI3TX 引脚通过 DIR 复选框设置为输出、中断被启用。 我附加整个项目。

 

我在这里错过了什么?

e2e.ti.com/.../6813.SCI4_5F00_3.rar

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

    您好!

    1.如果您想使用中断模式、请在 VIM 模块中启用 SCI3/SCI4中断(通道64和通道116)

    2.您可以尝试轮询模式、在接收数据之前、检查 FLG 以确保 RXRDY 位置位。  

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

    您好 QJ、

    感谢您的回答。 启用 SCI3/SCI4中断后、程序现在会调用 sciNotification 函数。 但是、我仍然没有收到任何信息。 我在 sciNotification 中:

    sciReceive (sciREG4、5、&Rx[0]);

    而不是在 main 函数中。

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

    您好!

    很好。  

    您至少应接收第一个字节。 在 sciSend()之前,需要首先调用 sciReceive()来定义 rx_length。 否则、INT ISR 只读取第一个字节。

    在  scixHighLevelInterrupt ()中的 if (g_sciTransfer_t[1U].rx_length > 0U)处添加断点、并使用 CCS 寄存器窗口检查 SCIRD 寄存器。

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

    您好!

    在我在 IRD 寄存器中看到的断点中、我要传输的数组的第一个字节。

    我已修改了代码、以便在 sciNotification sciSend 和 sciReceive 中具有该代码。 (我也在主代码中调用了这两个指令、即 sciive Receivi、如建议)。 通过这种方式、我接收到正确数组中的数据(在第二次调用 sciNotification 之后)、但我处于 sciNotification 的递归调用循环中。

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

    知道您在中断模式下收到了正确的数据。

    仅当接收到的数据从移位寄存器移位到数据缓冲区时才调用 sciNotification()。 如果未收到数据、则不应再次调用 sciNotification (0)。