国民技术
直播中

jf_16332518

2年用户 13经验值
私信 关注
[经验]

【国民技术N32项目移植】串口通信

来一点百度里的解释:
串口是显控设备与信号处理板之间通信的主要接口,也是显控设备与其他设备、设备与设备之间的协议数据帧通信传输的重要接口。 [2] 串口通信指串口按位(bit)发送和接收字节。尽管比特字节(byte)的串行通信慢,但是串口可以在使用一根线发送数据的同时用另一根线接收数据。串口通信协议是指规定了数据包的内容,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据的有关规范。串口通信协议是基于串口使得通信双方能够相互沟通信息的一种约定,其定义了双方遵循的协议数据帧格式和其传输方式。 [2] 在串口通信中,常用的协议包括RS-232、RS-422和RS-485。

数据通讯方向

数据通讯的同步方式

物理层

image.png

硬件连接:
image.png

连接在MCU的P110,P109的GPIO上。

相关代码:
进去就打印RA4 开始:
printf("RA4 START");

初始化:
fsp_err_t err = FSP_SUCCESS;

/* Initialize UART channel with baud rate 115200 */
err = R_SCI_UART_Open (&g_uart_ctrl, &g_uart_cfg);
if (FSP_SUCCESS != err)
{
    APP_ERR_PRINT ("\r\n**  R_SCI_UART_Open API failed  **\r\n");
}
return err;

串口回调:
g_uart_event = (uint8_t)p_args->event;

/* Reset g_temp_buffer index if it exceeds than buffer size */
if(DATA_LENGTH == g_counter_var)
{
    g_counter_var = RESET_VALUE;
}

if(UART_EVENT_RX_CHAR == p_args->event)
{
    switch (p_args->data)
    {
        /* If Enter is pressed by user, set flag to process the data */
        case CARRIAGE_ASCII:
        {
            g_counter_var = RESET_VALUE;
            g_data_received_flag  = true;
            break;
        }
        /* Read all data provided by user until enter button is pressed */
        default:
        {
            g_temp_buffer[g_counter_var++] = (uint8_t ) p_args->data;
            break;
        }
    }
}

找印涵数:
/* Calculate length of message received */
msg_len = ((uint8_t)(strlen(p_temp_ptr)));

/* Reset callback capture variable */
g_uart_event = RESET_VALUE;

/* Writing to terminal */
err = R_SCI_UART_Write (&g_uart_ctrl, p_msg, msg_len);
if (FSP_SUCCESS != err)
{
    APP_ERR_PRINT ("\r\n**  R_SCI_UART_Write API Failed  **\r\n");
    return err;
}

/* Check for event transfer complete */
while ((UART_EVENT_TX_COMPLETE != g_uart_event) && (--local_timeout))
{
    /* Check if any error event occurred */
    if (UART_ERROR_EVENTS == g_uart_event)
    {
        APP_ERR_PRINT ("\r\n**  UART Error Event Received  **\r\n");
        return FSP_ERR_TRANSFER_ABORTED;
    }
}
if(RESET_VALUE == local_timeout)
{
    err = FSP_ERR_TIMEOUT;
}
return err;

输出结果:
image.png

更多回帖

发帖
×
20
完善资料,
赚取积分