串口(串行通信接口)

1、 定义

指数据按位依次发送的通信方式。常见串口:RS232、RS485。

2、 分类

按照数据的传送方向

2.1 单工:
数据传输只支持数据在一个方向上传输
2.2 半双工
允许数据在两个方向上传输,但是,在某一时刻,只允许数据在一个方向上传输,它实际上是一种切换方向的单工通信;
2.3 全双工
允许数据同时在两个方向上传输,因此,全双工通信是两个单工通信方式的结合,它要求发送设备和接收设备都有独立的接收和发送能力。
在这里插入图片描述

按照通信是否有时钟信号

2.1 同步通信
带有时钟同步信号,比如:SPI通信、IIC通信;
2.2 异步通信
不带时钟同步信号比如:UART(通用异步收发器),单总线。
在这里插入图片描述

3、RS232和RS485区别:

RS232:
点对点传输、共模抑制能力较差、传送距离最大为约15米,最高数据传输速率为20kb/s。
RS485:
差分信号传输;信号更稳定和远距离传输。

4、 转接的不同形式:

4.1:TTL转DB9
4.2:DB9公转公或母转母
4.3:USB转DB9
4.4:USB转TTL

5、 数据的通信速率

波特率:每秒传输的码元个数,单位:bps
比特率:每秒传输的二进制位数,单位:bit/s

6、 通信接口:

6.1 UART通用异步收发器

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种通信协议和硬件接口,用于在计算机系统和外部设备之间进行异步数据传输。它在全双工模式下工作。广泛应用于嵌入式系统、单片机和通信设备中。它在全双工模式下工作。

工作原理
通过发送和接收数据位来实现实时通信。它使用起始位和停止位来识别每个数据字节的开始与结束,以实现数据的异步传输。

UART主要有三根数据线:
TXD(Transmit Data):发送线,用于发送端发送数据。
RXD(Receive Data):接收线,用于接收来自外部设备的数据。
GND(Ground):公共地。
在这里插入图片描述
数据形式:
在数据传输时使用一定的数据格式。典型的数据格式包括数据位、校验位、起始位与停止位。
在这里插入图片描述
• 空闲位(当总线处于空闲状态时信号线的状态为‘1’即高电平)
• 起始位(开始传输时要先发出一个低电平’0’来表示传输字符的开始)
• 数据位(起始位之后就是要传输的数据,数据一般都是8位。先发送最低位最后发送最高位)
• 奇偶校验位(数据位传送完成后,要进行奇偶校验)
• 停止位(数据结束标志,可以是1位,1.5位,2位的高电平)
• 波特率(通过设置波特率来控制数据传输的速率。波特率表示每秒钟传输的位数。发送端与接收端必须使用相同的波特率设置)

6.2 USART:通用同步异步收发器。

USART(Universal Synchronous /Asynchronous Receiver / Transmitter,异步同步通信接口)提供了一个可编程的串行通信接口,可以用于将数据传输到其他设备,如传感器、显示器、存储设备等。它是一种常见的串行通信协议,广泛应用于嵌入式系统、单片机和通信设备中。可以在全双工或半双工模式下工作,并支持同步或异步通信。

工作原理
USART通过发送和接收数据位来实现同步或异步串行数据传输。它提供了更高的灵活性与数据传输速率。

USART主要有三根数据线:
TX(Transmit):发送线,用于从计算机系统发送数据。
RX(Receive):接收线,用于接收来自外部设备的数据。
CLK(Clock):时钟线,用于同步数据传输。
在这里插入图片描述
通信模式:
同步通信:当USART以同步模式工作时,数据的传输是通过外部时钟进行同步的。发送端与接收端共享系统的CLK。
异步通信:当USART以异步模式工作时,与UART类似。
寄存器
1、SR寄存器:SR状态寄存器,用到了低10位,是用来判断USART状态的一种寄存器。发送寄存器空位、发送完成位、读数据寄存器非空位、检测到主线空闲位、过载错误为等等。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
2、CR寄存器:控制寄存器,主要负责USART使能、检验控制使能、校验选择(奇校验偶校验)、PE中断使能、发送缓冲区空中断使能、发送完成中断使能、接收缓冲区非空使能、发送使能、接受使能、字长等等,它只用到了低14位,其他位保留为空。
在这里插入图片描述
3、DR寄存器:数据寄存器,发送和接收是两个数据寄存器,但实际在单片机内部是一个,这两个寄存器的唯一区别方法就是,执行写操作就是发送数据寄存器(TDR),执行读操作的时候就是接受数据寄存器(RDR)。
在这里插入图片描述
4、BRR寄存器:波特率寄存器,在波特率的配置过程中,只用将计算的DIV结构写入一个寄存器即可。如下图:该寄存器的4-15位就是写入DIV的整数部分,0-3位就是写入DIV的小数部分。
在这里插入图片描述
UART和USART的区别
在这里插入图片描述

7、串口配置一般步骤:

1)串口时钟使能,GPIO时钟使能:RCC_APB2PeriphClockCmd();
2)串口复位:USART_DeInit(); 这一步不是必须的
3)GPIO端口模式设置:GPIO_Init(); 模式设置为推挽复用以及浮空输入或者上拉输入
4)串口参数初始化:USART_Init();
5)开启中断并且初始化NVIC(如果需要开启中断才需要这个) NVIC_Init();USART_ITConfig();
6)使能串口:USART_Cmd();
7)编写中断处理函数:USARTx_IRQHandler();
8)串口数据收发:void USART_SendData();//发送数据到串口,DR uint16_t USART_ReceiveData();//接受数据,从DR读取接受到的数据
9)串口传输状态获取:
FlagStatus USART_GetFlagStatus(USART_TypeDef* USARTx, uint16_t USART_FLAG);
void USART_ClearITPendingBit(USART_TypeDef* USARTx, uint16_t USART_IT);

8、 串口组件

8.1 常用属性

在这里插入图片描述

8.2 常用方法

在这里插入图片描述

8.3 常用事件

1、DataReceived:
当串口接收到数据时触发的事件,可以通过该事件读取串口接收到的数据。
2、ErrorReceived:
当串口发生错误时触发的事件,例如传输错误或硬件错误。
3、PinChanged:
当串口的引脚状态发生变化时触发的事件,例如CTS、DSR、CD或RI状态变化。
4、Disposed:
当组件被删除时触发的事件。
5、PropertyChanged:
当组件的属性值发生变化时触发的事件。
6、Timeout:
当读取或写入串口数据时超时时触发的事件。
7、TxCompleted:
当串口发送完毕时触发的事件。
8、BreakDetected:
当串口检测到中断信号时触发的事件。
9、DataBytesThreshold:
当接收到的字节数达到指定阈值时触发的事件。

  • 16
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值