建议使用以下浏览器,以获得最佳体验。 IE 9.0+以上版本 Chrome 31+ 谷歌浏览器 Firefox 30+ 火狐浏览器
请选择 进入手机版 | 继续访问电脑版
设置昵称

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

确定
我再想想
选择版块
直达楼层
标签
您还可以添加5个标签
  • 没有搜索到和“关键字”相关的标签
  • 云产品
  • 解决方案
  • 技术领域
  • 通用技术
  • 平台功能
取消

采纳成功

您已采纳当前回复为最佳回复

星辰27

发帖: 27粉丝: 132

级别 : 版主,版块专家

发消息 + 关注

发表于2019年10月12日 09:35:30 2538 1
直达本楼层的链接
楼主
显示全部楼层
[技术干货] 漫谈LiteOS之开发板-串口(基于GD32450i-EVAL)

1串口

 摘要:主要讲解物联网的技术积累,首先从串口开始,本文基于GD32450i-EVAL对串口以及其通信做了一个简要的分析,以及开发过程中遇到的一些技术问题以及解决方案。

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/123935)

主文博客链接:https://bbs.huaweicloud.com/blogs/124244


举报
分享

分享文章到朋友圈

分享文章到微博

采纳成功

您已采纳当前回复为最佳回复

我是卤蛋

发帖: 121粉丝: 296

级别 : 版主,版块专家

发消息 + 关注

发表于2020年06月26日 14:57:27
直达本楼层的链接
沙发
显示全部楼层

不错的分享,持续学习~

点赞 评论 引用 举报

游客

富文本
Markdown
您需要登录后才可以回帖 登录 | 立即注册

结贴

您对问题的回复是否满意?
满意度
非常满意 满意 一般 不满意
我要反馈
0/200