前言在人机交互系统开发中串口屏HMI与单片机MCU的通讯本质上是主机MCU和从设备屏之间的数据交换。以三易串口屏开发架构来看通讯主要分为两种模式系统指令通讯模式ASCII指令方式自定义协议通讯模式二进制协议方式两种模式均适配市面主流单片机开发平台包括Keil MDKSTM32、51、GD32等STM32CubeIDEArduino IDEESP-IDFESP32官方开发环境扩展IAR Embedded Workbench其底层本质一致单片机程序 → UART发送数据 → 串口屏接收解析 → 更新控件一、串口屏通讯基本原理1.1 硬件连接通常使用UARTMCU TX ---- LCD RXMCU RX ---- LCD TXGND ------ GND典型参数1152008 Data Bits1 Stop BitNo Parity二、方式一系统指令通讯2.1 协议格式ASCII格式命令 参数 \r\n结束符0D 0A例如页面切换page 0\r\n设置控件值wset numVf.valf 3.45\r\nwset numA.val 120\r\nwset text.txt 电量充足\r\n查询属性wget numA.val\r\n模拟按键触发click button0\r\n2.2 返回数据解析条件只有当系统变量bkcmd为非0的时候才会返回指令执行成功或者失败数据。格式返回指令格式为 命令码(1字节)参数(长度随命令码而不同)结束符(2字节\r\n)数据所有指令名以及参数全部16进制数据非ASCII数据便于软件解析。命令码含义格式参数说明0x00指令执行结果执行结果代码返回数据结束符\r\n执行结果代码1字节0x00 指令执行成功0x01 命令码无效指令第一个字符串无效0x02 指令参数1无效指令第二个字符串无效0x03 指令参数2无效指令第三个字符串无效0x04 指令参数3无效指令第四个字符串无效0x05 指令参数4无效指令第五个字符串无效0x06 指令参数5无效指令第六个字符串无效0x07 指令参数个数错误0x08 串口接收超时说明命令执行结果返回值主要用于客户取得串口屏控件的属性值响应客户发送的命令如果客户发送的指令有错例如命令码拼写错误属性名称拼写错误属性名称拼写错误等造成串口屏不能解析将返回不同的错误码方便客户查错。只有当系统变量bkcmd为非0的时候才会返回指令执行成功或者失败数据。这个命令提供了一种客户的调试命令的方式大部分情况下在调试完毕后都会把系统变量bkcmd置0不会收到此命令。举例如果客户发送指令的命令码拼写错误返回“00010d0a”。解释从左到右00 表示返回的命令码01表示命令码无效0d表示 \r0a表示 \n。0x01整数返回0x014字节整数结束符4字节整数4字节小端模式存储低字节在前0x02小数返回0x024字节小数结束符4字节小数4字节小端模式存储低字节在前0x03字符串返回0x03字符串结束符字符串GBK编码返回结果包括客户发起的命令执行情况和需要返回的数据。执行情况即执行结果需要返回的数据主要是取串口屏控件属性的值。值的类型为整数小数字符串。举例获取按钮1的x坐标。发送指令“wget button1 x\r\n”返回为“01880000000d0a”解释01 表示返回值为整数88000000表示位buttton1的 x坐标低字节在前的格式0D0A是命令结束符。如果系统变量bkcmd没有设置为0这个指令会接收到两个返回指令“00000d0a”和“01880000000d0a”第一个指令表示命令执行成功第二个指令是用户需要的结果。如果系统变量bkcmd设置为0则只返回第二个指令默认不返回执行成功或失败。三、Keil MDK 与串口屏通讯3.1 串口发送函数3.2 发系统指令3.3 注意事项每条指令间建议加微延时delay_ms(1);避免命令粘连。四、STM32CubeIDE 与串口屏通讯五、Arduino IDE 与串口屏通讯示例void setup(){Serial.begin(115200);}void loop(){Serial.println(wset temp.val 25);delay(500);println自动补\r\n非常适合快速验证。六、ESP-IDFESP32通讯UART配置uart_config_t cfg{.baud_rate115200,.data_bitsUART_DATA_8_BITS,.parityUART_PARITY_DISABLE,.stop_bitsUART_STOP_BITS_1};发送指令char *cmdwset led.val 1\r\n;uart_write_bytes(UART_NUM_1,cmd,strlen(cmd));七、IAR开发平台与Keil本质一致。printf(page 1\r\n);重定向printf即可驱动屏。八、自定义协议通讯推荐系统指令适合简单界面。复杂项目推荐自定义协议。8.1 协议格式示例协议帧头 命令 数据 CRCA5 43 01 xxxx xxxx命令定义01 电压02 电流03 SOC数据小端低字节在前高字节在后CRC16多项式80058.2 MCU组帧发送Keil代码str[0]0xA5;str[1]0x43;str[2]0x01;str[3]V0xff;str[4]V8;crcGet_CRC16(5,str);str[5]crc0xff;str[6]crc8;USART_OUT(str,7);发送A5 43 01 7C 01 91 86代表3.80V九、屏端协议解析十、主机与屏双向通讯MCU→屏显示参数切页改图片触发事件屏→MCU屏脚本uartSend(START);发送字节byte a[5]{01,02,03,04,05};uartSendBytes(a,0,5);MCU解析if(strcmp(rx,START)0){motor_run();}形成双向交互。十一、开发平台对比十二、两种通讯模式对比系统指令模式优点简单不设计协议调试方便缺点数据量大效率低多控件更新麻烦示例wset numVf.valf 3.45wset numA.val 120wset psoc.val 95三条指令。自定义协议模式优点一帧可更新多个控件效率高更适合量产项目推荐优先使用。十三、通讯常见问题1 白屏但程序正常排查TX/RX接反波特率错误MCU IO被击穿命令没带\r\n多条指令粘连2 中文乱码编码一致VP工程 GBKKeil GB2312/GBK否则中文异常。3 自定义协议无响应检查帧头长度CRC小端格式十四、完整实例架构推荐MCU层├─串口驱动├─协议组帧├─CRC校验屏端├─协议解析器├─控件刷新├─触摸事件回传这是当前串口屏最典型架构。总结主流单片机开发平台无论是KeilSTM32CubeIDEArduino IDEESP-IDFIAR与串口屏通讯本质一致都是UART数据收发。区别只是发送函数写法不同底层驱动不同而通讯模型只有两种系统指令自定义协议如果界面简单用系统指令如果项目量产建议自定义协议协议解析器方案。系统指令通讯模式ASCII指令方式自定义协议通讯模式二进制协议方式两种模式均适配市面主流单片机开发平台包括Keil MDKSTM32、51、GD32等STM32CubeIDEArduino IDEESP-IDFESP32官方开发环境扩展IAR Embedded Workbench其底层本质一致单片机程序 → UART发送数据 → 串口屏接收解析 → 更新控件
主流单片机开发平台如何与三易串口屏通讯
发布时间:2026/7/10 8:55:23
前言在人机交互系统开发中串口屏HMI与单片机MCU的通讯本质上是主机MCU和从设备屏之间的数据交换。以三易串口屏开发架构来看通讯主要分为两种模式系统指令通讯模式ASCII指令方式自定义协议通讯模式二进制协议方式两种模式均适配市面主流单片机开发平台包括Keil MDKSTM32、51、GD32等STM32CubeIDEArduino IDEESP-IDFESP32官方开发环境扩展IAR Embedded Workbench其底层本质一致单片机程序 → UART发送数据 → 串口屏接收解析 → 更新控件一、串口屏通讯基本原理1.1 硬件连接通常使用UARTMCU TX ---- LCD RXMCU RX ---- LCD TXGND ------ GND典型参数1152008 Data Bits1 Stop BitNo Parity二、方式一系统指令通讯2.1 协议格式ASCII格式命令 参数 \r\n结束符0D 0A例如页面切换page 0\r\n设置控件值wset numVf.valf 3.45\r\nwset numA.val 120\r\nwset text.txt 电量充足\r\n查询属性wget numA.val\r\n模拟按键触发click button0\r\n2.2 返回数据解析条件只有当系统变量bkcmd为非0的时候才会返回指令执行成功或者失败数据。格式返回指令格式为 命令码(1字节)参数(长度随命令码而不同)结束符(2字节\r\n)数据所有指令名以及参数全部16进制数据非ASCII数据便于软件解析。命令码含义格式参数说明0x00指令执行结果执行结果代码返回数据结束符\r\n执行结果代码1字节0x00 指令执行成功0x01 命令码无效指令第一个字符串无效0x02 指令参数1无效指令第二个字符串无效0x03 指令参数2无效指令第三个字符串无效0x04 指令参数3无效指令第四个字符串无效0x05 指令参数4无效指令第五个字符串无效0x06 指令参数5无效指令第六个字符串无效0x07 指令参数个数错误0x08 串口接收超时说明命令执行结果返回值主要用于客户取得串口屏控件的属性值响应客户发送的命令如果客户发送的指令有错例如命令码拼写错误属性名称拼写错误属性名称拼写错误等造成串口屏不能解析将返回不同的错误码方便客户查错。只有当系统变量bkcmd为非0的时候才会返回指令执行成功或者失败数据。这个命令提供了一种客户的调试命令的方式大部分情况下在调试完毕后都会把系统变量bkcmd置0不会收到此命令。举例如果客户发送指令的命令码拼写错误返回“00010d0a”。解释从左到右00 表示返回的命令码01表示命令码无效0d表示 \r0a表示 \n。0x01整数返回0x014字节整数结束符4字节整数4字节小端模式存储低字节在前0x02小数返回0x024字节小数结束符4字节小数4字节小端模式存储低字节在前0x03字符串返回0x03字符串结束符字符串GBK编码返回结果包括客户发起的命令执行情况和需要返回的数据。执行情况即执行结果需要返回的数据主要是取串口屏控件属性的值。值的类型为整数小数字符串。举例获取按钮1的x坐标。发送指令“wget button1 x\r\n”返回为“01880000000d0a”解释01 表示返回值为整数88000000表示位buttton1的 x坐标低字节在前的格式0D0A是命令结束符。如果系统变量bkcmd没有设置为0这个指令会接收到两个返回指令“00000d0a”和“01880000000d0a”第一个指令表示命令执行成功第二个指令是用户需要的结果。如果系统变量bkcmd设置为0则只返回第二个指令默认不返回执行成功或失败。三、Keil MDK 与串口屏通讯3.1 串口发送函数3.2 发系统指令3.3 注意事项每条指令间建议加微延时delay_ms(1);避免命令粘连。四、STM32CubeIDE 与串口屏通讯五、Arduino IDE 与串口屏通讯示例void setup(){Serial.begin(115200);}void loop(){Serial.println(wset temp.val 25);delay(500);println自动补\r\n非常适合快速验证。六、ESP-IDFESP32通讯UART配置uart_config_t cfg{.baud_rate115200,.data_bitsUART_DATA_8_BITS,.parityUART_PARITY_DISABLE,.stop_bitsUART_STOP_BITS_1};发送指令char *cmdwset led.val 1\r\n;uart_write_bytes(UART_NUM_1,cmd,strlen(cmd));七、IAR开发平台与Keil本质一致。printf(page 1\r\n);重定向printf即可驱动屏。八、自定义协议通讯推荐系统指令适合简单界面。复杂项目推荐自定义协议。8.1 协议格式示例协议帧头 命令 数据 CRCA5 43 01 xxxx xxxx命令定义01 电压02 电流03 SOC数据小端低字节在前高字节在后CRC16多项式80058.2 MCU组帧发送Keil代码str[0]0xA5;str[1]0x43;str[2]0x01;str[3]V0xff;str[4]V8;crcGet_CRC16(5,str);str[5]crc0xff;str[6]crc8;USART_OUT(str,7);发送A5 43 01 7C 01 91 86代表3.80V九、屏端协议解析十、主机与屏双向通讯MCU→屏显示参数切页改图片触发事件屏→MCU屏脚本uartSend(START);发送字节byte a[5]{01,02,03,04,05};uartSendBytes(a,0,5);MCU解析if(strcmp(rx,START)0){motor_run();}形成双向交互。十一、开发平台对比十二、两种通讯模式对比系统指令模式优点简单不设计协议调试方便缺点数据量大效率低多控件更新麻烦示例wset numVf.valf 3.45wset numA.val 120wset psoc.val 95三条指令。自定义协议模式优点一帧可更新多个控件效率高更适合量产项目推荐优先使用。十三、通讯常见问题1 白屏但程序正常排查TX/RX接反波特率错误MCU IO被击穿命令没带\r\n多条指令粘连2 中文乱码编码一致VP工程 GBKKeil GB2312/GBK否则中文异常。3 自定义协议无响应检查帧头长度CRC小端格式十四、完整实例架构推荐MCU层├─串口驱动├─协议组帧├─CRC校验屏端├─协议解析器├─控件刷新├─触摸事件回传这是当前串口屏最典型架构。总结主流单片机开发平台无论是KeilSTM32CubeIDEArduino IDEESP-IDFIAR与串口屏通讯本质一致都是UART数据收发。区别只是发送函数写法不同底层驱动不同而通讯模型只有两种系统指令自定义协议如果界面简单用系统指令如果项目量产建议自定义协议协议解析器方案。系统指令通讯模式ASCII指令方式自定义协议通讯模式二进制协议方式两种模式均适配市面主流单片机开发平台包括Keil MDKSTM32、51、GD32等STM32CubeIDEArduino IDEESP-IDFESP32官方开发环境扩展IAR Embedded Workbench其底层本质一致单片机程序 → UART发送数据 → 串口屏接收解析 → 更新控件