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/MSP432P401R:如何配置 UART、以便通过 UART TX 引脚发送一些数值?

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/677775/ccs-msp432p401r-how-to-configure-the-the-uart-to-send-some-numerical-value-through-the-uart-tx-pin

器件型号:MSP432P401R

工具/软件:Code Composer Studio

您好!

我将"uartecho_MSP_EXP432P401R_tirtos_ccs"代码与 MSP432P401R Launchpad 搭配使用。 我的目标是通过 UART TX 引脚从 MSP432P401R 发送整数值。 但代码似乎用于发送一些字符、我不确定需要在哪个部分进行更改、以便能够通过 UART TX 引脚发送整数值。 有人可以帮我解决这个问题吗?

Mohammad Arifur Rahman

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    "整数值"是什么意思? 如果是字面二进制值、如0x04、则只需发送4。 如果您需要 ASCII 字符4、则它将显示在需要"4"的终端上。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Keith、

    感谢您的回复。 实际上、我希望以二进制格式发送整数值。 为此、我对代码进行了一些更改。 如果我没有弄错 、"UART_WRITE (UART、INPUT、1)"输入的值应通过 UART TX 引脚。 但是、当我使用示波器检查 launchpad 的 P3.3引脚时、我看不到它。

    void * mainThread (void * arg0)

    INT 输入;
    const char echoPrompt[]="回显字符:\r\n";
    UART_Handle UART;
    UART_Params uartParams;

    /*调用驱动程序初始化函数*/
    GPIO_init();
    UART_INIT();

    /*配置 LED 引脚*/
    GPIO_setConfig (Board_GPIO_LED0、GPIO_CFG_OUT_STD | GPIO_CFG_OUT_LOW);

    /*打开用户 LED */
    GPIO_WRITE (Board_GPIO_LED0、Board_GPIO_LED_ON);

    /*创建一个数据处理关闭的 UART。 *
    UART_PARAMS_INIT (uartParams);
    uartParams.writeDataMode = UART_DATA_BINARY;
    uartParams.readDataMode = UART_DATA_BINARY;
    uartParams.readReturnMode = UART_return_full;
    uartParams.readEcho = UART_ECHO_ON;//UART_ECHO_OFF;
    uartParams.baudrate = 115200;

    //
    //uartParams.readMode = UART_MODE_CALLACK;
    //uartParams.writeMode = UART_MODE_CALLBACK;
    uartParams.dataLength = UART_LEN_8;
    //uartParams.readReturnMode = UART_RETURN_FULL;
    //

    UART = UART_OPEN (Board_UART0、uartParams);

    if (UART == NULL){
    /* UART_open()失败*/
    while (1);

    UART_WRITE (UART、echoPrompt、sizeof (echoPrompt));

    /*循环永久回显*/
    while (1){
    UART_READ (UART、INPUT、1);
    输入= 2;
    UART_WRITE (UART、INPUT、1);

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我非常确定该 UART 连接到引脚1.2和1.3。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    通过 ASCII 发送它们
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是的、你是对的。 MSP432P401R 的 P1.2和 P1.3分别用于 UART RX 和 TX。 但是、当我使用 MSP432P401R Launchpad 时、我只能访问分别用于 UART RX 和 TX 的 Launchpad 的引脚编号 P3.2和 P3.3?

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

    如果要发送数字值,请记住串行控制台需要 ASCII。 因此、很简单的方法是获取数字并向其添加0x30、以便发送 ASCII 整数的十六进制值。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我不太使用 RTOS、但 MSP_EXP432P401R.c 文件中的第二种配置会为所需的引脚配置 UART。

    作为一个线规、您需要使用 Board_UART1而不是 Board_UART0初始化。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    或添加"0"的 c 技巧、即发送4:4+"0"。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    感谢大家的建议。
    我的困惑在于 UART TX 引脚输出。 无论我发送二进制值还是整数的 ASCII 代码、我都应该在 UART TX 上看到1和0的突发、并使用示波器、对吧? 但我看不到这样的东西。

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

    请参阅以下有关 UART 帧结构的 Wiki 文章。

    en.wikipedia.org/.../Universal_asynchronous_receiver-transmitter

    现在、如果您在 TX 引脚上看不到任何内容、请检查外设的 GPIO 寄存器、以查看它们是否已针对 UART 正确配置了功能。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!
    我需要添加的另一点是、我不必使用 ASCII 代码来完成工作。 我只需要通过 UART TX 发送数字的二进制格式值、该值将被另一个 MCU 使用、而该 MCU 不需要 ASCII 代码。

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

    您是否使用原始代码检查 UART TX 引脚以查看其是否正常工作、并切换 UART TX 引脚以发送数据?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Amit、您好!

    感谢您的回复。 所附图片是使用 UART TX 引脚原始代码的结果。  

    Mohammad Arifur Rahman

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

    这一点毫无帮助。 您能否提供有关耦合、水平和垂直分辨率、比例因子的信息;通常大多数示波器应该能够提供这些信息。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    Amit、您好!

    请检查这两张图片吗?

    Mohammad Arifur Rahman

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

    交流/直流耦合是示波器上的单独设置。 您能否使用逻辑分析仪来查看逻辑电平?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我们还需要知道您连接到哪个引脚。 这只是噪声、根本不是信号。

    将示波器设置为1V/除法并将其保留在此处。

    您是否尝试按照上述建议更改 UART?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    大家好。 感谢你的帮助。 实际上、我的实验室中没有逻辑分析仪。 这些是我用于查看 UART/TX 输出的引脚连接。

    此致

    Mohammad Arifur Rahman

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

    进行了第三次。 您是否更改为 UART1? UART0使用反向通道 UART、您可以使用虚线上的 TXD>>跳线访问该 UART。

    MSP_EXP432P401R.c 文件具有以下数组:

    CONST UARTMSP432_HWAttrsV1 uartMSP432HWAttrs[MSP_EXP432P401R_UARTCOUNT]={
    {
    baseAddr = EUSCI_A0_BASE、
    .intNum = INT_EUSCIA0、
    .intPriority =(~0)、
    时钟源= EUSCI_A_UART_CLOCKSOURCE_SMCLK、
    .bitOrder = EUSCI_A_UART_LSB_FIRST、
    numBudrateEntry 尝试次数= sizeof (uartMSP432Budrates)/
    sizeof (UARTMSP432_BudrateConfig)、
    .budrateLUT = uartMSP432Budrates、
    .ringBufPtr = uartMSP432RingBuffer[MSP_EXP432P401R_UARTA0]、
    .ringBufSize = sizeof (uartMSP432RingBuffer[MSP_EXP432P401R_UARTA0])、
    .rxPin = UARTMSP432_P1_2_UCA0RXD、
    txPin = UARTMSP432_P1_3_UCA0TXD、
    errorFxn =空
    }、
    {
    baseAddr = EUSCI_A2_base、
    .intNum = INT_EUSCIA2、
    .intPriority =(~0)、
    时钟源= EUSCI_A_UART_CLOCKSOURCE_SMCLK、
    .bitOrder = EUSCI_A_UART_LSB_FIRST、
    numBudrateEntry 尝试次数= sizeof (uartMSP432Budrates)/
    sizeof (UARTMSP432_BudrateConfig)、
    .budrateLUT = uartMSP432Budrates、
    .ringBufPtr = uartMSP432RingBuffer[MSP_EXP432P401R_UARTA2]、
    .ringBufSize = sizeof (uartMSP432RingBuffer[MSP_EXP432P401R_UARTA2])、
    .rxPin = UARTMSP432_P3_2_UCA2RXD、
    TxPin = UARTMSP432_P3_3_UCA2TXD、
    errorFxn =空
    }
    }; 

    请注意、您需要为正在测试的引脚使用 UART1。

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

     Keith、再次感谢您的建议。 我检查了 TXD 跳线处的输出 、结果非常完美。 现在我已更改为 UART1 以查看 P3.3的输出,现在一切都运行得很完美。 这真的很有帮助。

    感谢大家提出宝贵的建议。 感谢你的帮助。

    此致

    Mohammad Arifur Rahman