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;
}
}
打赏作者
近期评论