02
2025
07
01:14:29

嵌入式面试指南:你必须掌握的通信协议

作为一名嵌入式工程师,以下这些常用的通信协议往往都是面试中的必问知识。


1. UART协议

UART(Universal Asynchronous Receiver/Transmitter,通用异步收发器)是一种双向、串行、异步的通信总线,仅用一根数据接收线和一根数据发送线就能实现全双工通信。

典型的串口通信使用3根线完成,分别是:发送线(TX)、接收线(RX)和地线(GND),通信时必须将双方的TX和RX交叉连接并且GND相连才可正常通信。

  • 协议特点

    • 异步 (Asynchronous):

      • 不需要共享的时钟信号线

    • 串行 (Serial):

      • 单根数据线串行传输

    • 全双工 (Full Duplex):

      • TX (Transmit): 发送数据线(从本设备角度看是输出)。

      • RX (Receive): 接收数据线(从本设备角度看是输入)。

      • 点对点 (Point-to-Point):

      • 标准的 UART 协议设计用于连接两个设备。

    • 数据帧格式

      • 起始位 (Start Bit):

        • 1个bit的逻辑低电平 (0),标志着一个新数据帧的开始

      • 数据位 (Data Bits):

        • 通常是 5, 6, 7 或 8 位(最常用的是 8 位)。代表实际传输的一个字节(或部分字节)的数据。

        • 传输顺序通常是最低有效位 (LSB) 在前(即先发送 bit0,最后发送 bit7)。

      • 校验位 (Parity Bit):

        • 可选,可以是 1 位或无。用于简单的错误检测(奇校验或偶校验)。

        • 奇校验 (Odd Parity): 数据位 + 校验位中“1”的总数为奇数。

        • 偶校验 (Even Parity): 数据位 + 校验位中“1”的总数为偶数。

        • 无校验 (None): 最常见的选择,不包含校验位。

      • 停止位 (Stop Bits):

        • 通常是 1 位、1.5 位 或 2 位(最常用的是 1 位)。

        • 逻辑高电平 (1),标志着一个数据帧的结束。

        • 提供帧之间的分隔,并确保接收电路有足够时间复位,准备好接收下一个起始位。

      • 空闲状态 (Idle State):

        • 当没有数据传输时,TX 和 RX 线都保持在逻辑高电平 (1)。起始位的下降沿将线路从空闲的高电平拉低。


      图片
      图片


      2. IIC协议

      I²C协议(Inter-Integrated Circuit) 是由飞利浦公司(现恩智浦)开发的一种同步、半双工、多主从架构的串行通信协议,专为板级短距离低速设备通信设计。

      • 协议特点

        • 信号线:SDA(串行数据线)+ SCL串行时钟线(均为双向开漏输出)

        • 拓扑结构:总线式,多设备并联,通过地址寻址

        • 通信模式:半双工,同一时刻只能发送或接收

        • 速度模式:标准模式(100 kbps)、快速模式(400 kbps)、高速模式(3.4 Mbps)

        • 寻址能力:7位地址(最多支持128个设备)或10位地址(最多支持1024个设备)

      • 数据帧格式

      图片
      图片

        • 起始条件(START)

          • SCL高电平时,SDA从高→低跳变  

        • 从机地址 + 读写位(ADDRESS + R/W#)

          • 7位地址:高7位(MSB优先)  

          • 读写位0=主机写,1=主机读  示例:地址0x50的EEPROM写操作 → 1010000 0 (二进制)

        • 应答位(ACK/NACK)

            • ACK:第9个时钟周期,接收方拉低SDA  

            • NACK:SDA保持高电平(表示错误或传输结束)

          • 数据字节(DATA)

            • 每字节8位(MSB优先),后紧跟ACK/NACK

          • 应答位(ACK/NACK)

            • ACK:第9个时钟周期,接收方拉低SDA  

            • NACK:SDA保持高电平(表示错误或传输结束)

          • 停止条件(STOP)

            • SCL高电平时,SDA从低→高跳变  

        • 数据仲裁

          • 时钟同步

            • 线与逻辑:SCL线被所有主机并联控制,任一设备拉低SCL即导致总线低电平

            • 最长低电平胜出:低电平持续时间最长的主机决定SCL低相位周期

        • 数据仲裁

          • 每个主机在SCL高电平期间采样SDA状态

          • 若自身发送的电平 不等于 总线实际电平,则立即退出竞争

        • 失败方行为

          • 切换为从机模式,监听赢得仲裁的主机通信

          • 释放SCL控制权

          • 缓存未发送完的数据,等待总线空闲后重试

        • 仲裁结束

          • 当某主机完整发送数据且未被中断则成为总线控制者

          • 发送STOP条件后释放总线

          图片


          3. SPI协议

          SPI协议(Serial Peripheral Interface) 是一种高速、全双工、同步串行通信协议,由Motorola开发,专为短距离板级芯片间通信设计。

          • 协议特点

            • 信号线:CS(片选线)、SCK(时钟线)、MOSI(主出从入数据线)、MISO(主入从出数据线)

            • 拓扑结构:主从架构(一主多从),片选信号寻址

            • 通信模式:全双工

            • 传输速度:通常10-100 Mbps

          图片

          • 数据传输时序

          图片

          • 数据帧格式

          图片


          • 多从机模式

            • 独立CS:互不干扰,速度最优,但需占用IO口

            • 菊花链:仅需一个CS,数据叠加,速度受限

          图片





          推荐本站淘宝优惠价购买喜欢的宝贝:

          image.png

          本文链接:https://www.hqyman.cn/post/12054.html 非本站原创文章欢迎转载,原创文章需保留本站地址!

          分享到:
          打赏





          休息一下~~


          « 上一篇 下一篇 »

          发表评论:

          ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

          请先 登录 再评论,若不是会员请先 注册

          您的IP地址是: