STM32基础之串口通信

发布者:脑洞飞扬最新更新时间:2022-04-20 来源: eefocus关键字:STM32  基础  串口通信 手机看文章 扫描二维码
随时随地手机看文章

串口通讯协议简介:

串口通讯(Serial Communication)是一种设备间非常常用的串行通讯方式,因为它简单便捷,因此大部分电子设备都支持该通讯方式,电子工程师在调试设备时也经常使用该通讯方式输出调试信息。


在计算机科学里,大部分复杂的问题都可以通过分层来简化。如芯片被分为内核层和片上外设;STM32 标准库则是在寄存器与用户代码之间的软件层。对于通讯协议,我们也以分层的方式来理解,最基本的是把它分为物理层和协议层。物理层规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。协议层主要规定通讯逻辑,统一收发双方的数据打包、解包标准。


串行通信的分类

1、按照数据传送方向,分为:

**单工:**数据传输只支持数据在一个方向上传输;

**半双工:**允许数据在两个方向上传输。但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;它不需要独立的接收端和发送端,两者可以合并一起使用一个端口。


**全双工:**允许数据同时在两个方向上传输。因此,全双工通信是两个单工通信方式的结合,需要独立的接收端和发送端。

2、按照通信方式,分为:

**同步通信:**带时钟同步信号传输。比如:SPI,IIC通信接口。

**异步通信:**不带时钟同步信号。比如:UART(通用异步收发器),单总线。


物理层:

规定通讯系统中具有机械、电子功能部分的特性,确保原始数据在物理媒体的传输。其实就是硬件部分。

电平标准:RS232标准、USB转串口、原生的串口到串口


1.RS232标准串口主要用于工业设备直接通信

在设备内部信号是以TTL电平标准传输的,但其抗干扰能力较弱,为了增加串口的通讯距离及抗干扰能力,设备之间是通过RS-232电平标准传输的,而且TTL电平需要经过电平转换芯片才能转化为RS-232电平,经常使用MA3232与SP3232芯片对TTL电平及RS-232电平进行相互转换。


2.USB转串口主要用于设备跟电脑通信

电平转换芯片一般有CH340、PL2303、CP2102、FT232

使用的时候电脑端需要安装电平转换芯片的驱动。


3.原生的串口到串口

原生的串口通信主要是控制器跟串口的设备或者传感器通信,不需要经过电平转换芯片来转换电平,直接就用TTL电平通信。

例如:GPS模块、GSM模块、串口转WIFI模块、HC04蓝牙模块等。


协议层:

协议层主要规定通讯逻辑,内容包含了起始位、主体数据、校验位及停止位,双方需要约定一致的数据包格式才能正常收发数据,即软件部分。


1.数据包

串口通讯的数据包由发送设备通过自身的TXD接口传输到接收设备得RXD接口,在协议层中规定了数据包的内容,具体包括起始位、主体数据(8位或9位)、校验位以及停止位,通讯的双方必须将数据包的格式约定一致才能正常收发数据。

2.波特率

由于异步通信中没有时钟信号,所以接收双方要约定好波特率,即每秒传输的码元个数,以便对信号进行解码,常见的波特率有4800、9600、115200等。STM32中波特率的设置通过串口初始化结构体来实现。

3.起始和停止信号

数据包的首尾分别是起始位和停止位,数据包的起始信号由一个逻辑0的数据位表示,停止位信号可由0.5、1、1.5、2个逻辑1的数据位表示,双方需约定一致。STM32中起始和停止信号的设置也是通过串口初始化结构体来实现。

4.有效数据

有效数据规定了主题数据的长度,一般为8或9位,其在STM32中也是通过串口初始化结构体来实现的。

5.数据校验

在有效数据之后,有一个可选的数据校验位。由于数据通信相对更容易受到外部干扰导致传输数据出现偏差,可以在传输过程加上校验位来解决这个问题。校验方法有奇校验(odd)、偶校验(even)、 0 校验(space)、 1 校验(mark)以及无(noparity)。这些也都可以在串口初始化结构体中实现的。


USART简介

USART(通用同步异步收发器)是一个串行通信设备,可以灵活地与外部设备进行全双工数据交换。有别于 USART 还有一个UART,它是在 USART 基础上裁剪掉了同步通信功能,只有异步通信。简单区分同步和异步就是看通信时需不需要对外提供时钟输出,我们平时用的串口通信基本都是 UART。USART 在 STM32 应用最多莫过于“打印”程序信息,一般在硬件设计时都会预留一USART 通信接口连接电脑,用于在调试程序是可以把一些调试信息“打印”在电脑端的串口调试助手工具上,从而了解程序运行是否正确、如果出错哪具体哪里出错等等。


STM32中一共有5个USART,如示:

在这里插入图片描述

关键字:STM32  基础  串口通信 引用地址:STM32基础之串口通信

上一篇:STM32基础之IIC
下一篇:STM32进不了外部中断的一个可能原因

推荐阅读最新更新时间:2024-11-10 11:48

基于STM32单片机对HCSR04超声波的控制
注意:定义GPIOB2为超声输出;GPIOB10为输入,定时器用tim2 #include “HCSR04.h” #include “delay.h” #include “sys.h” int overcount; float length=0; void HCSR04_init() { GPIO_InitTypeDef GPIO_InitStructure; TIM_TImeBaseInitTypeDef TIM_TImeBaseInitStructer; NVIC_InitTypeDef NVIC_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB , EN
[单片机]
基于<font color='red'>STM32</font>单片机对HCSR04超声波的控制
STM32学习笔记之USART
USART功能概述 接口通过三个引脚与其他设备连接在一起(见图248)。任何USART双向通信至少需要两个脚:接收数据输入(RX)和发送数据输出(TX)。 RX:接收数据串行输。通过过采样技术来区别数据和噪音,从而恢复数据。 TX:发送数据输出。当发送器被禁止时,输出引脚恢复到它的I/O端口配置。当发送器被激活,并且不发送数据时,TX引脚处于高电平。在单线和智能卡模式里,此I/O口被同时用于数据的发送和接收。 ● 总线在发送或接收前应处于空闲状态 ● 一个起始位 ● 一个数据字(8或9位),最低有效位在前 ● 0.5,1.5,2个的停止位,由此表明数据帧的结束 ● 使用分数波特率发生器 12位整数和4位小数的表示方法
[单片机]
USB之STM32基础
本篇笔记主要介绍 STM32 相关的知识点,毕竟之后的 CDC 教程是用 STM32 开发的。 为了写这一篇,鱼鹰把 STM32 中文参考手册 USB 相关的从头到尾看了一遍,虽然以前就已经看过了,但这次看,收获又是不同。 不过限于篇幅,鱼鹰不会面面俱到,只介绍和 CDC 相关的一些东西。 要完成 USB 模拟串口(CDC)的实验,STM32 手册是必须细细阅读的,不然代码里面很多操作你是无法看懂的。 其实理解了前面的一些东西,你会发现 STM32 中的 USB 知识和前面的大同小异,毕竟开发芯片的厂家也是按照 USB 标准来实现的,不会差到哪里去。 硬件基础 首先,STM32F103 使用 PA11(USBDM,D-)和 PA1
[单片机]
stm32 IAR printf函数重定义
在IAR编译环境下,stm32想使用printf函数打印串口数据。 在uVision中,两个编译器的重定义方式是不一样的,需要注意。 在IAR编译环境中, 步骤1-5已验证,步骤6参考的别人的并未验证,具体步骤如下如下: 使用串口1: 1、串口初始化,GPIO、时钟配置(此处不赘述); 2、在option中添加全局的宏,_DLIB_FILE_DESCRIPTOR 3、#include “stdio.h” 4、重定义int fputc(int ch, FILE *f)函数: int fputc(int ch, FILE *f) { while(USART_GetFlagStatus(USART1,USART_FLAG_TC)=
[单片机]
Stm32 debug停留在"BKPT 0xAB"或者"SWI 0xAB"的解决办法
一、、背景:   曾经在工作中接触过STM32一段时间,但没有深入的去学习,只是用前辈搭建好的模型来实现一些功能罢了,俗话说的好,大树底下好乘凉,开发确实轻松了,可是不深究点,又觉着心里不踏实,然而也一直没花时间去深究。刚好,最近需要重新使用STM32,完全自己开发,没想到今天一上来就让我碰上个不小的问题,废话不多说,进入正题。 二、正文:   在使用串口的时候,代码可以正常编译,没有报任何错误,烧录进MCU内,就是看不到程序正常运行的现象,而把串口部分注释掉就没问题。进入调试模式,发现代码停在 BKPT  0xAB 这里,并不是死循环,按下全速运行键“F5”,代码会立马在该段被终止,不会继续往下跑,这里说明了main函数都没
[单片机]
<font color='red'>Stm32</font> debug停留在
Proteus仿真STM32实现--DS18B20和LCD1602显示
proteus仿真stm32103r6,实现18B20温度值在1602上显示,可测量正负温度。程序及仿真工程已上传附件,利用proteus仿真18b20温度为0和-0.1时返回值均为零,新手上路,请多指教。使用proteus8.8版本进行仿真。 原理图 时序 原理图 单片机部分程序如下: #include stm32f10x.h #include bsp-lcd1602.h #include delay.h #include sys.h #include ds18b20.h #include stdio.h #include math.h short tem,tem1; u8 a,b,c,t
[单片机]
Proteus仿真<font color='red'>STM32</font>实现--DS18B20和LCD1602显示
关于stm32芯片解锁方法
在调试stm32芯片的时候经常会出现下载不进去,出现类似下面的错误,这个时候就要怀疑是不是芯片被异常锁死了; 我亲测有效的解决方法主要有以下两种: 1.JLINK烧录器解锁:这是最简单的方法 SEGGER 的JLink ARM V4.08l包中的,Processor Specific Utilities- J-Link STM32 Unlock 工具就可以解锁; 2.ISP升级解锁: 通过串口,设置BOOT0为1,BOOT1为0,进入ISP升级模式,发送解除读写保护即可解锁。 --------------------- 作者:xld_1992 来源:CSDN 原文:https://blog.csdn
[单片机]
关于<font color='red'>stm32</font>芯片解锁方法
STM32在调试过程中常见问题和解决办法
STM32微控制器系列--常见问题 St意法半导体http://www.y-ec.com (1) 已经发表的有关STM32的技术资料有哪些? (2) STM32的数据手册和技术参考手册有什么分别? (3) STM32有几种封装形式?是否符合RoHS的要求? (4) 有哪些开发工具可以用于STM32的开发? (5) 是否有简易的方法下载程序代码到STM32的内部Flash? (6) 哪里有STM32上各种外设的使用例程和编程资料? STM32微控制器系列--常见问题解答 (1) 已经发表的有关STM32的技术资料有哪些? 已经发表的有关STM32的技术资料有以下一些: STM32F103xx增强型系
[单片机]
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved