百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术分析 > 正文

为什么选择UART(串口)作为调试接口,而不是I2C、SPI等其他接口

liebian365 2025-03-28 18:18 8 浏览 0 评论

UART(通用异步收发传输器)通常被选作调试接口有以下几个原因:

  1. 简单性:

  • 协议简单:UART的协议非常简单,只需设置波特率、数据位、停止位和校验位就可以进行通信。相比之下,I2C和SPI需要处理更多的通信协议和时序要求。

  • 硬件资源少:UART通信通常只需要两根线(TX和RX),而I2C需要两根线(SCL和SDA),SPI需要至少四根线(MISO、MOSI、SCLK和CS),这对引脚资源有限的微控制器尤其重要。


    SPI (Serial Peripheral Interface)

  • 多设备支持:SPI 通常用于主从通信,一个主设备可以与多个从设备通信。每个从设备需要一个单独的片选信号,这增加了硬件复杂性。

  • 时钟同步:SPI 使用时钟信号同步数据传输,不同设备间可能需要配置不同的时钟极性(CPOL)和相位(CPHA)。

  • 硬件连接:SPI 使用四条线(MISO、MOSI、SCLK 和 SS),比 UART 的两条线(TX、RX)多,需要更多的引脚。

  • 高速传输:SPI 支持较高的数据传输速率,但高速通信下电磁干扰和信号完整性问题变得更显著,需要仔细设计 PCB 布线。

    ②I2C (Inter-Integrated Circuit)

  • 多主多从:I2C 支持多主多从通信,需要管理总线仲裁和总线占用,这在硬件和软件设计上增加了复杂性。


  • 地址分配:每个从设备都有唯一的地址,主设备通过地址寻址从设备,涉及地址冲突和地址分配的问题。

  • 时钟同步:I2C 也使用时钟信号同步数据传输,但只有两条线(SDA 和 SCL),这些线需要上拉电阻以维持总线的高电平状态。

  • 位级握手:I2C 有位级的握手机制(如ACK/NACK信号),确保每个字节的传输成功,这需要额外的逻辑处理。

    ③CAN (Controller Area Network)

  • 多主多从:CAN 支持多主多从通信,使用基于优先级的仲裁机制,以确定哪个节点可以发送数据。这需要复杂的协议处理和硬件支持。

  • 错误检测与校正:CAN 协议内置了强大的错误检测和校正机制,如循环冗余校验(CRC)、位填充、确认应答等,提高了通信的可靠性,但也增加了协议的复杂性。


  • 消息过滤:CAN 节点可以基于消息 ID 对接收到的消息进行过滤,需要配置硬件滤波器或软件滤波器,增加了配置和编程的复杂性。

  • 高速通信:CAN 支持高速通信(如 CAN-FD),需要复杂的物理层和协议层设计,以保证在高噪声环境下的数据传输可靠性。

  • 相比 UART

  • 简单性:UART 是全双工通信,通常只需要两条线(TX、RX),硬件连接简单,无需时钟信号同步。

  • 没有从设备地址:UART 通信没有从设备地址和总线仲裁问题,通信协议和数据帧结构相对简单。

  • 软件实现简单:UART 的软件实现和配置相对简单,不需要处理复杂的握手、仲裁和错误检测机制


  • 独立性:

    • 主从关系灵活:UART通信没有主从设备的限制,设备之间可以自由地发送和接收数据。I2C和SPI都需要明确的主从关系,并且通常需要复杂的配置来处理多主多从环境。

    • 时钟独立:UART是异步通信,不需要共享时钟信号,而I2C和SPI都需要共享时钟信号,这对调试环境的灵活性有一定影响。


  • 广泛兼容性:

    • 通用性:几乎所有的微控制器和计算机都内置有UART接口,并且广泛支持串口通信软件,如PuTTY、Tera Term等,使得UART调试非常方便。

    • 常用工具支持:有大量的调试工具(如USB转串口适配器)支持UART,这些工具可以很方便地连接到PC进行调试。


  • 速度要求:

    • 适合调试速度:UART的速度通常能够满足调试需求,虽然I2C和SPI可以提供更高的速度,但对于大多数调试应用来说,UART的速度已经足够。


  • 软件支持:

    • 易于实现的驱动:UART驱动程序通常比I2C和SPI更容易实现,特别是在操作系统和嵌入式系统中,UART驱动程序更成熟、稳定。

    • 电脑上有各种串口助手可以使用,如果自己编程上位机,使用UART也非常方便



    总的来说,UART作为调试接口具有简单、灵活、兼容性好、资源占用少等优点,这使得它在许多调试场景中被广泛使用。

    UART

    SPI

    I2C

    CAN


    概述

    硬件不是连连线

    我做硬件,进阶的几个阶段

    信号

    为什么需要把模拟信号放大

    滤波器的基本概念

    一阶RC低通滤波器

    为什么需要抗混叠滤波?

    高速ADC基础

    数字信号的本质也是模拟信号

    为什么会有这么多电平标准?

    模拟信号是如何变成一个数字信号的?

    处理器

    CPU、SoC、MCU什么区别

    RISC与CISC

    为什么MCU一般跑RTOS,SoC一般跑嵌入式Linux?

    国产SoC厂家

    一阵腥风血雨的收购之后,MCU哪家强?

    接口

    为什么需要各种接口?

    GPIO内部结构及工作原理

    UART

    SPI

    I2C

    视频输出接口

    —推荐书籍—

    【推荐书籍】《电路设计工程计算基础》武晔卿

    【推荐书籍】硬件十万个为什么(开发流程篇)

    【推荐书籍】硬件十万个为什么(无源器件篇)

    【推荐书籍】硬件十万个为什么(电源篇)

    相关推荐

    精品博文嵌入式6410中蓝牙的使用

    BluetoothUSB适配器拥有一个BluetoothCSR芯片组,并使用USB传输器来传输HCI数据分组。因此,LinuxUSB层、BlueZUSB传输器驱动程序以及B...

    win10跟这台计算机连接的前一个usb设备工作不正常怎么办?

    前几天小编闲来无事就跑到网站底下查看粉丝朋友给小编我留言询问的问题,还真的就给小编看到一个问题,那就是win10跟这台计算机连接的一个usb设备运行不正常怎么办,其实这个问题的解决方法时十分简单的,接...

    制作成本上千元的键盘,厉害在哪?

    这是稚晖君亲自写的开源资料!下方超长超详细教程预警!!全文导航:项目简介、项目原理说明、硬件说明、软件说明项目简介瀚文智能键盘是一把我为自己设计的——多功能、模块化机械键盘。键盘使用模块化设计。左侧的...

    E-Marker芯片,USB数据线的“性能中枢”?

    根据线缆行业的研究数据,在2019年搭载Type-C接口的设备出货量已达到20亿台,其中80%的笔记本电脑和台式电脑采用Type-C接口,50%的智能手机和平板电脑也使用Type-C接口。我们都知道,...

    ZQWL-USBCANFD二次开发通讯协议V1.04

    修订历史:1.功能介绍1.1型号说明本文档适用以下型号:  ZQWL-CAN(FD)系列产品,USB通讯采用CDC类实现,可以在PC机上虚拟出一个串口,串口参数N,8,1格式,波特率可以根据需要设置(...

    win10系统无法识别usb设备怎么办(win10不能识别usb)

    从驱动入手,那么win10系统无法识别usb设备怎么办呢?今天就为大家分享win10系统无法识别usb设备的解决方法。1、右键选择设备管理器,如图:  2、点击更新驱动程序,如图:  3、选择浏览...

    微软七月Win8.1可选补丁有内涵,含大量修复

    IT之家(www.ithome.com):微软七月Win8.1可选补丁有内涵,含大量修复昨日,微软如期为Win7、Win8.1发布7月份安全更新,累计为6枚安全补丁,分别修复总计29枚安全漏洞,其中2...

    如何从零开始做一个 USB 键盘?(怎么制作usb)

    分两种情况:1、做一个真正的USB键盘,这种设计基本上不涉及大量的软件编码。2、做一个模拟的USB键盘,实际上可以没有按键功能,这种的需要考虑大量的软件编码,实际上是一个单片机。第一种设计:买现成的U...

    电脑识别U盘失败?5个实用小技巧,让你轻松搞定USB识别难题

    电脑识别U盘失败?5个实用小技巧,让你轻松搞定USB识别难题注意:有些方法会清除USB设备里的数据,请谨慎操作,如果不想丢失数据,可以先连接到其他电脑,看能否将数据复制出来,或者用一些数据恢复软件去扫...

    未知usb设备设备描述符请求失败怎么解决

    出现未知daousb设备设备描述符请求失du败解决办zhi法如下:1、按下Windows+R打开【运行】;2、在版本运行的权限输入框中输入:services.msc按下回车键打开【服务】;2、在服务...

    读《飘》47章20(飘每章概括)

    AndAhwouldn'tleaveMissEllen'sgrandchildrenfornotrashystep-patobringup,never.Here,Ah...

    英翻中 消失的过去 37(消失的英文怎么说?)

    翻译(三十七):消失的过去/茱迪o皮考特VanishingActs/JodiPicoult”我能做什么?“直到听到了狄利亚轻柔的声音,我才意识到她已经在厨房里站了好一会儿了。当她说话的时候,...

    RabbitMQ 延迟消息实战(rabbitmq如何保证消息不被重复消费)

    现实生活中有一些场景需要延迟或在特定时间发送消息,例如智能热水器需要30分钟后打开,未支付的订单或发送短信、电子邮件和推送通知下午2:00开始的促销活动。RabbitMQ本身没有直接支持延迟...

    Java对象拷贝原理剖析及最佳实践(java对象拷贝方法)

    作者:宁海翔1前言对象拷贝,是我们在开发过程中,绕不开的过程,既存在于Po、Dto、Do、Vo各个表现层数据的转换,也存在于系统交互如序列化、反序列化。Java对象拷贝分为深拷贝和浅拷贝,目前常用的...

    如何将 Qt 3D 渲染与 Qt Quick 2D 元素结合创建太阳系行星元素?

    Qt组件推荐:QtitanRibbon:遵循MicrosoftRibbonUIParadigmforQt技术的RibbonUI组件,致力于为Windows、Linux和MacOSX提...

    取消回复欢迎 发表评论: