当前位置: 首页 > news >正文

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

一、介绍

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

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

 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

    相关文章:

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

    一、介绍 串口通信是一种通过串行接口逐位传输数据的通信方式&#xff0c;广泛应用于嵌入式系统、工业控制、传感器网络等领域。 二、以下是几种常见的串口通信方式及其对比&#xff1a; 1.UART&#xff08;Universal Asynchronous Receiver/Transmitter&#xff09; 特点&am…...

    PDF转JPG(并去除多余的白边)

    首先&#xff0c;手动下载一个软件&#xff08;poppler for Windows&#xff09;&#xff0c;下载地址&#xff1a;https://github.com/oschwartz10612/poppler-windows/releases/tag/v24.08.0-0 否则会出现以下错误&#xff1a; PDFInfoNotInstalledError: Unable to get pag…...

    题目 3217 ⭐成绩统计⭐【滑动窗口 + 二分搜索】蓝桥杯2024年第十五届省赛

    小蓝的班上有 n n n 个人&#xff0c;一次考试之后小蓝想统计同学们的成绩&#xff0c;第 i 名同学的成绩为 a i a_i ai​ 。当小蓝统计完前 x x x 名同学的成绩后&#xff0c;他可以从 1 ∼ x 1 ∼ x 1∼x 中选出任意 k k k 名同学的成绩&#xff0c;计算出这 k k k 个成…...

    URL中的特殊字符与web安全

    在现代Web应用中&#xff0c;URL作为客户端与服务器之间的通信桥梁&#xff0c;承载着大量的重要信息。URL中的特殊字符&#xff0c;看似只是一些常见的符号&#xff0c;但在Web安全领域&#xff0c;它们与其他安全知识密切相关&#xff0c;如在Base64编码、SQL注入&#xff0c…...

    八卡5090服务器首发亮相!

    AI 人工智能领域热度居高不下。OpenAI 的 GPT - 4 凭强悍语言处理能力&#xff0c;在内容创作、智能客服等领域广泛应用。清华大学团队的 DeepSeek 大模型在深度学习训练优势突出&#xff0c;正促使各行业应用端算力需求向推理主导转变&#xff0c;呈爆发式增长 。 随着 DeepS…...

    esp32驱动带字库芯片TFT屏幕

    前言 学习esp32单片机开发&#xff0c;前段时间在网上买了一块2.0寸TFT屏幕。 长这个样子&#xff0c;这个屏幕带汉字字库的硬件模块。我仔细看了一下这个字库模块上面写的字是25Q32FVSIG 1336 文档 卖家也发来了开发文档&#xff0c;是个doc文档&#xff0c;张这个样子。 开…...

    为AI聊天工具添加一个知识系统 之138 设计重审 之2 文章学 引言之2 附加符号学附属诠释学附随工程学(联系)

    本文要点 要点 符号学大局观&#xff1a; 诠释学&#xff08;当代 加成[0]&#xff1a;“预期”和“预设” 两者的 不期而遇 。“邂逅”&#xff09; 我们在文章学工具设计中 以全局观考虑&#xff1a;嵌入编程工具的逻辑性底&#xff08; 哲学诠释 下确界&#xff09; 并…...

    java环境部署

    java环境部署 一、准备工作 jrejdkeclipse jdk下载&#xff1a;21和1.8-----官网&#xff1a;Oracle&#xff1a;Java 下载 |神谕 该处选择要依据自身的系统类型选择下载 idea的下载安装&#xff1a;IntelliJ IDEA | Other Versions 二、安装 三、环境配置 四、使用 五、i…...

    正点原子[第三期]Arm(iMX6U)Linux移植学习笔记-2.1 uboot简介

    前言&#xff1a; 本文是根据哔哩哔哩网站上“Arm(iMX6U)Linux系统移植和根文件系统构键篇”视频的学习笔记&#xff0c;在这里会记录下正点原子 I.MX6ULL 开发板的配套视频教程所作的实验和学习笔记内容。本文大量引用了正点原子教学视频和链接中的内容。 引用&#xff1a; …...

    CentOS 7.9 安装 ClickHouse 文档

    1. 环境准备 确保系统为 CentOS 7.9&#xff0c;并已安装 Docker。如果未安装 Docker&#xff0c;请先安装 Docker。 安装 Docker # 卸载旧版本 Docker&#xff08;如果有&#xff09; sudo yum remove -y docker docker-client docker-client-latest docker-common docker-…...

    高考數學。。。

    2024上 具体来说&#xff0c;直线的参数方程可以写为&#xff1a; x1t y−t z1t 二、简答题(本大题共5小题&#xff0c;每小题7分&#xff0c;共35分。) 12.数学学习评价不仅要关注结果评价&#xff0c;也要关注过程评价。简要说明过程评价应关注哪几个方面。…...

    使用GitLink个人建站服务部署Allure在线测试报告

    更多技术文章&#xff0c;访问软件测试社区 文章目录 &#x1f680;前言&#x1f511;开通GitLink个人建站服务1. 前提条件2. 登录GitLink平台&#xff08;https://www.gitlink.org.cn/login&#xff09;3. 进入设置>个人建站>我的站点4. 新建站点5. 去仓部进行部署6. 安…...

    Linux 上离线安装 python3

    在Linux系统上进行离线安装 Python3&#xff0c;通常是因为目标机器没有网络连接。以下是一个通用的步骤指南&#xff0c;帮助你在这种情况下成功安装Python 3&#xff1a; 下载安装包 选择一台有网络连接的机器&#xff1a;这台机器的操作系统应该尽可能与目标机器相同或相似…...

    js操作字符串的常用方法

    1. 查找和截取​​​​​​​ 1.1 indexOf 作用&#xff1a;查找子字符串在字符串中首次出现的位置。 是否改变原字符串&#xff1a;不会改变原字符串。 返回值&#xff1a;如果找到子字符串&#xff0c;返回其起始索引&#xff08;从 0 开始&#xff09;&#xff1b;如果未…...

    自动化学习-使用git进行版本管理

    目录 一、为什么要学习git 二、git是什么 三、git如何使用 1、git的下载安装和配置 2、git常用的命令 3、gitee远程仓库的使用 &#xff08;1&#xff09;注册 &#xff08;2&#xff09;创建仓库 &#xff08;3&#xff09;配置公钥&#xff08;建立电脑和git…...

    GCC RISCV 后端 -- GCC Passes 注释

    在前面文章提到&#xff0c;当GCC 前端完成对C源代码解析完成后&#xff0c;就会使用 处理过程&#xff08;Passes&#xff09;机制&#xff0c;通过一系列的处理过程&#xff0c;将 GENERIC IR 表示的C程序 转步转换成 目标机器的汇编语言。过程描述如下图所示&#xff1a; 此…...

    Ollama存在安全风险的情况通报及解决方案

    据清华大学网络空间测绘联合研究中心分析&#xff0c;开源跨平台大模型工具Ollama默认配置存在未授权访问与模型窃取等安全隐患。鉴于目前DeepSeek等大模型的研究部署和应用非常广泛&#xff0c;多数用户使用Ollama私有化部署且未修改默认配置&#xff0c;存在数据泄露、算力盗…...

    IDEA Generate POJOs.groovy 踩坑小计 | 生成实体 |groovy报错

    一、无法生成注释或生成的注释是null 问题可能的原因&#xff1a; 1.没有从表里提取注释信息&#xff0c;修改def calcFields(table)方法即可 def calcFields(table) {DasUtil.getColumns(table).reduce([]) { fields, col ->def spec Case.LOWER.apply(col.getDataType().…...

    阿里云云监控资源告警常用模板

    阿里云云监控资源告警常用模板 {"HostAvailabilityTemplate": [],"Description": "","SystemEventTemplates": [],"AlertTemplatesJson": {"kvstore_standard": [{"displayName": "Connection usa…...

    Tailwind CSS 问题:npm error could not determine executable to run

    问题与处理策略 问题描述 npx tailwindcss init -p在使用 Tailwind CSS 的前端项目中&#xff0c;执行上述指令&#xff0c;即初始化 Tailwind CSS 时&#xff0c;报如下错误 npm error could not determine executable to run# 报错npm 错误无法确定要运行的可执行文件问题…...

    从SolidWorks到Geant4仿真:我的第一个粒子探测器CAD模型导入全记录(含CADMesh避坑点)

    从SolidWorks到Geant4仿真&#xff1a;我的第一个粒子探测器CAD模型导入全记录&#xff08;含CADMesh避坑点&#xff09; 作为一名刚接触粒子探测器仿真的研究生&#xff0c;我花了整整两周时间才成功将SolidWorks设计的模型导入Geant4进行模拟。这个过程远比想象中复杂&#x…...

    Python try...except ImportError 语句详解

    在Python编程中&#xff0c;ImportError 是与模块导入相关的核心异常。优雅地处理它&#xff0c;是编写健壮、可维护和跨平台代码的关键。try...except ImportError 结构正是实现这一目标的标准工具。本文将为你抽丝剥茧&#xff0c;从基础概念到高级实践&#xff0c;全面解析这…...

    Kafka Connect集群部署踩坑实录:从单机到高可用的完整配置与监控方案

    Kafka Connect生产级部署实战&#xff1a;高可用架构设计与监控体系构建 当数据管道成为企业核心基础设施时&#xff0c;Kafka Connect的稳定性直接关系到业务连续性。去年某电商大促期间&#xff0c;因单点故障导致数据同步延迟6小时的教训仍历历在目——这正是我们需要深入探…...

    如何用nmrpflash拯救你的Netgear路由器:从“变砖“到重生的完整指南

    如何用nmrpflash拯救你的Netgear路由器&#xff1a;从"变砖"到重生的完整指南 【免费下载链接】nmrpflash Netgear Unbrick Utility 项目地址: https://gitcode.com/gh_mirrors/nmr/nmrpflash 当你的Netgear路由器固件升级失败、意外断电或系统崩溃后无法启动…...

    Google Labs Jules Awesome List:构建与维护高质量开发者资源清单指南

    1. 项目概述&#xff1a;一份面向开发者的“Awesome List”清单在开源社区和开发者圈子里&#xff0c;有一个约定俗成的传统&#xff1a;当某个技术领域或工具生态变得足够庞大和复杂时&#xff0c;总会有热心的贡献者站出来&#xff0c;整理一份名为“Awesome List”的清单。这…...

    怎么找到一个行业的源头工厂、绕开中间商?一套五步识别流程

    你下了单&#xff0c;货到了&#xff0c;质量也还行。但心里一直有个疙瘩&#xff1a;这家供应商到底是自己在生产&#xff0c;还是从别处转手赚了你一道差价&#xff1f; 这个问题对采购方和跨境卖家不是洁癖&#xff0c;是真金白银。同一款产品&#xff0c;源头工厂和中间商的…...

    会话管理封装实践:构建安全可扩展的分布式会话系统

    1. 项目概述&#xff1a;一个被低估的会话管理利器如果你是一名开发者&#xff0c;尤其是经常需要处理用户登录、权限校验、状态保持这类“脏活累活”的后端或全栈开发者&#xff0c;那么你一定对“会话管理”这四个字又爱又恨。爱的是&#xff0c;它是构建安全、有状态应用的基…...

    【最新 v2.7.1 版本安装包】5 分钟搞定 OpenClaw,零基础无需命令一键部署保姆级教学

    OpenClaw&#xff08;小龙虾&#xff09;Windows 一键部署保姆级教程 | 10 分钟搭建专属数字员工【点击下载最新OpenClaw安装包】 前言 2026 年开源圈热门 AI 智能体 OpenClaw&#xff08;昵称小龙虾&#xff09;&#xff0c;GitHub 星标突破 28 万&#xff0c;凭借本地运行 …...

    ElevenLabs希伯来文语音合成:从API调用失败到99.2%自然度达标的7步生产级优化流程

    更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;ElevenLabs希伯来文语音合成&#xff1a;从API调用失败到99.2%自然度达标的7步生产级优化流程 ElevenLabs 官方虽未明确标注希伯来语&#xff08;he-IL&#xff09;为“fully supported”&#xff0c;但…...

    从零理解无刷电机方波驱动:用STM32CubeMX配置TIM1 PWM与EXTI中断实现换相

    STM32无刷电机方波驱动实战&#xff1a;CubeMX配置与六步换相详解 1. 无刷电机驱动基础认知 无刷直流电机&#xff08;BLDC&#xff09;凭借高效率、长寿命和低噪音特性&#xff0c;已成为工业自动化、消费电子和智能家居领域的核心动力元件。与传统有刷电机相比&#xff0c;BL…...