stm32标准库学习笔记-串口通信

通信的种类

处理器与外部设备之间的通信方式有两种:    串行通信             并行通信       

串行通信

传输原理:数据按位依次顺序传输(每一位都占据固定的时间长度)

优点:节约引脚资源(最少一根线)、传输成本低、传输距离远

缺点:传输速度慢

应用领域:一般用于工控设备、测量设备、少部分通信设备  USB  COM口

并行通信

传输原理:数据各个位同时进行传输(以字节或字节的倍数进行传输)

优点:传输速度快

缺点:占用引脚资源、传输成本高、传输距离近、抗干扰能力弱(串扰)

应用领域:一般大量数据传输,并且传输距离较近  如计算机总线

串行通信的分类

按照数据的传送方向

单工         :数据只允许在一个方向上传输    如收音机、无线电台

半双工     :数据允许在两个方向上传输,但是同一时刻只允许在一个方向上传输  如对讲机

全双工     :数据允许同时在两个方向上传输,可以理解为两个单工通信的结合  如移动电话

按照数据的同步方式

同步通信:带时钟同步信号,如IIC接口或者SPI接口都属于同步通信,要求通信双方必须使用同一个时钟,相当于发送数据的同时接收数据,同步通信属于连续串行传输数据,一次只传输一帧数据,相比于异步通信而言,传输效率更高,缺点是时钟必须一致。

异步通信:不带时钟同步信号,如UART接口属于异步通信,要求通信双方具有发送端和接收端,由于不要求时钟同步,所以在通信的时候,通信双方必须提前约定好通信格式(字符格式)以及通信速率,异步通信以字符为单位进行传输,在传输一个字符的时候会添加起始位和停止位,通过起始位以及停止位来达到同步的功能。

 

串行接口的意义

串口是把数据按位顺序传输,但是计算机在通信的时候采用的并行通信的方式,在硬件设备与计算机进行通信的时候涉及到串转并、并转串,实现方式有两种:软件实现+硬件实现,如果采用软件实现会增加CPU的负担,一般都是采用硬件实现(增加串口)。

一般串口分为9针串口(DB-9)以及25针串口(DB-25),现在一般都是采用DB-9串口通信,分别分为公头和母头。

可以看到,一般9针串口在通信的时候,只会用到3个引脚(TXDRXDGND),其他的引脚一般用于握手。

硬件设备和计算机在通信的时候,需要用到电气转换芯片(如MAX232),因为硬件平台一般采用TTL电平信号(采用正逻辑电平,+5V等价于逻辑1,0V等价于逻辑0),但是计算机采用RS232电平信号(采用负逻辑电平,-15V~-3V 表示逻辑1,+3V~+15V 表示逻辑0)。

开发平台和计算机的接口说明

一般现在的计算机(笔记本电脑)和硬件设备(STM32)都不集成DB-9或者DB-25接口,提供了另外的一种方案来实现数据交互,就是利用USB口和板子的串口(4针的拓展串口)进行通信(利用USB转串口),就必须在STM32开发板集成USB转串口芯片(CH340)。

串口通信的参数

USART或者UART都是全双工异步通信,由于不需要时钟同步,所以就必须要求通信双方要约定字符格式和通信速率。

字符格式

字符格式一般都是采用字符帧的形式进行传输,字符帧由起始位、数据位、校验位、停止位组成。具体的说明可以参考STM32中文参考手册的26.3.1章节。

起始位

指的是一帧数据的开始   规定为1bit的低电平

 

数据位

指的是有效的信息,可以为7bit(标准ASCII码)或者8bit(拓展ASCII码)

 

校验位

指的是对于数据位的简单校验,可以确保数据正常发送,也可以避免噪声的影响,校验分为奇校验、偶校验,校验位也只占1bit。一般不使用校验位。

 

停止位

指的是一帧数据传输完成   停止位一般选择1bit,规定为高电平

通信速率

通信速率指的是单位时间内传输的有效的二进制数的个数,也被称为波特率,单位为bps。常用的波特率有9600bps115200bps。 可以根据实际需求进行修改。

举例:一般采用的波特率是9600bps,字符格式选择8bit数据位、无校验、1bit停止位,然后再加上1bit的起始位,所以一帧字符占10bit,所以单位时间可以传输960帧。

串口通信的流程

对于STM32F407芯片而言,一共提供了6个串口,包括4个USART和2个UART,USART指的是通用同步异步收发器,而UART指的是通用异步收发器,相比于USART而言,UART裁剪掉同步功能,一般平时在使用串口的时候都是使用异步通信。

通过USART初始化结构体设置串口通信的字符格式以及通信速率 

  1. USART_BaudRate             指的是波特率           常用9600bps  115200bps
  2. USART_WordLength         指的是数据位            常用8bit   低位先出

     3. USART_StopBits                指的是停止位         常用1bit

     4.USART_Parity           指的是校验位         常用无校验

     5.USART_Mode           指的是串口模式 常用收发模式  USART_Mode_Rx | USART_Mode_Tx

     6.USART_HardwareFlowControl         指的是硬件流控制   常用无

编写中断服务函数

一般需要提前设置好串口中断的触发条件,一般触发条件都会设置为接收到数据就发生中断。

ST公司提供了一个函数可以设置串口中断源,调用USART_ITConfig()函数

一般在中断服务函数中需要检测中断是否发生(检测中断状态)以及清除中断状态即可。

发送数据

接收数据

需要在中断服务函数中调用该函数来接收数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值