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

百科   2024-08-06 23:55   浙江  

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

    视频输出接口

    —推荐书籍—

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

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

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

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

    【推荐书籍】《高速电路设计实践》王剑宇

    【推荐书籍】《高速电路设计进阶》王剑宇

    【推荐书籍】《ADS信号完整性仿真与实战》第二版 蒋修国


    硬十
    热爱技术,乐于分享
     最新文章