【已解决--驱动设计与使用方式差异】tuyaOS模组WBR3 SDK3.5.3串口收发严重BUG
严重BUG: 测试发现 基于tuyaOS开发的 SDK是3.5.3 模组是WBR3 必现问题,发现 串口接收和发送出现严重bug,串口接收 会少接收一个 串口发送,一次性发送一个长度为20个字节的数组,第一次有可能发送的是正确的 但是后面发送的100%是不正确的,错误情况:数组的最后一位变成了第一位,,,,,,问题原因可能是你们串口发送数组清空 或逻辑出现问题 不排除我的串口配置有问题 我配置的串口如下cfg.base_cfg.baudrate = 115200;
cfg.base_cfg.databits = TUYA_UART_DATA_LEN_8BIT;
cfg.base_cfg.stopbits = TUYA_UART_STOP_LEN_1BIT;
cfg.base_cfg.flowctrl = TUYA_UART_FLOWCTRL_NONE;
cfg.base_cfg.parity = TUYA_UART_PARITY_TYPE_NONE;
cfg.open_mode = O_BLOCK;
cfg.rx_buffer_size = 1024;
ret = tal_uart_init(TUYA_UART_NUM_0,&cfg);
我的发送如下: OPERATE_RET op_ret = tal_uart_write(TUYA_UART_NUM_0, u8Arr_UartReplyFrame, UART_TRASLATE_CMD_LENGTH);
TAL_PR_DEBUG("Uart reply data:\nhead:[%02x%02x]addr:[%02x]frametype:[%d]data:[%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d,%d]crc:[%02x]"
,u8Arr_UartReplyFrame[0], u8Arr_UartReplyFrame[1], u8Arr_UartReplyFrame[2], u8Arr_UartReplyFrame[3], u8Arr_UartReplyFrame[4]
,u8Arr_UartReplyFrame[5], u8Arr_UartReplyFrame[6], u8Arr_UartReplyFrame[7], u8Arr_UartReplyFrame[8], u8Arr_UartReplyFrame[9]
,u8Arr_UartReplyFrame[10], u8Arr_UartReplyFrame[11], u8Arr_UartReplyFrame[12], u8Arr_UartReplyFrame[13], u8Arr_UartReplyFrame[14]
,u8Arr_UartReplyFrame[15], u8Arr_UartReplyFrame[16], u8Arr_UartReplyFrame[17], u8Arr_UartReplyFrame[18], u8Arr_UartReplyFrame[19]); 在日志串口中输出的数据是我设定的 没有问题 说明我发送的数组中的数据是正确的顺序 但是串口1发出来的数据 最后一个就不对了 尝试#define CONFIG_UART_WRITE_ASYNC 编译不过
问题类型目录:产品功能模块/MCU嵌入式开发/TuyaOS多代码开发
问题原因应该是串口的缓存在发送和接收的时候没有处理好,每一次发送都会把上一次发送的最后一个数据在最前面发出来,例如我代码第一次发送:AA BB CC DD EE 第二次发送:01 02 03 04 05 串口助手监视到 我第二次的数据就是 EE 01 02 03 04 我尝试修改串口的配置,让其成为异步模式,但是代码编译不过,这部分的代码都是涂鸦提供的,接收的时候 我用串口助手发送一个长度为20个字节的数据 结构uart的read报告我收了两次 一次是1个字节 第二次是19个字节 服了...........................................................