官方例程UART初始化失败问题

Viewed 14

一、描述你遇到的问题

在初始化UART时,使用官方例程尝试初始化15,16号口作为TX与RX,但是初始化失败
请详细描述问题

二、你具体做的所有步骤结果截图

以下为代码部分
#include "pinctrl_porting.h"
#include "pinctrl.h"
#include "uart.h"
#include "uart_porting.h"
#include "osal_debug.h"
#define TEST_UART_RX_BUFF_SIZE 64 /* 定义 UART 接收缓存区大小 */

void usr_uart_io_config(void)
{
/* 如下IO复用配置,也可集中在SDK中的usr_io_init函数中进行配置 /
uapi_pin_set_mode(S_MGPIO15, PIN_MODE_1); /
uart1 tx /
errcode_t tt = uapi_pin_set_mode(S_MGPIO16, PIN_MODE_1); /
uart1 rx */
if (tt != ERRCODE_SUCC) {
osal_printk("pin set mode fail\r\n");
}
else {
osal_printk("pin set mode success\r\n");
}
}

unsigned char g_uart_rx_buff[TEST_UART_RX_BUFF_SIZE] = { 0 };
uart_buffer_config_t g_uart_buffer_config = {
.rx_buffer = g_uart_rx_buff,
.rx_buffer_size = TEST_UART_RX_BUFF_SIZE
};

errcode_t usr_uart_init_config(void)
{
errcode_t errcode;

osal_printk("[UART] setting attr...\r\n");
uart_attr_t attr = {  
    .baud_rate = 9600, /* 波特率 */  
    .data_bits = 8,      /* 数据位 */  
    .stop_bits = 1,      /* 停止位 */  
    .parity = 0          /* 校验位 */  
};

osal_printk("[UART] attr: baud=%d databits=%d stopbits=%d parity=%d\r\n",
attr.baud_rate, attr.data_bits, attr.stop_bits, attr.parity);

osal_printk("[UART] setting pin config...\r\n");
uart_pin_config_t pin_config = {  
    .tx_pin = S_MGPIO15, /* uart1 tx */  
    .rx_pin = S_MGPIO16, /* uart1 rx */  
    .cts_pin = PIN_NONE,
    .rts_pin = PIN_NONE
};

osal_printk("[UART] pins: TX=%d RX=%d CTS=%d RTS=%d\r\n",
            pin_config.tx_pin, pin_config.rx_pin,
            pin_config.cts_pin, pin_config.rts_pin);

errcode = uapi_uart_deinit(UART_BUS_1);

osal_printk("[UART] deinit returned: 0x%x\r\n", errcode);

errcode = uapi_uart_init(UART_BUS_1, &pin_config, &attr, NULL, &g_uart_buffer_config);  
if (errcode != ERRCODE_SUCC) {
    osal_printk("uart init fail\r\n");  
}
else {
    osal_printk("uart init success\r\n");
}

osal_printk("=== usr_uart_init_config end ===\r\n");

return errcode;

}

void usr_uart_read_data(void)
{
int len;
unsigned char g_test_uart_rx_buffer[64];
len = uapi_uart_read(UART_BUS_1, g_test_uart_rx_buffer, 64, 0);
if(len > 0) {
/* process /
printf("read data len=%d\r\n", len);
printf("data: ");
for(int i=0; i<len; i++) {
printf("0x%02X ", g_test_uart_rx_buffer[i]);
}
}
}
int usr_uart_write_data(unsigned int size, char
buff)
{
unsigned char tx_buff[10] = { 0 };
if (memcpy_s(tx_buff, 10, buff, size) != EOK) {
return ERRCODE_FAIL;
}
int ret = uapi_uart_write(UART_BUS_1, tx_buff, size, 0);
if(ret == -1) {
return ERRCODE_FAIL;
}
return ERRCODE_SUCC;
}

请插入图片

三、当前开发板状态全景照片

请插入图片

四、开发板串口所有日志

以下为代码部分的串口输出
[UART] setting attr...
[UART] attr: baud=9600 databits=8 stopbits=1 parity=0
[UART] setting pin config...
[UART] pins: TX=15 RX=16 CTS=115 RTS=115
[UART] deinit returned: 0x0
uart init fail
=== usr_uart_init_config end ===
[RADAR_LOG] alg ctrl read from nv [1][2][0][0][1][1][20]
device_main_init: 0!
===hal_initialize_phy===226===
device_module_init:: succ!
请在此处粘贴串口日志

1 Answers

已解决,attr与pin_config内的所传参数必须为枚举类型,不能直接定义数据