【开源串口屏方案】五步教你筹划串口屏,5分钟快速上手 ...

打印 上一主题 下一主题

主题 899|帖子 899|积分 2697

本文详细先容串口屏原理、筹划方法、实现步骤,给出完整代码实例,30分钟即可完成串口屏的筹划使用。得当初学者快速上手。

一、什么串口屏?

串口屏是一种可以或许通过串行接口接收指令,并进行表现控制的液晶表现屏。它的重要长处是操作简单,接口同一,用GUI软件进行界面的快速编写与筹划。


二、串口屏原理与构成

串口屏的构成部分:
   1.表现屏:这是串口屏的核心部分,可以选择液晶表现屏或其他类型的表现屏.
2.微控制器:这是控制表现屏的关键部分。它可以接收和发送数据,控制表现屏的表现内
容。
3.串口通讯接口: 这是微控制器和表现屏之间的通讯接口。通常使用UART (通用异步收
发器) 接口。
4.电源:为表现屏和微控制器提供电源
5.嵌入式GUI软件: 接纳高通GT-HMI,可以作为上位机Designer和下位机Engine的开源筹划工具,帮助用户筹划和实现本身的界面。
  
  三、硬件制作

在高通GT-HMI官网上获取串口屏原理图,可参考制作本身的串口屏硬件。
 四、实现方法

以GT-HMI表现模块为例,这是一个做好的串口屏板子,包含开源的软硬件。只需几个步骤就可以实现串口屏的控制。您将需要以下准备:(毗连步骤部分可以增长简单的表示图,辅助阐明)
1. 硬件装备:

GT-HMI表现模块、一根USB转UART转接线、一台电脑,条记本和台式机均可。   首先将USB转UART转接线毗连到我们的GT-HMI表现模块上,然后将USB转UART转接线与您的电脑毗连。
2. 情况依赖:

软件情况:KEIL5, 串口调试助手。硬件情况:USB转UART转接线,GTC-480272TFT43XP.
3. 界面筹划:

在高通GT-HMI Designer筹划界面,可以参考GT-HMI视频教程及文档资料。
4. 编写串口通讯代码,示例如下:

   1、串口uart3初始化:
  

  • void bsp_uart3_init(void)
  • {
  •     UART_InitStructure UART_initStruct;

  •     PORT_Init(UART3_RX_PORT, UART3_RX_PIN, UART3_RX_SEL, 1); //GPIOM.0配置为UART0输入引脚
  •     PORT_Init(UART3_TX_PORT, UART3_TX_PIN, UART3_TX_SEL, 0); //GPIOM.1配置为UART0输出引脚

  •     UART_initStruct.Baudrate = UART3_Baudrate;  //波特率
  •     UART_initStruct.DataBits = UART_DATA_8BIT;  //8位数据位
  •     UART_initStruct.Parity = UART_PARITY_NONE;  //无校验位
  •     UART_initStruct.StopBits = UART_STOP_1BIT;  //1个制止位
  •     UART_initStruct.RXThreshold = _UART3_RX_BUFFER_SIZE;//设置FIFO个数
  • UART_initStruct.RXThresholdIEn = 1;//使能接收中断
  • UART_initStruct.TXThreshold = _UART3_Threshold_Size;//设置FIFO个数
  • UART_initStruct.TXThresholdIEn = 0;     //失能发送中断
  • UART_initStruct.TimeoutTime = 10; //10个字符时间内未接收到新的数据则触发超时中断
  • UART_initStruct.TimeoutIEn = 1;         //使能超时中断
  •     UART_Init(UART3, &UART_initStruct);

  •     UART3->TOCR &= ~(1 << UART_TOCR_MODE_Pos);  
  •     UART_Open(UART3);//开启uart3
  • }
    2:串口数据通过中断接收,接收数据的部分
  void UART3_Handler(void)
  {
      char count = _UART3_Threshold_Size;
      char i=0;
      uint32_t chr ;
      if(UART_INTStat(UART3, UART_IT_RX_THR))//接收中断
      {
          UART_INTClr(UART3, UART_IT_RX_THR);//清除接收中断标志位
          while (count--)//FIFO个数接收数据
          {
  if(UART_ReadByte(UART3, &chr) == 0)//接收数据
              {
                  if(_uart3_count < _UART3_RX_BUFFER_SIZE)
                  {
                      _uart3_rx_buf[_uart3_count] = chr;
                      //接收到的数据存在这个全局变量数组内
                      UART_BUF[_uart3_count] = chr;
                      _uart3_count++;//数组下标自增
                  }
              }
          }
  }
  接收数据并进行相应的数据表现
  /***********************
  **数据包格式:头(0xAA)+装备启动状态+间隔时间+重复次数+工作温度+等待速度+包长度+校验和
  **装备启动状态:0x0、0x1
  **间隔时间:1~30
  **重复次数:1~10
  **工作温度:10~100
  **等待速度:0~100
  ***********************/
  void Refresh_New_Page(unsigned char *data)
  {
  unsigned char verify=0 ,i=0;
  
  for ( i = 0; i < data[6]-1; i++)//计算接收到的数据校验和。
  {
  verify += data;
  }
  
  if(data[0] == 0xaa && verify == data[7])//判定帧头(0xAA)和校验和均是和接收数据符合。
  {
  if(data[1]==1)//装备启动
  {
  gt_obj_set_state(switch1, 1);
  }else if(data[1]==0)
  {
  gt_obj_set_state(switch1, 0);//装备关闭
  }
  gt_input_number_set_value(inputNum1, data[2]);//设置间隔时间
  gt_input_number_set_value(inputNum2,data[3]);//设置重复次数
  gt_input_number_set_value(inputNum3,data[4]);//设置重复次数
  gt_slider_set_pos(slider1, data[5]);
  gt_disp_load_scr(screen_home);
  }
  }
    3. 下载程序,运行示例
  int main(void)
  { 
  SystemInit();//mcu系统初始化
  __enable_irq();//使能中断
  bsp_uart0_init();//uart0初始化
  bsp_uart3_init();//uart3初始化
  bsp_sfc_config(1);//存储芯片读取配置
  bsp_lcd_rgb_init();//rgb接口屏显配置
  systick_init();//systick时钟配置
  TP_Init();//时钟I2C初始化
  
  TIMR_Init(TIMR4, TIMR_MODE_TIMER, CyclesPerUs, 1000, 1);//定时器初始化
  TIMR_Start(TIMR4);//启动定时器
  GT_Font_Init();//字库初始化
  gt_init();
  
  gt_ui_init();
  
  while (1) {
  gt_task_handler();//gt-hmi engine 任务调理
  swm_delay_ms(1);
  // WDT_Feed(WDT);
  if(uart_status)//uart3串口数据接收完标志
  {
  uart_status=0;
  Refresh_New_Page(UART_BUF); //处理串口数据将串口数据表现到对应的屏上面。
  memset(UART_BUF,0,8);
  }
  #if _RUNNING_PRINT
  if (_cnt >= 1000) {
  _cnt = 0;
  GT_LOGI(GT_LOG_TAG_TEST, "tick: %d s", gt_tick_get() / 1000);
  }
  #endif
  }
  }
  

  4、程序下载到高通GTC-480272TFT43XP 表现模块效果:
   串口屏初始界面:
  


   
串口助手发送如下图命令:

  

   
发送命令之后表现的界面:

  

   发送的数据为AA 01 02 01 38 37 08 25 (发送数据格式:头(0xAA)+装备启动状态+间隔时间+重复次数+工作温度+等待速度+包长度+校验和)其中第二个数据“01”代表装备启动状态,我们可以考到装备启动开关被打开,第三个数据”02”代表间隔时间,我们可以看到间隔时间被设置成2min, 第四个数据工作温度“38”是16进制的,换算成10进制就是56,我们可以看到工作温度被改成56。
   
测试命令:AA 01 02 08 46 54 08 57

  
  
我们再次发送测试命令,可以看到其中重复次数和工作温度都被改变了。

  

  总结

您可以尝试本身制作串口屏硬件,或者使用高通GT-HMI开辟板/表现模块。我们提供了相应的软硬件资料供您参考。您需要留意的是,制作硬件需要一定的电子技术知识。
如果您是初学者,我们建议您先从使用高通的开辟板开始。使用高通GT-HMI开辟框架,您也可以快速实现串口屏的表现控制。欢迎分享您的创作经验!

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

络腮胡菲菲

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表