想让EPS32模块上电后把波特率修改到460800,发现修改了波特率后,用逻辑分析仪发现MCU数据按新的波特率发送出去了,EPS32也回复正常了,但是ATClient似乎无法接收到返回的数据。
AT_SW_VERSION_NUM为0x10301,RTTHREAD的版本为0x50002。
有另一个项目用的串口是V1版本则正常,感觉是ATClient和串口V2在波特率修改的使用上有些地方不太兼容。
int esp32_set_baudrate(int value,rt_bool_t flowControlEnable)
{
int result;
struct serial_configure config=RT_SERIAL_CONFIG_DEFAULT;
config.baud_rate=value;
config.flowcontrol=flowControlEnable?RT_SERIAL_FLOWCONTROL_CTSRTS:RT_SERIAL_FLOWCONTROL_NONE;
config.tx_bufsz= BSP_UART1_TX_BUFSIZE;
config.rx_bufsz= BSP_UART1_RX_BUFSIZE;
rt_device_close(esp32.client->device);
result=rt_device_control(esp32.client->device,RT_DEVICE_CTRL_CONFIG,(void*)&config);
if(result==RT_EOK)
{
LOG_D("%s baudrate change to %d",AT_CLIENT_DEV_NAME,value);
}
rt_err_t open_result = rt_device_open(esp32.client->device, RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_DMA_RX);
/* using interrupt mode when DMA mode not supported */
if (open_result == -RT_EIO)
{
open_result = rt_device_open(esp32.client->device, RT_DEVICE_OFLAG_RDWR | RT_DEVICE_FLAG_INT_RX);
}
return at_client_obj_wait_connect(esp32.client,5000);
}