主题中讨论的其他器件:TMDSCNCD263、 TMDSHSECDOCK
工具与软件:
我正在使用此 TMDSCNCD263板、这是 IO 扩展器 TMDSHSECDOCK。
我的项目有一个要求、例如需要在 UART 上提供输入、然后我必须在同一 UART 上接收该输入数据、之后我需要使用 UART FIFO 传输接收到的该数据、在一些延迟之后、我必须读取 UART FIFO 并在控制台上打印。 我的数据是64字节
以下是我的代码
#包含
#包含
#include "ti_drivers_config.h"
#include "ti_drivers_open_close.h"
#include "ti_board_open_close.h"
#包含
#define APP_UART_BUFSIZE (200U)
#define APP_UART_RECEIVE_BUFSIZE (64U)
uint8_t gUartBuffer[APP_UART_BUFSIZE];
uint8_t gUartReceiveBuffer[APP_UART_RECEIVE_BUFSIZE];
Volatile uint32_t gNumBytesRead = 0u、gNumBytesWritten = 0u;
#define APP_UART_ASSERT_ON_FAILURE (transferOK、事务)\
执行{\
if ((SystemP_SUCCESS!=(transferOK))||(UART_TRANSMIT_STATUS_SUCCESS!= TRANSACTION_STATUS))\
{\
DebugP_assert (false);/* UART TX/RX 失败!! */\
}\
} while (0)
void delay_ms (int 毫秒)
{
clock_t start_time = clock ();
while (clock ()< start_time +毫秒*(Clocks_per_SEC / 1000));
}
void uart_echo (void * args)
{
int32_t transferOK;
UART_Transaction 传输;
drivers_open();
Board_driversOpen();
DebugP_log ("[UART] Echo example started ...\r\n");
UART_Transaction_init (&trans);
/*发送输入字符串*/
gNumBytesWritten = 0u;
trans.buf =&gUartBuffer[0U];
strncpy (((char *) tran.buf、"这是 UART 回波测试阻塞模式\r\n 请输入64字节...\r\n、APP_UART_BUFSIZE);
tran.count = strlen ((char *) tran.buf);
transferOK = UART_WRITE (gUartHandle[CONFIG_UART_CONSOLE]、&Trans);
APP_UART_ASSERT_ON_FAILURE (transferOK、TRANS);
/*从 UART 控制台读取64个字节*/
gNumBytesRead = 0u;
TRANS.buf =&gUartReceiveBuffer[0U];
TRANS.COUNT = APP_UART_RECEIVE_BUFSIZE;
transferOK = UART_read (gUartHandle[CONFIG_UART_CONSOLE]、&trans);
APP_UART_ASSERT_ON_FAILURE (transferOK、TRANS);
gNumBytesRead = TRANS.count;
/*将接收到的数据传回*/
DebugP_log ("将%d 字节传回:%.*s\r\n"、gNumBytesRead、gNumBytesRead、gUartReceiveBuffer);
gNumBytesWritten = 0u;
TRANS.buf =&gUartReceiveBuffer[0U];
tran.count = gNumBytesRead;
transferOK = UART_WRITE (gUartHandle[CONFIG_UART_CONSOLE]、&Trans);
如果(transferOK != SystemP_Success){
DebugP_log ("UART 写错误"发生!\r\n);
}其他{
DebugP_log ("Successfully transeled %d bytes\r\n"、gNumBytesRead);
}
APP_UART_ASSERT_ON_FAILURE (transferOK、TRANS);
/*短时间延迟以允许数据传输完成*/
ClockP_usleep (100000);
/*为回传数据准备缓冲区*/
gNumBytesRead = 0u;
TRANS.buf =&gUartReceiveBuffer[0U];
TRANS.COUNT = APP_UART_RECEIVE_BUFSIZE;//调整为预期的最大大小
/*读取回传数据*/
transferOK = UART_read (gUartHandle[CONFIG_UART_CONSOLE]、&trans);
如果(!transferOK){
DebugP_log ("UART 读取错误"发生!\r\n);
}其他{
gNumBytesRead = TRANS.count;
DebugP_log ("回显%d 字节:%.*s\r\n"、gNumBytesRead、gNumBytesRead、gUartReceiveBuffer);
}
/*发送退出字符串*/
DebugP_log ("所有测试均已通过!!\r\n ");
Board_driversClose ();
drivers_close();
}
我可以在 UART 上轻松接收输入数据、但我不确定是否使用 FIFO 在同一 UART 上接收数据、然后重新发送。 如果它使用 FIFO、我无法使用 FIFO 读回数据
在这方面有什么帮助吗?