(stm32)通信接口-USART

 USART(一般称串口,但是严格来说串口是一种通信接口):发送TX(Transmit Exchange)、  接收RX(Receive Exchange)  

I2C:时钟SCL(Serial Clock) 、 数据SDA(Serial Data)

SPI:时钟SCL(Serial Clock) 、 主机输出数据脚MOSI(Master Output Slave Input)、主机输入数据脚MISO(Master Input Slave Output) 、片选CS(Chip Select)用于指定通讯对象

CAN:CAN_H、CAN_L    两个代表差分数据脚,用两个引脚表示一个差分数据

USB:DP / D+(Data Positive)  、 DM / D-  (Data Minus)   也是一对差分数据脚。

全双工:通信双方能够同时进行双向通信。一般有两根数据线,发送、接收是分开的,使用时互不影响,例如:USART 、 SPI

半双工:一般只有一个数据线,例如I2C、CAN、USB,差分数据线是正负线组成一根数据线。

单工:只能从一个设备到另一个设备,不能反着来。

同步:接收方可以在时钟线的指引下直接采样信号。

异步:发送和接收方同时约定一个采样频率进行通信,并且还有帧头帧尾进行采样位置对齐。

单端信号:电平都是对GND的电压差,表示高低电平。单端信号双方必须共地。

差分信号:可以不共地,抗干扰性较强,传输速度和距离性能较优。

点对点:双方单独直接传输数据。

多设备:中间可以挂载多设备,比点对点多一个寻址的过程。

 简单双向串口是两根通信线,复杂一点的串口通信有时钟引脚、硬件流控制引脚。

TTL、RS232传输距离最远几十米

RS485 传输距离可以非常远,抗干扰能力很强。抗干扰能力强是因为差分信号取的是两线压差,一般差分信号都是用双绞线传输,受到干扰两线同时升高或降低电压,不影响压差。

 波特率是 码元的传输速率   比特率是 bit/s 

在二进制调制下,一个码元等于一个bit,波特率等于比特率,单片机串口通信基本都是二进制的。所以是高电平表示1,低电平表示0,一位就是1bit

多进制调制下波特率和比特率是不相等的。

如果启用校验位:发送方会在发送数据之后补一个校验位,保证8位有效数据加上校验位会出现奇数个或偶数个1。奇校验,例如:0000 1111  校验位会补1,保证有奇数个1,如果是0000 1110  校验位会补0 ,保证有奇数个1。保证偶校验,8位有效数据加上校验位会出现偶数个1。方式同奇校验。但是这种校验方式有缺陷,如果数据传输中受到干扰,有效位里面有两位同时改变,则有效位奇偶性不变,校验不出传输错误。

SMT32有USART外设,发送数据时,外设根据发送数据自动置高低电平。也可以用软件模拟USART通信的波形。用定时器设置波特率来实现就可以。

USART可以分成两部分(发送和接收)

波特率发生器可以理解为一个分频器,分频72MHz时钟来产生脉冲。波特率常用9600 115200

  

同步模式就是两个设备之间连接时钟线,用来同步收发。

硬件流控制:发送和接收设备之间,引脚为nCTS  nRTS两个脚连接,一般TX和nCTS配合,RX和nRTS配合,接收数据设备通过nRTS用来向发送设备的nCTS发送接收设备状态,置1则表示接收设备还未准备好,置0表示接收设备已准备好接收数据。可以防止接收设备因为数据处理慢导致数据丢失的问题。

IrDA是红外通信的通信协议。

LIN是局域网的通信协议。

USART1是APB2总线上的设备。

USART2、3 是APB1总线上的设备。

 发送数据寄存器和接受数据寄存器是两个寄存器共用一个地址,发送数据寄存器只写,接受数据寄存器只读。都在数据寄存器DR内。

写入数据给发送数据寄存器后,会自动检查发送移位寄存器的状态,如果发送移位寄存器空闲状态,发送数据寄存器会立即传入数据给发送移位寄存器,如果非空闲状态则会等待空闲后立即传入。发送移位寄存器低位在前通信。

TDR和移位寄存器双重缓存保证数据帧发送之间无间隔,TDR寄存器内的数据一旦转入到移位寄存器,标志位TXE(TX Empty)会立马置位1,立马后面的数据会传入到TDR。无论移位寄存器是否完成移位。当接收移位寄存器接收完成后会立即将数据传入RDR,同时置标志位RXNE(RX NOT Empty),读取这个标志位为1时,就可以读走RDR里面的数值了。

发送移位寄存器是向右移位,低位先行。接收移位寄存器也是向右移位,把先接收到的低位数据向右移。

串口传输规定低位先行,所以接收移位寄存器会把第一位放在最高位,然后第二位数据过来的时候第一位往右移,知道数据帧完成8位。

SCLK时钟信号只配合发送端使用,只可以输出不可以输入, 两个USART之间不可以实现同步的串口通信。这个时钟信号的用途是兼容别的协议,

USART1是挂载在APB2总线上的设备。APB1总线上的外设(除定时器以外)时钟频率最大36MHz。

USART2、3 是挂载在APB1总线上的设备。APB2总线上的外设时钟频率最大72MHz。

USARTDIV预分频系数由右侧的的数值来决定,数值内分为左侧的整数部分和右侧的小数部分。因为有一些波特率用整数除不尽,所以预分频系数支持小数点后四位,预分频更加精确。

TE、RE是控制发送和接收的波特率使能控制位。

 输入采样信号会以波特率的16倍频率进行采样,一位数据有16个采样时钟。

起始位检测:从检测到低电平信号开始,第3、5、7次采样信号如果全为0则通过起始位检测,如果里面存在一个1,则通过起始位检测并置NE标志位1,如果有两个及以上高电平信号,则忽略第一次采样的低电平信号,认定起始位检测第一次低电平信号是噪声。

通过起始位检测之后,第8、9、10次连续采样内如果有两个低电平信号以上,则后续每一位采样都采8、9、10位作为每一位的采样频率。如果连续三次采样都是0或者都是1则那一位就是0或者1,如果不全为0或者1,则按照2:1的比例,占比多的则为此位的电平信号,并置NE标志位1有噪声干扰。

补充:

状态寄存器 SR(Status Register)存放各种标志位

数据寄存器 DR(Data Register)存放最关键的数据

控制寄存器 CR(Config Register)存放各种配置参数

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值