串口通信UART

计算机通信

计算机通信是指将计算机计数和通信技术相结合,完成计算机与外部设备或计算机与计算机之间的信息交换。按照数据传输的方式,计算机通信可以分为并行通信和串行通信两大类。

1:并行通信

并行通信是一种数据传输方式,通过多条物理线路同时传输多个比特的数据。与串行通信相比,并行通信在单位时间内能传输更多数据,但受限于物理线路的同步和干扰问题。

并行通信的特点

  • 高速传输:多根数据线同时工作,理论带宽较高。
  • 短距离适用 :信号同步要求高,长距离传输易受干扰。
  • 硬件复杂:需要更多引脚和线路,成本较高。

2:串行通信

串行通信是一种数据传输方式,数据通过单根信号线逐位传输。与并行通信相比,串行通信虽然传输速率较低,但具有成本低、抗干扰能力强、适合长距离传输等优势。常见的串行通信协议包括UART、SPI、I2C等。

串行通信的主要参数

  • 波特率(Baud Rate):每秒传输的符号数,决定通信速度。常见值有9600、115200等。
  • 数据位(Data Bits):每次传输的数据位数,通常为5~9位,常用8位。
  • 停止位(Stop Bits):标识数据帧结束的位数,通常为1或2位。
  • 校验位(Parity Bit):用于错误检测,可选无校验(None)、奇校验(Odd)或偶校验(Even)。

常见串行通信协议

UART(通用异步收发传输)
  • 异步通信,无需时钟信号,依赖预定义的波特率。
  • 典型应用:单片机与PC之间的通信,通过USB转串口模块实现。
  • 数据帧格式:起始位(1位低电平) + 数据位(5~9位) + 校验位(可选) + 停止位(1~2位高电平)。
SPI(串行外设接口)
  • 同步通信,需时钟信号(SCK)控制数据传输。
  • 全双工通信,支持多设备(通过片选信号SS选择)。
  • 四线制:SCK(时钟)、MOSI(主发从收)、MISO(主收从发)、SS(片选)。
I2C(两线式串行总线)
  • 同步通信,仅需两根线:SCL(时钟)和SDA(数据)。
  • 支持多主多从,通过地址寻址设备。
  • 数据帧包含起始条件、地址帧、数据帧和停止条件。

串行通信基本概念

1:异步通信与同步通信

在如今计算机通信,通常使用串行通信,但是由于传输数据快慢以及时效性;我们将串行通信分为:异步串行与同步串行。

(1):同步串行

同步串行是一种数据传输方式,数据以连续的比特流形式传输,发送方和接收方通过共享的时钟信号(或编码时钟)保持同步。传输过程中每个比特的发送和接收时间严格对齐,通常以固定时间间隔进行。

关键特点
  • 时钟同步:发送端和接收端使用同一时钟信号(或从数据中恢复时钟),确保采样时间一致。
  • 帧结构:数据通常以帧为单位传输,包含起始位、数据位、校验位和停止位等控制信息。
  • 效率较高:相比异步串行,同步串行省去了起始/停止位开销,适合高速和大数据量传输。

(2):异步串行

异步串行通信是一种数据传输方式,数据按位顺序发送,无需同步时钟信号。发送端和接收端通过预定义的波特率(Baud Rate)和帧格式(如起始位、数据位、校验位、停止位)实现数据同步。

关键特点
  • 无同步时钟:依赖起始位和停止位标记数据帧边界,双方需约定相同的波特率。
  • 帧结构灵活:常见帧格式包括1个起始位(低电平)、5-9个数据位、可选的校验位(奇偶校验)、1-2个停止位(高电平)。
  • 简单低成本:仅需两根信号线(如UART的TX和RX),适合短距离通信。

2:异步串行通信的特点

1:字符格式

2:波特率

3:异步串行通信的数据接收过程

4:串行通信的传输方向

(1):单工

数据仅能沿一个方向,不能实现反向传输,只有一条通信线路。

(2):半双工

数据传输可以沿两个方向,但是需要分时进行,只有一条通信线路。

(3):全双工

数据可以同时进行接收和发送,一般有两条通信线路。

轮询方式的串口通信

轮询方式的接口函数

1:串口初始化函数

2:串口轮询方式发送函数

3:串口轮询方式接收函数

中断方式的串口通信

1:串口中断发送函数:在中断方式下发送指定的数据。

2:串口中断接收函数:在中断方式下接收指定的数据。

今日任务:

在stm32CubeMX软件完成串口通信的初始化设置;

串口通信发送不同的内容(两种发送方式:固定内容,可以发生变化的内容)。串口接收实验,接收上位机发送的固定长度的数据。

|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| 实验内容与步骤: 1 :首先找到串口通信设置,需要将波特率和串口助手的保持一致,时钟选择内部时钟; 2 :利用 HAL_UART_TRANSMILT 函数将想要发送的内容写入一个地址;如果想要显示变化的数字引入变量 NUM; 通过 strlen 来实现;这里需要引入头文件" string h "; 3:如果想要完成串口接收,需要使用串口助手,和VSPD;下载VSPD将cracked中的文件复制到VSPD地址中;添加串口端; 4 :串口接收完成回调函数 HAL_UART_RxCpltCallback(UART_HandleTypeDef*huart) ,这里大概功能就是将接收到的内容在第八行显示;但是只能显示 4 位; |
| 实验或测试数据记录: 运行结果: 发出内容:Hello,world.,收到4个字符在第8行 |

相关推荐
xixixi777776 小时前
CDN(内容分发网络)——缓存和分发网站、应用程序、视频等内容,以提高用户访问速度和稳定性,减少网络延迟和拥塞,同时减轻源服务器的压力
网络·缓存·架构·系统架构·cdn·业务·内容分发网络
-To be number.wan7 小时前
【补漏版】计算机网络期末大题预测合集
网络·计算机网络
liulilittle7 小时前
OPENPPP2 Code Analysis Two
网络·c++·网络协议·信息与通信·通信
安生生申7 小时前
STM32 ESP8266连接ONENET
c语言·stm32·单片机·嵌入式硬件·esp8266
广药门徒7 小时前
电子器件烧毁的底层逻辑与避坑指南
单片机·嵌入式硬件
爱怪笑的小杰杰7 小时前
紧急补救:TCP心跳检测失效问题复盘与彻底解决
网络
学烹饪的小胡桃8 小时前
WGCAT工单系统 v1.2.7 更新说明
linux·运维·服务器·网络·工单系统
云飞云共享云桌面8 小时前
非标自动化工厂的设计云桌面为什么要选云飞云智能共享云桌面?
大数据·运维·服务器·网络·自动化·负载均衡
lowhot9 小时前
各种网络协议比较
网络·网络协议
运维有小邓@9 小时前
如何实现基于角色的访问控制?
运维·网络