Other Parts Discussed in Thread: CC2340R5-Q1
器件型号: CC2340R5-Q1
您好:
我将使用 CC2340R5-Q1 并使用 SDK 版本 9.14 开发软件。 目前、我正在为客户开发一款产品并实现/验证 UART 功能。 作为异常条件检查的一部分、我特意输入格式错误的数据并想决定当 CC2340R5-Q1 检测到错误时软件应如何响应。 为此、我正在调查 CC2340R5-Q1 如何检测 UART 错误。 我观察到以下行为:
- 当接收到没有 STOP 位的 UART 数据时、不会调用事件回调函数。 而是调用读取回调函数。
- 在读取回调函数中、状态报告为正常/正常。
我的问题是:
- 如果接收到格式错误的数据(在本例中为没有 STOP 位的数据)、是否应该调用事件回调函数?
- 如何在软件中将此情况检测为错误?
void Isr_Uart_Rx(UART2_Handle handle, void *buf, size_t count, void *userArg, int_fast16_t status)
{
GPIO_toggle(CONFIG_GPIO_DIO13);
uart_status = status;
UART2_read(uart2_handle, &uart2_buf[0], (size_t)5, NULL);
}
void Isr_Uart_Event(UART2_Handle handle, uint32_t event, uint32_t data, void *userArg)
{
GPIO_toggle(CONFIG_GPIO_DIO0);
uart_event = event;
uart_event_data = data;
}
void Uart_Setup(void)
{
UART2_Params uart2_params;
UART2_Params_init(&uart2_params);
uart2_params.readMode = UART2_Mode_CALLBACK;
uart2_params.readCallback = Isr_Uart_Rx;
uart2_params.readReturnMode = UART2_ReadReturnMode_PARTIAL;
uart2_params.eventCallback = Isr_Uart_Event;
uart2_params.eventMask = UART2_EVENT_FRAMING | UART2_EVENT_PARITY | UART2_EVENT_BREAK | UART2_EVENT_OVERRUN;
uart2_params.baudRate = 500000;
uart2_handle = UART2_open(CONFIG_UART2_0, &uart2_params);
UART2_read(uart2_handle, &uart2_buf[0], (size_t)5, NULL);
}

我会附上我检查过的代码和示波器波形以供参考。谢谢您的帮助。