STM32——串口通信原理
STM32——串口通信
- 一、硬件部分
- 1、RS232标准
- 2、USB转串口(TTL)
- 3、原生的串口到串口(TTL->TTL)
- 二、串口通信协议
- 三、STM32串口通信功能框图
- 1、引脚
- 2、USART通信相关寄存器(最好过一遍,或者在试验之后回过来看一下,了解一下其工作机制)
- 3、波特率
一、硬件部分
RS232通信和TTL的区别只有一点,那就是在于硬件机制(电平),如果需要做RS232和TTL的转换,那就需要借助转换芯片来完成。
TTL | RS232 |
---|---|
0-5V | -15 - 15V |
高电平置1,低电平置0 | 高电平置0,低电平置1 |
1、RS232标准
2、USB转串口(TTL)
3、原生的串口到串口(TTL->TTL)
二、串口通信协议
起始位:由一个逻辑0的数据位表示
停止位:由0.5、1、1.5或2个逻辑1的数据位表示,通常选用1个位
有效数据:起始位后面紧接着就是有效数据,有效数据的长度常被约定为5、6、7、8或9位
校验位:校验位是可选的,为数据提供抗干扰性。
校验的方法主要有:
1、奇校验(odd):有效数据和校验位中“1”的个数为奇数
2、偶校验(even):有效数据和校验位中“1”的个数为偶数
3、0校验(space):不管有效数据内容是什么,校验位总是0
4、1校验(mark):同上,校验位总是1
5、无校验(noparity):数据包中不包含校验位
三、STM32串口通信功能框图
使用单片机外设之前,要先看看USART(通用同步异步收发器)的功能框图:
图片来源:STM32中文参考手册 25-3章节
我们将上面的功能框图划分成四个部分:
1、引脚
通过上图我们可以看到一共有8个引脚:
引脚 | 功能 |
---|---|
TX | 数据发送 |
RX | 数据接收 |
SCLK | 时钟,仅同步通信时使用 |
nRTS | 请求发送(Request To Send) |
nCTS | 允许发送(Clear To Send) |
SW_RX、IRDA_OUT、IRDA_IN | 红外相关配置 |
在这里需要注意的是:USART1-3是支持同步通信的,但是其挂载的总线不同,如果要从USART1换成USART2,那么其时钟也要修改
对于一款芯片的引脚功能,可以通过STM32F10X数据手册——Pinouts and pin description查询
ST每个系列的芯片都有一个数据手册,里面有引脚的详细功能,对于部分引脚来说,都是多个功能复用的,在写程序的时候享用到哪个功能,就在初始化时对它进行相应的配置,即通用功能配置和相应功能的初始化配置。
2、USART通信相关寄存器(最好过一遍,或者在试验之后回过来看一下,了解一下其工作机制)
如下图所示,USART_DR寄存器是9位有效的,包含一个发送数据寄存器TDR和一个接收数据寄存器RDR,是一个地址对应的两个物理内存。对应的是USART的全双工、半双工通信机制。
图片来源:STM32中文参考手册 25.6.2章节
我们先来看一下串口数据格式:
具体用多少位,是由USART_CR1寄存器决定的:
这里的n表示不确定,是由另外的寄存器来配置的,控制停止位的寄存器是USART_CR2:
校验位是由USART_CR1寄存器控制
当校验位出错时,就会产生校验错误,这时USART_SR的PE位就会置1:
3、波特率
STM32——串口通信原理相关推荐
- STM32串口通信原理及实验讲解
串口通信基本原理 串口 串口,顾名思义,即为串行接口,是处理器与外部设备进行串行通信的接口.串行通信是指数据按位进行顺序传输,这种方法占用引脚资源少,但速度相对较慢.串行通信按数据传输方向可分为三种: ...
- STM32串口通信原理及HAL库代码stm32f1xx_hal_uart.c阅读分析
原理性说明: //参考网址:https://blog.csdn.net/u010561799/article/details/89526266 在USART的发送端有2个寄存器,一个是程序可以看到的U ...
- NXP(I.MX6uLL) UART串口通信原理————这个未复习
参考:Linux NXP (I.MX6uLL) UART串口通信原理 作者:一只青木呀 发布时间: 2020-09-20 16:48:33 网址:https://blog.csdn.net/weixi ...
- 【串口通信】K210与STM32串口通信、K210与OpenMV串口通信
[串口通信]K210与STM32串口通信.K210与OpenMV串口通信 串口通信 前言 为何需要串口通信 K210如何进行串口通信 K210串口配置 K210串口发送相关定义 K210串口发送测试 ...
- STM32串口通信详解以及通信异常或者卡死常见问题分析
STM32串口通信详解以及通信异常或者卡死常见问题分析 目录 STM32串口通信详解以及通信异常或者卡死常见问题分析 一.常见的异常问题 二.STM32的串口简介 1.串口的通讯方式 ①按数据传输方向 ...
- STM32串口通信详解(嵌入式学习)
STM32串口通信 1.通信基础知识 1.1 时钟信号区分 同步通信 异步通信 波特率 总线协议(电气协议) 1.2 通信方式划分 串行通信 并行通信 1.3 通信方向划分 单工通信 半双工通信 全双 ...
- 【STM32串口通信】
STM32串口通信 学习计划 一.串口通信知识点 二.硬件部分 1.所需硬件 2.部分硬件连接 三.阻塞式 0.串口阻塞式发送和接收概念 1.STM32CUBEMX配置 2.编写阻塞式串口发送与接收代 ...
- 【嵌入式】STM32串口通信
[嵌入式]STM32串口通信 一.串口通信协议 1.串口通信简介 2.串口通信原理 二.RS232通信协议 1.RS232协议简介 2.机械规约 3.电气规约 三.STM32的USART串口通信(查询 ...
- stm32串口通信(初学者对于串口通信的理解)
stm32串口通信(初学者对于串口通信的理解) 标签: stm32串口通信单片机 2015-01-24 10:12 987人阅读 评论(0) 收藏 举报 分类: stm32 版权声明:本文为博主原创 ...
- STM32串口通信中使用printf发送数据配置方法 开发环境 Keil
STM32串口通信中使用printf发送数据配置方法(开发环境 Keil RVMDK) 已有 12456 次阅读2011-6-29 23:29 | 在STM32串口通信程序中使用printf发送数据, ...
最新文章
- [转] JavaScript:彻底理解同步、异步和事件循环(Event Loop)
- 一个关于异步的纠结问题
- 基于Spark MLlib平台的协同过滤算法---电影推荐系统
- CNCF 宣布 TUF 毕业 | 云原生生态周报 Vol. 33
- python一个try块后接一个或多个finally块_Python *与*语句完全等同于一个try – (除了) – finally块?...
- UVA1363 LA3521 POJ2800 ZOJ2646 Joseph‘s Problem【约瑟夫环+数学】
- paip.解决 数据库mysql增加列 字段很慢添加字段很慢
- 2019美赛参赛获奖经验
- visio安装后导致excel滑动滚动条闪退的问题
- 畅谈无线通信系统物理层之系统概述
- 基于MongoDB开发的物流系统(简易版)
- centos8.5更换阿里yum源
- 我爱 Ruby 的三十七个理由
- 数据库原理及应用教程(第4版|微课版)陈志泊-第三章习题
- 前端学习——微信小程序
- 2012年信息系统项目管理师下半年上午考试习题与答案解析
- CSDN的密码修改流程比之前好多了
- 数据库连接10060_MySQL错误:Can't connect to MySQL server (10060)
- oracle查看表空间的序号,Oracle查询所有序列
- android开发 nfc,Android NFC开发概述
热门文章
- 计算机指数函数符号,常用数学符号大全(注音及注解)
- 计算机网络 复习提纲(完整版)
- ubuntu 安装openproj-1.4-2.noarch.rpm
- 和平精英怎么玩?智能找图、鼠标滚轮宏按键玩吃鸡还能匹配手机?
- 数据库文件和文件组的类别
- Django 3实战: 仿链家二手房信息查询网(附GitHub源码) - 文末有送书活动啦!
- 基于Python实现仿Windows标准计算器
- 使用AudioRecord录制pcm格式音频
- ansible部署管理k8s
- WPS Office Pro v10.8.2.6726 绿色便携专业增强版