stm32(七)串口总结

目前常用通信接口: USB,RJ45,WIFI,BlueTooth,耳机,VGA,HDMI,
UART串口,并口打印口
应用场合: PLC设备组网(RS485),监控设备控制接口,
仪器仪表数据接口,
GSM/GPRS模块,
GPS全球定位模块,
wifi模块,蓝牙模块,
串口通信的作用
1)芯片和芯片之间通信
2)芯片和传感器之间通信
    很多传感器都是串口通信,例如:GSM模块,WIFi模块、蓝牙模块
    学习AT指令
3)芯片和电脑之间通信
    通过CH340
    USB<-->串口
STM32F40x串口通讯属于通用异步收发器,属于异步通讯,双向通讯方式,实现全双工传输和接收。
二、 讲解
1.通用串口介绍
1)通讯的概念
我们把计算机与外界的信息交换称之为通讯。
2)通讯方式的分类
基本的通讯方式有两种:并行通讯和串行通讯。
并行通讯:所传送数据的各个位都是同时发送或者接收。
特点:在并行通讯中,一个并行数据占多少位二进制数,就要多少根数据线,这个通讯方式的特点是:
通讯速度快,但是通讯成本比较高,适合短距离传输。
串行通讯:所传送数据的各个位按顺序一位一位的发送或者接收。
特点:由于每次只能传输1位数据,所以串行通讯只需要1~2根数据线。这个通讯方式的特点是:通讯
速度比较慢,但是通讯成本较低,适合长距离传输。

RS232:
(1)接口的信号电平值较高(+/-12V),易损坏接口电路的芯片。 
(2) 传输速率较低,在异步传输时,波特率为20Kbps。
(3) 接口使用一根信号线和一根信号返回线而构成共地的传输形式,
      这种共地传输容易产生共模干扰,所以抗噪声干扰性弱。
(4) 传输距离有限,最大传输距离标准值为50英尺,实际上也只能用在50米左右。
 
RS485:
(1)接口电平低,不易损坏芯片。RS485的电气特性:逻辑“1”以两线间的电压差为+(2~6)V表示;逻辑“0”以两线间的电压差为-(2~6)V表示。接口信号电平比RS232降低了,不易损坏接口电路的芯片。
(2) 传输速率高。10米时,RS485的数据最高传输速率可达35Mbps,在1200m时,      传输速度可达100Kbps。
(3) 抗干扰能力强。RS485接口是采用平衡驱动器和差分接收器的组合,抗共模干     扰能力增强,即抗噪声干扰性好。
(4)传输距离远,支持节点多。RS485总线最长可以传输1200m以上(速率    ≤100Kbps)一般最大支持32个节点,如果使用特制的485芯片,可以达到128个或者256个节点,最大的可以支持到400个节点。


发送数据寄存器到发送移位寄存器是并行传输  
UART串口硬件信号线构成:
PC上标准UART有9线,实际常用精简为3线,如下:
RXD - 串行数据接收
TXD - 串行数据发送
GND - 信号地
波特率: 数据线每秒传送二进制位的个数, 常用 9600bps, 115200bps;
停止位: 1,1.5, 2
数据位: 8,7,6,5
校验位: 有,无

一帧数据 = 1位起始位+x位数据位+1校验位+1位停止位。如上图所示,x等于8。
假如STM32F407ZGT6需要发送一个字节的数据0x5A给电脑,发送时,不能只发送有效数据0x5A,在发送的时候,需要发送起始位、校验位、停止位。
起始位:标志着数据传输的开始,用1位低电平来表示。
停止位:标志着数据传输的结束,用n位高电平来表示,n由用户来设置。
校验位:为了保证数据传输的准确而加入校验位,校验分“奇校验”和“偶校验”。①奇校验:让原有数据序列(包括校验位)中的‘1’的个数为奇数个,举例:1000110(0)。②偶校验:让原有数据序列(包括校验位)中的‘1’的个数为偶数个,举例:1000110(1)。
数据位:数据位的位数根据不同的芯片会不一样。
二:寄存器
  状态寄存器(USART_SR):指示了UART控制器的运行状态
  数据寄存器(USART_DR):它包括发送数据寄存器和接受数据寄存器,
               一个只读一个只写,共用一个地址
  波特率寄存器(USART_BRR) 16位-0 8位-1 
  控制寄存器(USART_CR1)
  控制寄存器(USART_CR2)

三:
1.串口初始化
     1)端口时钟使能
     2)将相应的IO口设置为复用功能--uart功能
     3)模块时钟使能
     4)设置波特率,数据长度,停止位
     5)开接受,开发送,使能模块
2.接受/发送数据
      接受:接手前要先查询是否收到数据(接受缓冲区非空),
            如果接受到了数据,则读取DR寄存器的值
      发送:发送前要先查询发送缓存区是否为空,如果为空,则给DR寄存器赋值。
        

你可能感兴趣的:(stm32)