前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >usart和uart的通信原理「建议收藏」

usart和uart的通信原理「建议收藏」

作者头像
全栈程序员站长
发布2022-08-26 16:25:28
8550
发布2022-08-26 16:25:28
举报

大家好,又见面了,我是你们的朋友全栈君。

usart和uart的通信原理

一、通信接口介绍 1、处理器与外部设备通信的两种方式: 并行通信:数据各个位同时传输。(速度快,占用引脚资源多) 串行通信:数据按位顺序传输(一位一位传输)。(占用引脚资源少,速度相对较慢) 2、串行通信三种传送方式 单工:数据传输只支持数据在一个方向上传输 半双工:允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信; 全双工:允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。 3、串行通信的通信方式 同步通信:带时钟同步信号传输。(-SPI,IIC通信接口) 异步通信:不带时钟同步信号。(-UART(通用异步收发器),单总线)

通信接口

引脚接口

通信方式

传送方式

uart(usart)

TXD:发送端RXT:接收端GND:共地

异步通信

全双工

usart

TXD:发送端RXT:接收端GND:共地

同步通信和异步通信

双全工

1-wire(单总线)

DQ:发送/接收端

异步通信

半双工

SPI

SCK:同步时钟MISO:主机输入,从机输出MOSI:主机输出,从机输入

同步通信

全双工

I2C

SCK:同步时钟SDA:数据输入/输出端

同步通信

半双工

二、串口的概念: 1、串口是我们的大多数微控制单元(MCU)都具有的基本的外部接口,一般串口最基本的功能就是调试,又能做数据通信的接口(数据量要小一些)。 数据从A到B只能通过1根线,有 uart:通用异步收发器 usart:通用同步异步收发器 2、uart和usart的异同 USART在异步通信的时候,它与UART没有什么区别,但是用在同步通信的时候,区别就很明显了:同步通信需要时钟来触发数据传输,也就是说USART相对UART的区别之一就是能提供主动时钟。如stm32的USART可以提供时钟支持ISO7816的智能卡接口。一般而言,单片机中,名称为UART的接口一般只能用于异步串行通讯,而名称为USART的接口既可以用于同步串行通讯,也能用于异步串行通讯。USART1的时钟:PCLK2(高速);USART2、USART3、UART4的时钟:PCLK1(低速)。

三、串口电平标准及引脚连接方法: 1、电平标准 TTL是常见的模块的通讯电平标准:串口wifi、串口蓝牙(4针接口:VCC、GND、TXD、RXD) 232一般是数据通讯接口:台式电脑的主机背后的九针接口 2、连接方法 RXD:数据输入引脚。数据接受。 TXD:数据发送引脚。数据发送。

四、STM32串口通信过程 数据接收和发送过程:

图片来自网络,下同
图片来自网络,下同

usart(uart)工作原理图

在这里插入图片描述
在这里插入图片描述

五、STM32串口异步通信需要定义的参数 起始位 数据位(8位或者9位) 9位是带奇偶校验位 奇偶校验位(第9位) : 奇检验就是保证8位数据位中1的个数为奇数个,如果1是基数个则检验位就为0,反之为1; 偶检验就是保证8位数据位中1的个数为偶数个,如果1是偶数个则检验位就为0,反之为1; 停止位(1,15,2位) 波特率设置

在这里插入图片描述
在这里插入图片描述

六、UART配置过程 1、串口时钟和GPIO时钟使能 串口时钟使能: RCC_APBxPeriphClockCmd(); GPIO时钟使能:RCC_AHB1PeriphClockCmd(); 2、设置引脚复用器映射: GPIO_PinAFConfig(); 3、串口参数初始化(GPIO配置)(五大参数) GPIO_Init();//初始化 4、串口参数初始化(六大参数) USART_Init(); //初始化串口 5.使能串口 USART_Cmd(); 6.开启中断(如果需要开启中断才需要这个步骤) 设置中断进入的条件:接收数据缓冲区有数据的时候就会进入中断 USART_ITConfig(USART1, USART_IT_RXNE,ENABLE); 7.配置NVIC中断,中断优先级(四大参数) NVIC_Init(&NVIC_InitStructure); 8、编写中断处理函数:USARTx_IRQHandler();

串口数据收发: void USART_SendData();//发送数据到串口,DR uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据 串口传输状态获取: FlagStatusUSART_GetFlagStatus(); void USART_ClearITPendingBit();

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/144500.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • usart和uart的通信原理
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档