串口通信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行 |

相关推荐
CQ_YM10 小时前
ARM时钟与定时器
arm开发·单片机·嵌入式硬件·arm
xiebs_11 小时前
0127TR
单片机·嵌入式硬件
A9better13 小时前
嵌入式开发学习日志50——任务调度与状态
stm32·嵌入式硬件·学习
步步为营DotNet14 小时前
深度剖析.NET中IHostedService:后台服务管理的关键组件
服务器·网络·.net
Ares-Wang14 小时前
网络》》路由引入 、路由控制 》》路由策略 route-policy 、Filter-Policy(过滤策略)
网络·智能路由器
Jia ming15 小时前
虚拟地址与物理地址:64位VS48位
网络
DLGXY15 小时前
STM32——EXTI外部中断(六)
stm32·单片机·嵌入式硬件
CQ_YM15 小时前
ARM之I2C与ADC
arm开发·嵌入式硬件·嵌入式·arm
的卢马飞快16 小时前
【C语言进阶】给数据一个“家”:从零开始掌握文件操作
c语言·网络·数据库
Yu_Lijing16 小时前
《图解HTTP》笔记与读后感(上)
网络·笔记·网络协议·http