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