2582|0

1510

帖子

1

TA的资源

五彩晶圆(初级)

楼主
 

【ESK32-360测评】+ 串口通信及应用 [复制链接]

 

1. 串口通信

ESK32-360开发板上提供了串行通讯功能,其接口如图1所示。

1  RS232接口

 

2  DB9的引脚连接

 

通过串行通讯的例程,我们可以学习串口通信的基本用法。

 

例程的主程序如下:

uc8 gHelloString[] = "Hello, this is USART Tx/Rx Polling example. Please enter characters.....\r\n";
int main(void)
{
  HT32F_DVB_LEDInit(HT_LED1);
  UxART_Configuration();
  UxART_TxTest();
  while (1)
  {
    #if 0 // Blocking mode
    {
      UxART_RxTest_Block();         // Wait until get UxART data
    }
    #else // Non-Blocking mode
    {
      UxART_RxTest_NonBlock();     // Return if no UxART data, LED can toggle by "LED_Demo()".
    }
    #endif
    LED_Demo();                    //   LED1  闪烁
  }
}

 

由程序分析可以看出,它预先定义了一个数组来存放字符串,在完成串口通信的基本配置后,就发送该字符串来验证输出功能,随后可通过串口向其发送信息,在接收后再原样反馈输出,其执行效果如图3所示。

3 串口通信

 

2.基本应用

有了串行通讯后,我们用它可以做什么呢?

我们还是将它与LCD屏显示结合起来,最简单的就是发送数据在LCD屏上进行绘制,如动态地指定一个宽度,然后进行指定色彩的填充,见图4和图5所示。

4 窄彩条

 

5宽彩条

 

3.通讯传输显示图片

 

有了前面简单的测试,我们就可以大胆地期待着通过传输数据来显示图片了,因为前面用数组来显示大的图片时会导致下载崩溃。

首先以小图片来测试,成功通过!其效果如图6所示。

6 以传送数据来显示图片

 

传送数据的界面如图7所示,其中“00 38”是图片宽度,即56个像素,而“00 44”是图片的高度,即68个像素。别小看这个图片,它可是占用了7616个字节呀!

7 传送图片数据

那么把胆子再放大些呢? 能传送153600个字节吗?它可是满屏图片的规格,153600=240*320*2

(  320=0140H  240=F0153600=240*320*2  )

首先用Image2Lcd软件将一幅240*320像素点的图片转换为二进制数据文件BIN,其格式设置如图8所示,然后进行串口传送,则效果如图9所示,一样的成功!

当然在执行时有些吓人,首先是读入文件时串口调试器有点懵,像是被打晕,好一会没找到北;好容易在发送窗口有了数据,这次该轮到发送器晕了,也是一段时间没响应,近乎是要崩溃!还在还算顽强,终于挺过来了,屏幕上一丝丝彩线在游走,终于是一个圆满!

 

8 准备数据文件

 

9 图片显示

 

为防止偶然,又传第2幅、第3 ... ... 完全抗击打!

10 演示效果

最后请出我们的主角,功能程序:

int main(void)
{
    u32 err = 0, result;
    u16 uData,a,b;
    u32 xid = 0;
    u32 ImgAdds = 0;
    u32 yid = 0;
    u32 i = 0, j = 0, color = 0;
    u8  X_Location=0, Height;
    u16 Y_Location=0, Width;
    /* Initialize LEDs      */
    HT32F_DVB_LEDInit(HT_LED1);
    HT32F_DVB_LEDInit(HT_LED2);
    HT32F_DVB_LEDInit(HT_LED3);
    LCD_Init();
    LCD_Config();
    LCD_BackColorSet(Black);
    LCD_TextColorSet(Yellow);
    LCD_StringLineDisplay(Line3, "       Holtek       ");
    LCD_StringLineDisplay(Line4, "     HT32 Series    ");
    LCD_StringLineDisplay(Line5, "     LCD Example    ");
        
    UxART_Configuration();
    UxART_TxTest();
        
    for (i = 0; i < 4; i++)
    {
         while (USART_GetFlagStatus(HTCFG_UART_PORT, USART_FLAG_RXDR) == RESET);
         uData = USART_ReceiveData(HTCFG_UART_PORT);
         Tx_Buffer[i]=(u8)uData;
         UxART_TxSend(uData);
    }
        
    a=Tx_Buffer[0];
    b=Tx_Buffer[1];
    Width=a << 8 | b;
    a=Tx_Buffer[2];
    b=Tx_Buffer[3];
    Height=a << 8 | b;
        
    xid = X_Location;
    yid = Y_Location;
        
    LCD_StarterSet(xid, yid);
    for (i = 0; i < Height; i++)
    {
     LCD_WriteRAMPrior();
     for (j = 0; j < Width; j++)
     {
      while(USART_GetFlagStatus(HTCFG_UART_PORT, USART_FLAG_RXDR) == RESET);
      a = USART_ReceiveData(HTCFG_UART_PORT);
                           
      while(USART_GetFlagStatus(HTCFG_UART_PORT, USART_FLAG_RXDR) == RESET);
      b = USART_ReceiveData(HTCFG_UART_PORT);
      color = a << 8 | b;
                           
      LCD_WriteRAM(color);
     }
     xid++;
     LCD_StarterSet(xid, yid);
   }
   while (1);
}

 

点赞 关注
 
 

回复
举报
您需要登录后才可以回帖 登录 | 注册

查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表