MCU / 软件积累 · 2023年7月31日

nordic uart-RX上电低电平,无法启动

1.UART的上下电阻

串口上RX ,TX上拉电阻作用
UART的RX工作中处于输入状态, 为了避免 RX 无连接(或接触不良)下, 不定电平的噪声导致输入乱码等问题, 加上拉可以确定电平.
为什么是上拉而不是下拉, UART的协议规定 RX输入信号中, 以低电平脉冲(下降沿)作为数据接收的开始. 所以上拉可以保持 RX 无数据接收的状态.

2.RX初始接地

由上文介绍可以看出当RX为低电平时,这时的UART会判断有信号输入,故当NORDIC软件启动时,会默认判断为此时有中断,故会不停的重启,导致其无法启动。

3.解决办法

void uart_event_handle(app_uart_evt_t * p_event)
{
//	uint32_t err_code;
    switch (p_event->evt_type)
    {
        case APP_UART_DATA_READY:
            //nrf_drv_timer_disable(&TIMER_UART_RX);

            UNUSED_VARIABLE(app_uart_get(&UART_RX_BUF[UART_RX_STA]));
            UART_RX_STA++;  // Record the uart received data frame length
            if ((UART_RX_BUF[UART_RX_STA - 1] == '\n') ||
                (UART_RX_STA >= (sizeof(UART_RX_BUF) - 1)))
            {
				UART_RX_FLAG = 1;
	//			UART_RX_STA = 0;
			}
            //nrf_drv_timer_enable(&TIMER_UART_RX);
            break;

        case APP_UART_COMMUNICATION_ERROR:
         //   APP_ERROR_HANDLER(p_event->data.error_communication);
         //注意,关键是注释掉些数据,这个错误主要是显示连接
            break;

        case APP_UART_FIFO_ERROR:
        //    APP_ERROR_HANDLER(p_event->data.error_code);
            break;

        default:
            break;
    }
}
打赏作者