漫谈LiteOS之开发板-串口(基于GD32450i-EVAL)

举报
星辰27 发表于 2019/10/12 09:36:42 2019/10/12
【摘要】 ​主要讲解物联网的技术积累,本期我们先带领大家学习漫谈LiteOS之漫谈开发板第一集-串口,本文基于GD32450i-EVAL对串口以及其通信做了一个简要的分析,以及开发过程中遇到的一些技术问题以及解决方案

1串口

1.1 定义

    串口即串行端口,泛指采用所有采用串口通信时序的接口,一般在嵌入式中默认为UART口。

1.2 串口的作用

    (1)通过串口将程序下载到开发板。

    (2)显示调试日志实现对于运行程序的监控。

    (3)通过串口发送或接收命令实现终端与开发板的信息交互。

串口通信

2.1 定义

    在串口中,数据按顺序一位一位的传输,该传输方式成为串口通信。

2.2 串口通信的传输方向

    (1)单工:数据只可以沿一个方向传输。

    (2)半双工:数据可以分时的沿着两个方向传输,即不能同时进行。

    (3)全双工:数据可以同时进行双向传输。

2.3 波特率

    波特率指的是每秒传输多少位数据,即传输率。常用波特率为9600115200。

2.4 数据包

     数据包 = 起始位 + 数据位 + 校验位 + 结束位

3 GD32F450i的串口

    对于GD32F450i开发板主要通信接口包含4USARTUSART0/1/2/5)和4UARTUART3/4/6/7)。以USART0为例,具体原理图如图1所示。


图1 串口原理图.png

图1 串口原理图

                

   由上图可知,引脚PA9PA10位串口USART0的数据输入(接收)引脚RX和数据输出引脚TX

串口初始化的步骤

    (1)使能GPIO的时钟。

    (2)使能UART0的时钟。

    (3)设置USART TX的引脚或端口。

    (4)设置USART RX的引脚或端口。

    (5)设置USART TX对应引脚为推挽输出工作模式。

    (6)设置USART RX对应引脚为推挽输出工作模式。

    (7)设置波特率为115200

    (8)使能RxTx端口。

4.1 串口模式

    (1)普通模式:在主函数中接收函数,输出字符串到串口。

    1)开发环境

    WindowsKeilJlink下载器、GD32F450i-EVAL2019

    注意:若使用的MDK版本为Keil5.25以后,打开项目时以及使用J-Link下载器烧录程序时可能会报错,针对可能出现的问题进行分析以及解决,链接为https://bbs.huaweicloud.com/blogs/123604

            2)程序重点

  为实现通过printf函数打印字符串和输出实时数据到串口助手,需要重写fputc函数,同时添加头文件 #include "stdio.h",重写函数如下所示。

       int fputc(int ch, FILE *f)

     {

            usart_data_transmit(EVAL_COM1, (uint8_t)ch);

            while(RESET == usart_flag_get(EVAL_COM1, USART_FLAG_TBE));

            return ch;

       }

    3)硬件连接

    连接USB供电线后,将J-Link下载器连接到开发板的JTAG接口上,之后连接到PC端,若LED5点亮说明选择了正确的启动方式,供电正常。硬件连接图如图2所示。供电方式选择GD-Link,串口采用九孔com口串口线(本文中使用杜邦线代替)连接。


2硬件连接图.jpg

图2 硬件连接图

之后点击keil5的编译和烧录按钮,如图3所示。

图3 编译与烧录.png

图3 编译与烧录

    上述过程实现了下载程序到开发板,用跳线帽将JP5跳到USART0上,并将串口线连接到开发板的COM0上,例程首先将输出“USART printf example: please press theTamper key”到超级终端。按下 Tamper 键,串口继续输出“USART printf example”

    通过串口输出的信息如图4所示。

图4 串口输出1.png

图4 串口输出(一)

    (2)中断模式:产生的不影响主程序运行。

    主函数中需要使能接收中断和发送中断即分别将对RBNETBE状态寄存器进行操作,触发中断。测试时首先,所有的LED灯亮灭一次。然后EVAL_COM0将首先输出数组 tx_buffer 的内容(从 0x00  0xFF)到支持 hex 格式的串口助手并等待接收由串口助手发送的 BUFFER_SIZE 个字节的数据。MCU 将接收到的串口助手发来的数据存放在数组 rx_buffer 中。在发送和接收完成后,将比较 tx_buffer rx_buffer 的值,如果结果相同,LED1LED2LED3 轮流闪烁;如果结果不相同,LED1LED2LED3 一起闪烁。

    通过串口输出的信息如图5所示。

图5 串口输出2.png

图5 串口输出图(二)

    (3DMA模式:与主函数互不影响,独立运行。

    主函数中需要先使能USART0的发送和接收DMA通道,触发DMA。对于测试,DMA测试过程与中断方式相同。

    通过串口输出的信息如6所示。

图6 串口输出3.png

图6 串口输出(三) 

            通过以上的开发流程,对于物联网中的串口有了更深的认识。

            目录主文链接https://bbs.huaweicloud.com/blogs/124244


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。