当前位置: 首页 > article >正文

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

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

  • 第一节 串口通信理论
  • 第二节 软件通信协议
  • 第三节 DMA理论
  • 第四节 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函数编写
在这里插入图片描述


http://www.kler.cn/a/314353.html

相关文章:

  • 【AI构思渲染】网络直播——建筑绘图大模型生成渲染图
  • 微信小程序的主体文件和页面文件介绍
  • Java结合ElasticSearch根据查询关键字,高亮显示全文数据。
  • 爱普生SG-8200CJ可编程晶振在通信设备中的应用
  • 32位、64位、x86与x64:深入解析计算机架构
  • 3D绘制动态爱心Matlab
  • 4、FPGA特征简介
  • 重生之我们在ES顶端相遇第15 章 - ES 的心脏-倒排索引
  • R语言机器学习算法实战系列(二) SVM算法(Support Vector Machine)
  • ChatGPT 在国内使用的方法
  • 论文阅读 - SELF-REFINE: Iterative Refinement with Self-Feedback
  • 了解二八定律,提高工作效率、生活质量
  • Maven笔记(二):进阶使用
  • 国产Linux:OpenEuler溯源
  • 初级前端面试
  • 【RabbitMQ】⾼级特性
  • 关于有源蜂鸣器及无源蜂鸣器的区别及驱动各类单片机案例
  • 华为---代理ARP工作过程示例分析
  • 使用ultralytics库微调 YOLO World 保持 Zero-Shot 能力
  • Go小专栏 第一期
  • 【前端】ES6:Promise对象和Generator函数
  • 【MySQL 01】数据库基础
  • 配置docker的proxy指向
  • 【Proteus仿真】基于51单片机的L298N电机电速调节
  • 记录动态库项目仅生成了dll,未生成lib文件的问题
  • 深度学习02-pytorch-07-张量的拼接操作