历史上的今天
今天是:2025年01月15日(星期三)
2019年01月15日 | STM32的串口(UART)及串口通信原理
2019-01-15 来源:eefocus
一、通信接口介绍
1、处理器与外部设备通信的两种方式:
并行通信
- 传输原理:数据各个位同时传输。
-优点:速度快
-缺点:占用引脚资源多
串行通信
- 传输原理:数据按位顺序传输(一位一位传输)。
-优点:占用引脚资源少
-缺点:速度相对较慢
2、串行通信三种传送方式:
单工:
数据传输只支持数据在一个方向上传输
半双工:
允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;
全双工:
允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。

3、串行通信的通信方式及举例
同步通信:带时钟同步信号传输。 -SPI,IIC通信接口
异步通信:不带时钟同步信号。 -UART(通用异步收发器),单总线

--------------------------------------------------------------------------------------------------------------------------------------------
二、什么是串口:
串口是我们的大多数微控制单元(MCU)都具有的基本的外部接口,一般串口最基本的功能就是调试,又能做数据通信的接口(数据量要小一些)。
数据从A到B只能通过1根线,数据就像是羊肉块一样被串在线上
UART:通用异步收发器
USART:通用同步异步收发器
----------------------------------------------------------------------------------------------------------------------------------------------
三、串口电平标准及引脚连接方法:
1、电平标准
TTL是常见的模块的通讯电平标准:串口wifi、串口蓝牙(4针接口:VCC、GND、TXD、RXD)
232一般是数据通讯接口:台式电脑的主机背后的九针接口

2、连接方法
RXD:数据输入引脚。数据接受。
TXD:数据发送引脚。数据发送。
-----------------------------------------------------------------------------------------------------------------
四、STM32串口通信过程
数据接收过程:

数据发送过程:

-----------------------------------------------------------------------------------------------------------------------------------
五、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();
------------------------------------------------------------------------------------------
史海拾趣
|
如何去换掉IDC_SMARTDIAL的背景颜色? phonecavas.h里面讲可以通过写注册表去改变, 但做了之后, 却将其他控件的背景颜色换掉了.… 查看全部问答> |
|
大家帮帮我啊,我的Pocket PC2003无法运行是怎么回事啊? 我按照步骤安装了以下的套件:Activesync--eVC4--sp3--pocket PC2003SDK(之前我就是这样安装的,完全OK,还做了PDA的软件)。安装的时候没有任何问题,且都是默认路径和默认组件安装,安装完毕后打开EVC可以新建工程,编译也没问题,但是一用emula ...… 查看全部问答> |
|
【MSP430共享】具有大容量的嵌入式数据采集系统的设计与实现 目前的数据采集系统越来越偏向于低电压、 低功耗, 而海量存储则是它发展的一个强大趋势。本文设计了一种借助于U S B 总线技术、 嵌人式系统设计技术和微处理器技术来实现的一种低功耗、 便携、 大容量存储的数据采集系统。硬件方面, 本设计 ...… 查看全部问答> |
|
在用ALTERA-MODESIM 进行功能仿真时正确,时序仿真出现如下错误: # ** Error: (vsim-SDF-3250) text_v.sdo(39): Failed to find INSTANCE \'\\a[0]~I \'. # ** Error: (vsim-SDF-3250) text_v.sdo(39): Failed to find INSTANCE \'asynch_in ...… 查看全部问答> |
|
高功率密度二次电源模块是目前发展最快的电源产品之一。对于DC/DC低压大电流输出,副边采用同步整流的有源箝位正激变换器虽有一定优点,但却是一个使许多公司遭遇很大损失的美国专利。本文从现有高功率密度二次模块实现的方法出发,提供一些对此类 ...… 查看全部问答> |
|
LPC43xx的主频都跑到204MHz了,我点把火大家来讨论NXP的ARM Cortex的基于固件开发... 本帖最后由 平湖秋月 于 2014-1-22 21:19 编辑 近一年多以来,一直在关心TI的TM4C系列芯片,搞定这部分后, 我也打算花点时间研究一下NXP的ARM Cortex芯片,他们的USB固件库 已直接烧在了ROM中了,有很多特性是STM32和TI ARM Cortex不具备的 ...… 查看全部问答> |




