主题中讨论的其他器件:SysConfig
是否可以使用此驱动程序进行连续的数据接收? 问题是、由于缺少 RAM、我无法缓冲整个帧。 目前、我对 UART - 32B 使用一个小缓冲区、在 Rx 回调中、我将数据复制到环缓冲区、并从回调中再次开始数据接收。 问题是、有时会有1字节的数据丢失。
阿尔杜尔
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.
静态 void init_function()
{
//在回调读取模式中创建 UART
UART2_PARAMS_INIT (&uartParams);
uartParams.readMode = UART2_Mode_callback;
uartParams.writeMode = UART2_Mode_callback;
uartParams.readCallback = callbackFxnRx;
uartParams.writeCallback = callbackFxnTx;
uartParams.baudrate =波特率;
uartParams.userArg = NULL;
uart = UART2_open (portIndex、&uartParams);
if ( uart != NULL )
{
UART2_READ (uart、dmaRxBuffer、UART_DMA_READ_BUF_SIZE、NULL);//启动 DMA Rx
返回 true;
}
}
静态 void callbackFxnRx (UART2_handle handle,void *buffer,size_t count,void *userArg,int_fast16_t status)
{
if ( status != UART2_STATUS_SUCCESS )
{
/* UART2_READ()中发生 RX 错误*/
}
if ( cbuffer_write (&cbuffer_rx, dmaRxBuffer, count )< count )
{
/* cbuffer 溢出*/
}
UART2_READ (uart、dmaRxBuffer、UART_DMA_READ_BUF_SIZE、NULL);//开始下一个 DMA 传输
}
它看起来是这样的。 如果缓冲区在发送期间被填满、数据似乎会在 DMA 重新启动期间丢失。 但并非总是如此。 将缓冲区增加1个字节会有什么变化吗?
您好 Artur、
我想问您在 SysConfig 中将 RX Ring 缓冲区大小设置为什么、是否会有问题:
有一些可能值得一读的 E2E 帖子:
https://e2e.ti.com/f/1/t/1325156/
https://e2e.ti.com/f/1/t/1275776/
谢谢。
A·F