蓝桥杯【物联网】零基础到国奖之路:七. 串口

蓝桥杯【物联网】零基础到国奖之路:七. 串口

  • [第一节 串口通信理论](#第一节 串口通信理论)
  • [第二节 软件通信协议](#第二节 软件通信协议)
  • [第三节 DMA理论](#第三节 DMA理论)
  • [第四节 CubeMX的配置](#第四节 CubeMX的配置)
  • [第五节 代码模版](#第五节 代码模版)

第一节 串口通信理论

通用异步收发传输器(UART)是一种串行异步收发协议,应用十分广泛。UART将数据二进制一位一位的进行传输。在UART通讯协议中信号线上的状态位高电平代表"1"低电平代表"0"。

硬件连接:

TX:发送数据,连接RX

RX:接收数据,连接TX

GND:共地

仅需要三根线,注意连接时两个设备UART电平,如范围不一致,电平转换后再连接。

第二节 软件通信协议

UART作为异步串口通信协议的一种,原理是将数据字节一位接一位地传输。

如下:

Start Data Parity Stop

size 1 5-9 0-1 1-2

A.空闲位:

UART协议规定,总线空闲状态时信号线状态为"1"即高电平。

B.起始位:

开始进行数据传输时发送一个低电平"0"来表示传输字符的开始。因为空闲位一直是高电平所以发送一个区别于空闲状态的信号即为低电平。

C.数据位:

起始位后就是要传输的数据,可以是5,6,7,8,9位,构成一个字符,一般都是8位。先发送最低位最后发送最高位。

D.奇偶校验位:

数据传送完后,进行奇偶校验,校验位其实是调整个数,串口校验分几种:

D.1.无校验

D.2.奇校验

D.3.偶校验

E.停止位:

数据结束标签,可以是1位,1.5位,2位的高电平。

F.波特率:

数据传输速率使用波特率来表示,单位bps,常见波特率9600bps,115200bps等等,如果串口波特率设置为9600bps,那么传输一个比特的时间是

1/9600=104.2us。

以9600 8N1(9600波特率,8个数据位,没有校验位,1位停止位)为例,这是目前最常用的串口配置,传输"O","K"两个ASCII值,"0"为79二进制为01001111,"K"为对应的二进制为01001011,传输格式为:

01111001010110100101

传输先低位后高位。

串口波特率为9600,1bit传输时间大约为104us,传送一个数据实际是10个比特(开始位,8个数据位,停止位),一个bytes传输速率实际为9600*8/10=7680bps。

第三节 DMA理论

DMA即直接存储器访问。DMA传输将数据从一个地址空间复制到另一个地址空间,提供在外设和存储器之间或者存储器和存储器的高速数据传输。

转移数据是可以不用CPU参与的。

希望外设A数据拷贝到B,只要提供一条数据通路,直接让数据由A到B不经过CPU处理,DMA就是基于以上设想设计的,作用就是解决大量数据转移过度消耗CPU资源的问题。

第四节 CubeMX的配置

注意要打开USART2的NVIC。

第五节 代码模版

DMA模式发送,注意用strlen得到数据长度,添加头文件#include <stdio.h>;

头文件内声明

main函数编写

相关推荐
什巳17 小时前
JAVA练习278- 和为 K 的子数组
java·学习·算法·leetcode
碎光拾影18 小时前
CPU与MCU核心区别揭秘
单片机·学习·51单片机
KaifuZeng19 小时前
模电面试问题汇总一
单片机·嵌入式硬件·面试·模电
2401_8541515519 小时前
STM32 看门狗:IWDG 和 WWDG 怎么用
stm32·单片机·嵌入式硬件
我命由我1234519 小时前
复利极简理解
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法
AOwhisky20 小时前
Python 学习笔记(第三期)——流程控制核心知识点自测与详解
开发语言·笔记·python·学习·云原生·运维开发·流程控制
tyqtyq2220 小时前
药品说明书解读 —— AI 安全用药助手,鸿蒙原生应用深度解析
人工智能·学习·华为·生活·harmonyos
zjxtxdy21 小时前
TIM编码器接口
stm32·单片机·嵌入式硬件
小心亦新21 小时前
STM32学习13 定时器1中断
stm32·嵌入式硬件·学习
我命由我1234521 小时前
72 法则极简理解
经验分享·笔记·学习·职场和发展·求职招聘·职场发展·学习方法