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.

[参考译文] MSP432P401R:UART 中断问题

Guru**** 2522770 points
Other Parts Discussed in Thread: MSP430FR5994

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

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/943419/msp432p401r-uart-interrupt-problem

器件型号:MSP432P401R
主题中讨论的其他器件: MSP430FR5994

大家好、

我使用的是 MSP432P401R 控制器、我对 UARTECHO 的示例感到 laed、我正在测试该示例中是否存在超过100个字符的发送和接收、但某些字符在一段时间内缺失。

我的编码是:

特性 输入;
const char echoPrompt[]="回显字符:\r\n";
UART_Handle UART;
UART_Params uartParams;
int UART_DATA = 0;

void ReadCallBack (UART_Handle handle、void *buf、size_t count)
{
UART_READ (UART、INPUT、1);
UART_WRITE (UART、INPUT、1);
UART_DATA = 1;
//返回;
}

/*
=== mainThread ====
*/
void * UART_Thread (void * arg0)
{
//字符 输入;
// const char echoPrompt[]="回显字符:\r\n";
// UART_Handle UART;
// UART_Params uartParams;

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

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

/*打开用户 LED */
GPIO_WRITE (CONFIG_GPIO_0、CONFIG_GPIO_LED_ON);

/*创建一个数据处理关闭的 UART。 *
UART_PARAMS_INIT (uartParams);
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.readDataMode = UART_DATA_TEXT;
uartParams.readReturnMode = UART_return_NEWLINE;
uartParams.readEcho = UART_ECHO_OFF;
// uartParams.readCallback = ReadCallBack;
// uartParams.readMode = UART_MODE_CALLBACK;
uartParams.baudrate = 115200;

UART = UART_OPEN (CONFIG_UART_0、uartParams);

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

UART_WRITE (UART、echoPrompt、sizeof (echoPrompt));
// UART_read (UART、&INPUT、 1);
/*循环永久回显*/
while (1){
// UART_READ (UART、INPUT、1);
// if (UART_DATA)
// {
// UART_DATA = 0;
/// UART_WRITE (UART、INPUT、1);
/// GPIO_TOGGLE (CONFIG_GPIO_0);
//}
UART_READ (UART、INPUT、1);
UART_WRITE (UART、INPUT、1);
}


//返回0;
}

请查看我尝试过的编码。 我还尝试使用回调和轮询。 但没有、我得到了完美的输出。

请向我推荐一些东西。

谢谢

Anil。

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

    尊敬的 Anil:

    我尝试了代码示例、即使在发送了超过100个字符之后、我也没有看到任何遗漏的字符。 我建议从代码示例开始并进行增量更改、以确切了解导致此行为的变化。 您发送的字符之间可能没有足够的时间(太近)。 UART 读写操作使用轮询、因此、如果发送某个数据、显然会跳过接收到的字节。 我还强烈建议使用逻辑分析仪来准确查看接收到的数据与发送的数据。 然后、您还可以切换 GPIO 以确定回波需要多长时间才能在数据包之间建立最短时间。

    此致、

    James

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

    我认为该控制器具有48MHz 的运行时钟。 我甚至在 MSP430FR5994中使用了16MHz、但没有发现这种问题。  

    为什么我在这里遇到问题、只有我没有遇到、  

    我知道 UART 只能以115200的速度运行、但控制器的处理速度是 MSP 的3倍。  

    那么、为什么我在这里面临这个问题呢?

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

    好的、James、

    我尝试了如下操作:将接收到的数据保存到缓冲区中、在接收完所有字节后、我调用写入函数、因此在这种情况下我不会遇到任何问题。 因此、正如您所说、阅读和写作需要时间。

    感谢您的回答。

    Anil。