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/RM57L843:通过 UART 接收数据

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/600550/ccs-rm57l843-receiving-data-through-uart

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

工具/软件:Code Composer Studio

大家好、
请注意、我在设置 UART 接收时遇到问题、我按照示例操作、但仍然无法正常工作。 我执行了以下操作:
使用 HALGOGEN:
1.启用 SCI1驱动程序
配置 SCI,只需设置波特率以及停止和起始位,我不知道我是否应该配置更多,不幸的是示例不清楚。
3.生成代码。

在 CCS 中、我按如下方式编辑了代码:

///--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
/*包含文件*/

#include "hL_sys_common.h"
#include "hL_system.h"

/*用户代码开始(1)*/
#include "hL_sci.h"

#define size 7
//发送以下内容
uint8 T_Data[size]={'C'、'M'、'I'、'Y'、'C'、'、'};
//存储接收到的数据
uint8 R_Data[size];

//函数原型
void sciDisplayText (sciBASE-t * sci、uint8 *文本、uint32长度);
空等待(uint32时间);

//选择 UART1
#define UART sciREG1

/*用户代码结束*/

void main (void)

/*用户代码开始(3)*/
   sciInit();     /*初始化 sci/sci-lin   */
                   /*偶校验,2个停止位*/
   sciDisplayText (UART、&T_Data[0]、size);  //发送文本代码1 *

   while (1)       /*持续播放*       /
  {
   };

/*用户代码结束*/


/*用户代码开始(4)*/
void sciDisplayText (sciBASE-t * sci、uint8 *文本、uint32长度)

   while (length---)(while (l
   {
       while ((UART->FLR & 0x4)== 4);//等待忙*/
       sciSendByte (UART、* text++);     //用字母发送文本字母  */
       等待(200);
       sciReceive (UART、1、&R_Data[length]);
   };



空等待(UINT32时间)

   时间--;

/*用户代码结束*/
///----------------------------------------------------------

基本上、T_Data 通过 sciSendByte (UART、* text++)发送;并显示在终端上
我需要 sciReceive (UART、1、&R_Data[length]);将数据存储在 R_Data 中、这是我无法实现的

我的错误是在配置零件还是在代码零件中??我的想法是不正确的。 谢谢你

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

    我看到您有一个用于将数据发送到终端窗口的数组、这似乎对您有效。 您希望从何处接收数据? 您是否也通过终端窗口接收数据? 即、您是否通过键盘在终端窗口中输入数据? 这通常是通过镜像操作来实现的。 即、按键作为输入、控制器接收字符、然后将接收到的字母传输到终端窗口(即、接收到的数据被镜像到发送到终端窗口以供显示)。 请注意、只是因为 Tx'ed 数据显示在终端窗口上并不意味着它将由终端窗口通过 UART 发送到开发板。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、这是一个西班牙语教程、但您可以按照 UART 配置的步骤进行操作。

    此致

    youtu.be/MNdDkedAzw0

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    尊敬的 Chuck Davenport:
    感谢你的答复,我有两种情况
    1.通过键盘发送 PIN
    或者我有一个 GUI (用 Java 编写)发送我需要接收的 PIN。
    我无法使它在这两种情况下都起作用。
    请告诉我、我需要使用哪些函数来执行您描述的镜像操作?
    谢谢
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Martin、我会观看
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

     

    大家好、这里是 RM57版本的一个示例、其中您使用中断通过 UART 接收数据、同时读取 ADC 通道并通过 UART 端口发送数据。

    我希望它有用。

    e2e.ti.com/.../7282.RM57_5F00_SCI_5F00_DMA.rar

    此致

    Martin  

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

    由于我已经能够访问此帖子已有一段时间、您能否提供有关您所在位置的更新信息? 问题是否已解决或您是否仍遇到接收问题? 如果直接从 PC 接收数据、您正在通过 Launchpad 上的虚拟 COM 端口、或者您是否使用了 SCI 直接连接到 PC 端口? 如果是后者、则可能存在一些电平转换问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    大家好、我想知道您是否可以实现示例代码?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我设法实施了代码、现在我从键盘发送的任何内容都可以在终端上看到、这是我的目标的一半、 我现在面临的问题是、我在 eclipse 上运行 GUI、该 GUI 发送一个 PIN、我需要通过 RM57L843板的 UART 接收该 PIN、但我目前无法管理该 PIN。 我正在使用 USB 电缆连接到主板。 这是代码

    ///----------------------------------------------
    /*
    *通过 UART 1进行串行通信
    *程序从键盘接收字母并将其显示在终端上。
    *停止位 :1.
    *数据位 :8.
    *奇偶校验位:无
    *停止位 :2.
    *
    * HalCoGen 步骤:
    * 1. 从 TMS570Lxx /RMX ->启用驱动程序取消标记除 SCI1之外的所有驱动程序
    * 2. 来自 SCI
    * 2.1激活接收中断
    * 2.2设置停止位、开始位...
    * 3. 从 VIM 0 - 31通道激活通道13
    * 4. 生成代码
    * 5. 跳转至 CCS
    *
    /*用户代码开始(0)*/
    #include "hL_sci.h"
    /*用户代码结束*/

    /*包含文件*/

    #include "hL_sys_common.h"
    #include "hL_system.h"

    /*用户代码开始(1)*/
    静态 unsigned char ReceivedData;
    #define UART sciREG1
    /*用户代码结束*/


    /*用户代码开始(2)*/
    /*用户代码结束*/

    int main (空)

    /*用户代码开始(3)*/
    //启用 IRQ 中断
    _enable_IRQ ();
    //初始化 sci
    sciInit();
    //发送文本
    sciSend (UART、10、(unsigned char *)"Enter PIN \r \n");

    //将接收到的数据存储在 ReceivedData 中
    sciReceivive (UART、1、(unsigned char *)和 ReceivedData);

    //永久运行
    while (1);
    /*用户代码结束*/

    返回0;



    /*用户代码开始(4)*/
    void sciNotification (sciBASE-t * sci、uint32标志)

    /*在用户代码开始和用户代码结束之间输入用户代码。 *
    /*用户代码开始(32)*/
    sciSend (sci、1、(unsigned char *) ReceivedData);

    sciive(sci, 1,(unsigned char *) ReceivedData);
    /*用户代码结束*/


    void esmGroup1通知(int 位)

    /*在用户代码开始和用户代码结束之间输入用户代码。 *
    /*用户代码开始(1)*/
    返回;
    /*用户代码结束*/


    void esmGroup2Notification (int 位)

    /*在用户代码开始和用户代码结束之间输入用户代码。 *
    /*用户代码开始(3)*/
    返回;
    /*用户代码结束*/

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

    我设法实施了代码、现在我从键盘发送的任何内容都可以在终端上看到、这是我的目标的一半、 我现在面临的问题是、我在 eclipse 上运行 GUI、该 GUI 发送一个 PIN、我需要通过 RM57L843板的 UART 接收该 PIN、但我目前无法管理该 PIN。 我正在使用 USB 电缆连接到主板。 这是代码

    ///----------------------------------------------
    /*
    *通过 UART 1进行串行通信
    *程序从键盘接收字母并将其显示在终端上。
    *停止位 :1.
    *数据位 :8.
    *奇偶校验位:无
    *停止位 :2.
    *
    * HalCoGen 步骤:
    * 1. 从 TMS570Lxx /RMX ->启用驱动程序取消标记除 SCI1之外的所有驱动程序
    * 2. 来自 SCI
    * 2.1激活接收中断
    * 2.2设置停止位、开始位...
    * 3. 从 VIM 0 - 31通道激活通道13
    * 4. 生成代码
    * 5. 跳转至 CCS
    *
    /*用户代码开始(0)*/
    #include "hL_sci.h"
    /*用户代码结束*/

    /*包含文件*/

    #include "hL_sys_common.h"
    #include "hL_system.h"

    /*用户代码开始(1)*/
    静态 unsigned char ReceivedData;
    #define UART sciREG1
    /*用户代码结束*/


    /*用户代码开始(2)*/
    /*用户代码结束*/

    int main (空)

    /*用户代码开始(3)*/
    //启用 IRQ 中断
    _enable_IRQ ();
    //初始化 sci
    sciInit();
    //发送文本
    sciSend (UART、10、(unsigned char *)"Enter PIN \r \n");

    //将接收到的数据存储在 ReceivedData 中
    sciReceivive (UART、1、(unsigned char *)和 ReceivedData);

    //永久运行
    while (1);
    /*用户代码结束*/

    返回0;



    /*用户代码开始(4)*/
    void sciNotification (sciBASE-t * sci、uint32标志)

    /*在用户代码开始和用户代码结束之间输入用户代码。 *
    /*用户代码开始(32)*/
    sciSend (sci、1、(unsigned char *) ReceivedData);

    sciive(sci, 1,(unsigned char *) ReceivedData);
    /*用户代码结束*/


    void esmGroup1通知(int 位)

    /*在用户代码开始和用户代码结束之间输入用户代码。 *
    /*用户代码开始(1)*/
    返回;
    /*用户代码结束*/


    void esmGroup2Notification (int 位)

    /*在用户代码开始和用户代码结束之间输入用户代码。 *
    /*用户代码开始(3)*/
    返回;
    /*用户代码结束*/

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

    如果 USB 在 UART 模式下使用、并且与控制台接口使用的相同、则相同的代码应该可以正常工作。 您能否检查板上的 UART RX 引脚是否有数据? 您是否能够在示波器上捕获完整的字词以确保数据是串行数据? 我担心的是、您在 eclipse 中的 GUI 实际上使用的是 USB 协议而不是 UART。 这是一个完全不同的问题和挑战集、尤其是 RM57没有 USB 端口。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    你好、Chuck、

    对于 GUI 代码、我们使用了串行通信库、我们可以在其中指定所需的传输数据设置、然后使用 Arduino 板对其进行测试、并可以与电路板进行通信。 当我们运行 GUI 时、我们首先选择与 RM57板使用的 COM 端口相同的 COM 端口、两者是否都有可能竞争 COM 端口?

    谢谢你

    此致
    Moud
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您遇到这种类型的问题、您可以尝试另一个 SCI 模块、例如 SCI3和 TTL 到 USB 转换器、因此您将拥有一个专用的串行通信端口。
    此致
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    COM 端口配置很可能不会出现问题、但您可以查看设备管理器、您应该会在设备列表中看到虚拟 COM 端口设置。 此外、如果这在终端窗口中正常工作、则问题出在 GUI 中以及 GUI 是如何配置和发送数据的、不再是 MCU 问题。 在这种情况下、MCU 似乎工作正常、因此您需要在连接到 LaunchPad/EVM 的端口上检查基于 Eclipse 的 GUI 的输出。 如果数据不存在、则调试 PC SW 是一项练习。

    您能否使用示波器检查 RX 线上是否有数据传入 MCU? 您能否检查是否存在任何 Rx 错误、例如奇偶校验错误、数据溢出错误、帧错误等