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.

[参考译文] CC2640R2F:在复制和粘贴到 Tera Term 时、UART 仅处理32个字节

Guru**** 2595800 points


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

https://e2e.ti.com/support/wireless-connectivity/bluetooth-group/bluetooth/f/bluetooth-forum/609484/cc2640r2f-uart-processes-only-32-bytes-when-copying-and-pasting-to-tera-term

器件型号:CC2640R2F

您好!

  我已经实现了 UART 来处理每字节数据。 下面是我的代码。 当我通过在键盘上键入 Tera Term 手动输入时、此代码没有问题。 但是、当我复制并粘贴到超过37个字节或字符的 Tera 术语时、只有32个字节存储在 CmdRxBuf 中。 我们有一个 LabVIEW 程序、该程序发送相同的37个字符、我得到相同的结果。 当我设置1毫秒/字符传输延迟时、Tera Term 中的复制和粘贴问题得到了解决。 导致此 UART 问题的原因是什么?  

void UartApp__UartRxCB (UART_Handle handle、void * buf、size_t count)
{
TxBuf =((uint8_t*) buf)[0];

if (TxBuf ='\r\n')
{
CmdRxBuf[charcount]= TxBuf;
UartApp_WriteString ("\r\n");

对于(i = 0;i < charcount;i++)
{
TestApp_DecodeData (CmdRxBuf[i]);
}

CmdRxBuf[i]='\0';
TestApp_DecodeData (CmdRxBuf[i]);

/*清除 CmdRxBuf */
对于(I = 0;I < UART_RX_DATA_LENGTH;I++)
{
CmdRxBuf[i]='\0';
}
charcount = 0;
}
其他
{
CmdRxBuf[charcount]= TxBuf;
charcount++;
}

UART_WRITE (hUART、&TxBuf、sizeof (TxBuf));
UART_READ (hUART、&RxBuf、sizeof (RxBuf)/sizeof (BUFTYPE));

}

void UartApp_Init (void)
{
const char echoPrompt[]="UART 已初始化! !! !\r\n";
UART_Params uartParams;

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

/*创建一个数据处理关闭的 UART。 *
UART_PARAMS_INIT (uartParams);

uartParams.readMode = UART_MODE_CALLACK;
uartParams.writeMode = UART_MODE_CALLBACK;
uartParams.readCallback = UartApp_UartRxCB;
uartParams.writeCallback = UartApp_UartTxCB;
uartParams.readEcho = UART_ECHO_OFF;
uartParams.baudrate = 115200;

uartParams.readDataMode = UART_DATA_BINARY;
uartParams.writeDataMode = UART_DATA_BINARY;
uartParams.dataLength = UART_LEN_8;
uartParams.readReturnMode = UART_return_full;

hUART = UART_open (Board_UART0、uartParams);

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

UART_WRITE (hUART、echoPrompt、sizeof (echoPrompt));
UART_READ (hUART、&RxBuf、sizeof (RxBuf)/sizeof (BUFTYPE));

charcount = 0;
} 

-克尔

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

    在 INIT 函数中打开 UART 后、是否可以尝试启用部分读取?

    //启用对所有后续 UART_READ()的部分读取
    UART_CONTROL (uartHandle、UARTCC26XX_RETURE_PARTIAL_ENABLE、空);

    祝你一切顺利