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

uart、iic、spi通信总线

一、uart

uart一种异步串行通信协议,用于在两个设备之间传输数据。它将数据按位发送,不需要时钟信号进行同步。在uart通信中,数据通过两根线路传输:发送线(TX)和接收线(RX)。它主要用于简单的点对点通信。

工作原理:数据被拆分成多个数据位,并通过串行方式(一个接一个地)发送,接收方根据预定的波特率解析数据。

应用场景:常见于调试接口、串口通信、GPS模块、蓝牙、WIFI模块等。

数据帧格式:异步通信,双方各自使用自己的时钟信号进行数据传输,由于双方的始终不一样,就算提前约定好了波特率,随着传输数据量的增加,双方数据收发就会累计一定的误差,所以为了避免这个误差,我们需要对传输收发的数据进行约定,规范好收发的格式来消除误差。

空闲位:当不进行数据收发时,数据线处于高电平状态

起始位:1bit低电平,一帧数据传输的开始

数据位:5-8bit数据位,传输的数据

校验位:1bit,可有可无

        奇校验:一帧数据传输后保证数据位和校验位1的个数是一个奇数;

        偶校验:一帧数据传输后保证数据位和校验位1的个数是一个偶数。

停止位:1-2bit高电平,一帧数据结束的标志

二、iic

iic是一种同步串行通信协议,有Philips(现为NXP)开发,广泛用于低速、短距离的多设备通信。iic允许多个设备(包括多个主设备和从设备)共享2根线路:数据线(SDA)和时钟线(SCL)。

工作原理:由主设备控制时钟线(SCL),通过数据线(SDA)与多个从设备通信。每个设备由唯一的地址,主设备通过设备地址选择要通信的设备。、

iic的信号:

起始信号(SCL为高电平期间,SDA由高电平向低电平变化)。

终止信号(SCL为高电平期间,SDA由低电平向高电平变化)。

应答信号(接收方接收到数据后,还可以进行下一次8bit数据的接收)。

非应答信号(接收方接收到数据后,不可以进行下一次8bit数据的接收)

数据接收和发送信号。

应用场景:传感器、EEPROM、RTC(实时时钟)、显示屏等。

主机和从机通信过程分析:

1、主机给从机发送数据

2、主机从从机读取数据

三、spi

spi是一种同步串行通信协议,用于主从设备之间的高速数据传输。spi是全双工通信,意味着数据可以同时在两个方向上传输。它使用四根信号线:时钟线(SCK)、主设备输入从设备输出线(MISO)、主设备输出从设备输入线(MOSI)和片选线(SS)来进行通信。

工作原理:主设备提供时钟信号(SCK),通过数据线(MISO和MOSI)与从设备进行双向数据传输。每个从设备需要一个单独的片选信号(SS)来进行通信。

应用场景:存储设备(如Flash、SD卡)、显示屏、传感器、音频解码器等。

时序分析:

spi主从机通信需要通过两个时钟特性进行约定:

1、时钟极性(CPOL):空闲状态下时钟线电平的高低

        时钟极性为1:空闲状态下时钟线保持高电平;

        时钟极性为0:空闲状态下时钟线保持低电平。

2、时钟相位(CPHA):通信进行数据采样(数据读取)在时钟前沿还是时钟后沿

        时钟相位1:在时钟后沿进行数据采样,在时钟前沿进行数据输出;

        时钟相位1:在时钟前沿进行数据采样,在时钟后沿进行数据输出。

四、总结对比

特性uartiicspi
数据传输模式异步(全双工/半双工)同步(半双工)

同步(全双工)

引脚数量2根(TX/RX)2根(SDA/SCL)4根(MISO/MOSI/SCK/SS)
支持的设备数量1对1(点对点)多主多从(最多127个设备)主从结构(多个从设备)
通信速度低至中速(9600bps-115200bps)低速(100kbps-3.4Mbps)高速(数Mbps)
距离短距离(通常几米)短至中距离(通常几米)短至中距离(通常几米)
优点简单、硬件需求少、全双工适合多个设备、引脚少高速、全双工、稳定可靠
缺点只能连接两个设备、速度有限传输速率较低、易受噪音干扰需要更多引脚、不支持多主设备


http://www.kler.cn/a/517478.html

相关文章:

  • 物业管理平台系统提升社区智能化服务效率与管理水平
  • PyQt6医疗多模态大语言模型(MLLM)实用系统框架构建初探(下.代码部分)
  • Linux 内核中的高效并发处理:深入理解 hlist_add_head_rcu 与 NAPI 接口
  • selenium定位网页元素
  • Android BitmapShader简洁实现马赛克,Kotlin(二)
  • Kubernetes v1.28.0安装dashboard v2.6.1(k8s图形化操作界面)
  • npm:升级自身时报错:EBADENGINE
  • 微前端架构在前端开发中的实践与挑战
  • 基于微信小程序的校园失物招领系统设计与实现(LW+源码+讲解)
  • 批量修改图片资源的属性。
  • 完全二叉树的节点个数(力扣222)
  • unity 粒子系统设置触发
  • dfs专题五:FloodFill算法
  • react中hooks之 React 19 新 Hooks useOptimistic
  • linux系统下的磁盘扩容
  • 前端知识——HTML基础
  • ⚡C++ 中 std::transform 函数深度解析:解锁容器元素转换的奥秘⚡【AI 润色】
  • 低代码开发中的开源与闭源之争
  • 分数之和(题解)
  • 无人机的应用场景有哪些?
  • gesp(C++六级)(1)洛谷:P10250:[GESP样题 六级] 下楼梯
  • Java面试题2025-Spring
  • 【C语言】结构体与共用体深入解析
  • Django创建纯净版项目并启动
  • RNN实现阿尔茨海默症的诊断识别
  • 通过 Visual Studio Code 启动 IPython