串口通信USART(标准库)_usart串口

常使用MA3232芯片对TTL及RS-232电平的信号进行互相转换。

  • DB9接口

DB9接口就是常说的串口。

在目前的工业控制中使用的串口一般只使用RXD、TXD以及GND三条信号线,直接传输数据信号。

(2)协议层

串口通讯的协议层中规定了数据包的内容,它由起始位、主体数据、校验位以及停止位组成。

通讯双方的数据包格式要约定一致才能正常收发数据。

  • 波特率

串口异步通讯中由于没有时钟信号,所以两个设备直接需要约定好波特率。常见的波特率为4800/9600/115200等。

  • 通讯的起始和停止信号

数据包的起始信号由一个逻辑0的数据位表示,数据包的停止信号可由0.5/1/1.5/2个逻辑1的数据表示。

  • 有效数据

有效数据的长度常被约定为5/6/7或8位长。

  • 数据校验

有效数据之后,有一个可选的数据校验位。校验方法有奇校验(odd)。偶校验(even)、0校验(space)、1校验(Mark)以及无校验(noparity)。

3、STM32的USART

STM32芯片具有多个USART外设用于串口通信。

USART,即通用同步异步收发器。可以灵活地与外部设备进行全双工数据交换。

有别于USART,STM32还具有UART外设,UART在USART的基础上裁剪了同步通信功能,只有异步通讯。

我们平时用的串口通信基本都是UART。

USART满足外部设备对工业标准NRZ异步穿行数据格式的要求,并且使用了小数波特率发生器,可以提供多种波特率。

USART支持同步单向通信和半双工单线通信,还支持局与互联网LIN,智能卡(SmartCard)协议和IrDA(红外线数据协会)SIR ENDEC规范。

USART支持使用DMA,可实现高速数据通信。

STM32的USART输出的是TTL电平信号,若需要RS-232标准的信号可使用MAX3232芯片进行转换。

(1)功能引脚

TX:发送数据输出引脚

RX:接收数据输入引脚

SW_RX:数据接收引脚,只用于单线和智能卡模式,属于内部引脚,没有具体外部引脚。

nRTS:请求已发送,n表示低电平有效。

nCTS:清除以发送,n表示低电平有效。

SCLK:发送器时钟输出引脚。这个引脚仅适用于同步模式。

(2)数据寄存器

USART_DR数据寄存器,低9位有效,且第9位数据是否有效取决于控制寄存器1USART_CR1的M位设置,当M位为0表示8位数据字长,当M位为1时表示9位数据字长。一般使用8位数据字长。

USART_DR包含了已发送的数据或者接受的数据。USART_DR实际包含有两个寄存器,一个是专门用于发送的可写TDR,一个专门用于接受的可读RDR。

(3)控制器

USART有专门控制发送的发送器、控制接受的接收器,还有唤醒单元,中断控制等。

发送器

USART_CR1寄存器 UE位置1使能USART.

M位置0,8位数据字长,M位置1,9位数据字长。

TE位置1启动数据发送,发送移位寄存器的数据在TX引脚输出,同步模式时SCLK也输出时钟信号。

TCIE位置1,将产生中断。

USART_CR2寄存器 STOP盘[1:0]控制停止位的长短。默认1停止位,2个停止位适用于正常USART模式、单线模式和调制解调器模式。0.5个和1.5个停止位用于智能卡模式。

USART_SR USART状态寄存器。 在USART_DR寄存器写入最后一位数据之后,USART_SR的TC位置1,表示数据传输完成。

几个重要的标志位:

TE 发送使能

TXE 发送寄存器为空,发送单个字节的时候使用

TC 发送完成,发送多个字节数据的时候使用

TXIE 发送完成中断使能

接收器

USART_CR1的RE位置1,使能USART接受。

RX线开始搜索起始位。确定起始位后根据RX线电平状态把数据存放在接受移位寄存器内。

接受完后将接受移位寄存器的数据移到RDR内,并将USART_SR寄存器的RXNE位置1,如果USART_CR2寄存器的RXNEIE置1的话可以产生中断。

(4)小数波特率生成
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值