【单片机通信技术】串口通信的几种方式与比较,详细解释SPI通信

server/2025/3/4 11:28:14/

一、介绍

串口通信是一种通过串行接口逐位传输数据的通信方式,广泛应用于嵌入式系统、工业控制、传感器网络等领域。

二、以下是几种常见的串口通信方式及其对比:

 1.UART(Universal Asynchronous Receiver/Transmitter)

  • 特点

    • 异步通信:无时钟信号,依赖预定义的波特率(Baud Rate)同步数据。

    • 全双工:支持同时发送和接收(需独立的TX和RX线)。

    • 点对点:通常用于两个设备之间的通信。

    • 帧格式:数据帧包含起始位、数据位(5-9位)、校验位(可选)和停止位。

  • 优点

    • 简单易用,硬件成本低。

    • 支持长距离通信(配合RS-232/RS-485等电平转换芯片)。

  • 缺点

    • 依赖精确的波特率匹配,抗干扰能力较弱。

    • 仅支持点对点,无法直接连接多设备。

  • 典型应用单片机与PC通信、GPS模块、蓝牙模块等。

2. I2C(Inter-Integrated Circuit)

  • 特点

    • 同步通信:需时钟信号(SCL)和数据线(SDA)。

    • 半双工:同一时间只能发送或接收。

    • 多主多从:支持多个主设备和从设备共享总线。

    • 地址寻址:每个设备有唯一地址,主设备通过地址选择从设备。

    • 低速传输:标准模式(100kbps)、快速模式(400kbps)、高速模式(3.4Mbps)。

  • 优点

    • 引脚少(仅需两根线),适合多设备场景。

    • 支持总线仲裁和冲突检测。

  • 缺点

    • 速度较慢,协议复杂度较高。

    • 长距离通信需额外电路(如电平转换器)。

  • 典型应用:温度传感器、RTC(实时时钟)、低速率外设。

3. RS-232

  • 特点

    • 物理层标准:定义电平、连接器(如DB9)和电气特性。

    • 异步通信:基于UART协议,需波特率匹配。

    • 单端信号:使用正负电压表示逻辑(-3V~-15V为1,+3V~+15V为0)。

  • 优点

    • 抗干扰能力较强(相比TTL电平)。

    • 支持较长距离(典型15米以内)。

  • 缺点

    • 速度较低(通常<115.2kbps)。

    • 仅支持点对点通信。

  • 典型应用:老式计算机外设(鼠标、调制解调器)、工控设备。

4. RS-485

  • 特点

    • 差分信号:使用两条线(A和B)传输差分电压,抗干扰能力强。

    • 多设备通信:支持总线拓扑,最多32个设备(通过中继器扩展)。

    • 半双工:需方向控制(如RE/DE引脚)。

    • 高速长距离:传输距离可达1200米(低速时),速率最高10Mbps(短距离)。

  • 优点

    • 抗干扰强,适合工业环境。

    • 支持多节点网络。

  • 缺点

    • 需协议层管理(如Modbus),硬件复杂度较高。

  • 典型应用:工业自动化、楼宇控制、多节点传感器网络。

5. USB(Universal Serial Bus)

  • 特点

    • 复杂协议:支持热插拔、即插即用、电源供电。

    • 高速传输:USB 2.0(480Mbps)、USB 3.0(5Gbps)。

    • 主从架构:主机(如PC)控制所有数据传输。

  • 优点

    • 高带宽,支持多种设备类型。

    • 广泛兼容,即插即用。

  • 缺点

    • 协议复杂,需专用控制器。

    • 传输距离短(一般<5米)。

  • 典型应用:外设连接(键盘、存储设备)、高速数据采集。

6. SPI(Serial Peripheral Interface)

1. 基本特性:
  • 同步通信:依赖时钟信号(SCLK)控制数据传输时序,主设备生成时钟。

  • 全双工:数据可同时发送(MOSI)和接收(MISO)。

  • 主从架构:一个主设备控制多个从设备,通过片选信号(SS/CS)选择从机。

  • 高速传输:理论速率可达几十Mbps(如STM32的SPI支持50Mbps以上)。

  • 灵活性:数据位宽可配置(通常8位或16位),时钟极性和相位可调。

2. 信号线
  • SCLK(Serial Clock):主设备输出的时钟信号,控制数据传输节奏。

  • MOSI(Master Out Slave In):主设备发送数据到从设备的线路。

  • MISO(Master In Slave Out):从设备发送数据到主设备的线路。

  • SS/CS(Slave Select/Chip Select):主设备通过拉低对应从机的片选信号激活通信。

3. 通信过程
  • 主设备初始化:配置时钟极性(CPOL)和相位(CPHA),确定数据采样边沿。

  • 选择从设备:拉低目标从机的SS/CS引脚。

  • 数据传输

    • 主设备通过MOSI发送数据,同时通过MISO接收从机数据。

    • 每个时钟周期传输一个数据位(上升沿或下降沿采样,由CPOL和CPHA决定)。

  • 结束通信:拉高SS/CS引脚,释放从机。

4. 时钟模式(CPOL和CPHA)
  • CPOL(Clock Polarity)

    • CPOL=0:时钟空闲时为低电平。

    • CPOL=1:时钟空闲时为高电平。

  • CPHA(Clock Phase)

    • CPHA=0:数据在时钟的第一个边沿(上升或下降)采样。

    • CPHA=1:数据在时钟的第二个边沿采样。

5. 多从机连接方式

独立片选(SS/CS):每个从机有独立的片选信号,主设备通过多个SS引脚控制。

  • 优点:简单直接,各从机独立工作。

  • 缺点:占用主设备较多引脚。

菊花链(Daisy Chain):多个从机共用同一片选信号,数据依次传递。

  • 优点:节省主设备引脚。

  • 缺点:所有从机需支持菊花链模式,协议复杂度高。

6. 优缺点总结
  • 优点

    • 高速传输,适合实时性要求高的场景。

    • 全双工通信,数据传输效率高。

    • 硬件简单,无复杂协议(如地址寻址)。

  • 缺点

    • 引脚占用多(每个从机需单独SS线)。

    • 无硬件错误检测机制(依赖软件校验)。

    • 通信距离短(通常<1米)。

7. 典型应用
  • 存储器:Flash、EEPROM(如W25Q128)。

  • 传感器:加速度计、陀螺仪(如MPU6050)。

  • 显示屏:OLED、TFT屏幕(通过SPI传输图像数据)。

  • ADC/DAC:高速模数/数模转换芯片。

三、SPI多从机通信的连线方法

若主机需连接多个从机,常见连线方式有两种:

1. ​独立片选(CS)法

  • 硬件连接:每个从机独占一条CS线,主机通过拉低对应CS线选中从机。
  • 优点:逻辑简单,各从机独立操作,无冲突。
  • 缺点:占用主机较多GPIO引脚,从机数量受限于可用CS线数量。

连线示意图

主机         从机1         从机2
SCLK  ──┬─────SCLK─────SCLK
MOSI  ──┼─────MOSI─────MOSI
MISO  ──┼─────MISO─────MISO
CS1   ──┴─────CS
CS2   ────────┴───────CS

    2.菊花链(Daisy Chain)法

    • 硬件连接:所有从机的MOSI/MISO串联,数据依次传递。
    • 工作方式:主机发送数据包,各从机依次截取自身所需数据段。
    • 优点:仅需一条CS线,节省主机引脚。
    • 缺点:所有从机需支持菊花链协议,且数据需按顺序处理。

    适用场景:LED驱动芯片(如移位寄存器)等需要级联的设备。

    四、SPI多从机通信的注意事项

    • 时序同步:所有从机的时钟模式(CPOL/CPHA)需与主机一致。
    • 抗干扰设计:长距离通信时,可加入终端电阻或使用差分信号(如RS-485兼容SPI)。
    • 软件调度:主机需通过轮询或优先级策略管理多从机通信,避免总线冲突。

    五、STM32F103单片机中默认SPI引脚是哪个

    1.SPI1(高速SPI,APB2总线)​

    • 默认引脚​(无需重映射):
      • SCK(时钟)​:PA5(引脚PA5,复用功能SPI1_SCK
      • MOSI(主机输出)​:PA7(引脚PA7,复用功能SPI1_MOSI
      • MISO(主机输入)​:PA6(引脚PA6,复用功能SPI1_MISO
      • NSS(片选,可选硬件控制)​:PA4(引脚PA4,复用功能SPI1_NSS

    2.SPI2(低速SPI,APB1总线)​

    • 默认引脚​(无需重映射):
      • SCK(时钟)​:PB13(引脚PB13,复用功能SPI2_SCK
      • MOSI(主机输出)​:PB15(引脚PB15,复用功能SPI2_MOSI
      • MISO(主机输入)​:PB14(引脚PB14,复用功能SPI2_MISO
      • NSS(片选,可选硬件控制)​:PB12(引脚PB12,复用功能SPI2_NSS

    http://www.ppmy.cn/server/172316.html

    相关文章

    Solar2月应急响应公益月赛

    暗链排查-1 burp 抓包&#xff0c;找到 js&#xff0c;cyberchef 一把梭&#xff0c;纯黑盒 暗链排查-2 roottianshou-0e3d41087e0b47e587d7b244849b893b-7769f979cf-szxvl:~# gcore -o nginx_core 11 [Thread debugging using libthread_db enabled] Using host libthread_db…

    机器学习入门指南(2021版)

    机器学习入门指南&#xff08;2021版&#xff09; 大家好&#xff0c;我是老胡。 这是为朋友社群准备的一篇机器学习入门指南&#xff0c;分享了我机器学习之路看过的一些书、教程、视频&#xff0c;还有学习经验和建议&#xff0c;希望能对大家的学习有所帮助。 pdf版思维导图…

    UE5切换关卡函数OpenLevel,输入模式结构体,UI界面

    1.输入模式结构体 FInputModeGameOnly&#xff1a;玩家只能与游戏世界交互&#xff0c;UI 不可交互。FInputModeGameAndUI&#xff1a;玩家可以与游戏世界和 UI 同时交互。FInputModeUIOnly&#xff1a;玩家只能与 UI 交互&#xff0c;无法与游戏世界进行互动。 FInputModeGam…

    C++实现3D(EasyX)详细教程

    一、关于3D 我们看见&#xff0c;这两个三角形是相似的&#xff0c;因此计算很简单 若相对物体的方向是斜的&#xff0c;计算三角函数即可 不会的看代码 二、EasyX简介 initgraph(长,宽) 打开绘图 或initgraph(长,宽…

    IDEA 接入 Deepseek

    在本篇文章中&#xff0c;我们将详细介绍如何在 JetBrains IDEA 中使用 Continue 插件接入 DeepSeek&#xff0c;让你的 AI 编程助手更智能&#xff0c;提高开发效率。 一、前置准备 在开始之前&#xff0c;请确保你已经具备以下条件&#xff1a; 安装了 JetBrains IDEA&…

    ctfshow——vim临时文件泄露

    提示&#xff1a;发现网页有个错别字&#xff1f;赶紧在生产环境vim改下&#xff0c;不好&#xff0c;死机了。 题目如下图所示。 一、 首先&#xff0c;我们先对提示进行分析本题&#xff0c;他说网页存在错别字&#xff0c;并且在vim环境下进行了修改&#xff0c;但是没修改…

    【接口封装】——16、等级迭代图标实现

    解释&#xff1a; 1、封装内容&#xff1a;1个按钮画上两张图片&#xff08;等级迭代&#xff09; 2、参数&#xff1a;需要描述的等级 函数定义&#xff1a; #include <QTimer> #define LV_PNG "..." #define LV_PNG_HEIGHT 7 #define LV_PNG_WIDTH …

    2016年蓝桥杯第七届CC++大学B组真题及代码

    目录 1A&#xff1a;煤球数目&#xff08;3分填空_简单枚举&#xff09; 2B&#xff1a;生日蜡烛&#xff08;5分填空_简单枚举&#xff09; 3C&#xff1a;凑算式&#xff08;11分填空_全排列&#xff09; 4D&#xff1a;快速排序&#xff08;9分代码填空&#xff09; 5E…