处理一个使用多个 UART 进行通信的应用、并希望具有使用 Tivaware UARTLoopbackEnable 的内置测试、以运行简单的回送测试、以确认数据是否正确发送和处理。 但是、我没有找到将更改恢复为内部回送的任何命令。 最佳做法是什么?
我想到但尚未测试的解决方案如下:
内置测试后禁用所有 UART、然后重新启用、希望这些 UART 以默认方式出现。
在成功进行内置测试后重新启动电路板(这不是一个好的解决方案)。
内置测试不使用内部环回。
欢迎提出任何建议。
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.
处理一个使用多个 UART 进行通信的应用、并希望具有使用 Tivaware UARTLoopbackEnable 的内置测试、以运行简单的回送测试、以确认数据是否正确发送和处理。 但是、我没有找到将更改恢复为内部回送的任何命令。 最佳做法是什么?
我想到但尚未测试的解决方案如下:
内置测试后禁用所有 UART、然后重新启用、希望这些 UART 以默认方式出现。
在成功进行内置测试后重新启动电路板(这不是一个好的解决方案)。
内置测试不使用内部环回。
欢迎提出任何建议。
您好!
出于某种原因、没有 API 来禁用环回模式。 不过、读取 UARTLoopbackEnable 的源代码、只需设置 UART_CTL_LBE 位即可启用环回。 完成环回测试后、您可以使用 HWREG 在 UART_O_CTL 寄存器中手动清除 UART_CTL_LBE。
//*****
//
//! 为 UART 端口启用内部环回模式
//!
//! \param ui32Base 是 UART 端口的基地址。
//!
//! 此函数将 UART 端口配置为内部回送模式、以帮助
//! 诊断和调试。 在该模式下、的发送和接收终端
//! 同一 UART 端口在内部连接。 因此、传输的数据
//! 即在 UxRx 输入上接收到 UnTx 输出时、
//! I/O 的地址。 UARTCharPut ()、UARTCharGet ()函数可以同时使用
//! 完成的。
//!
//! \无返回。
//
//*****
空 UARTLoopbackEnable (uint32_t ui32Base)
{
//
//检查参数。
//
assert (_UARTBaseValid (ui32Base));
//
//将环回使能位写入寄存器。
//
HWREG (ui32Base + UART_O_CTL)|= UART_CTL_LBE;
}