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

嵌入式C语言面试相关知识——常见的四种通信协议:I²C、SPI、USART、CAN;一种数据通信机制:DMA

嵌入式C语言面试相关知识——常见的四种通信协议:I²C、SPI、USART、CAN;一种数据通信机制:DMA

  • 一、博客声明
  • 二、I²C或IIC (Inter-Integrated Circuit)
    • 1、概念
    • 2、工作原理
    • 3、通信过程
    • 4、优缺点
    • 5、典型应用
  • 三、SPI (Serial Peripheral Interface)
    • 1、概念
    • 2、工作原理
    • 3、通信过程
    • 4、优缺点
    • 5、典型应用
  • 四 、UART(Universal Asynchronous Receiver/Transmitter)
    • 1、概念
    • 2、工作原理
    • 3、通信电平
    • 4、数据格式
    • 5、优缺点
    • 6、典型应用
  • 五、 CAN网络(Controller Area Network)
    • 1、概念
    • 2、工作原理
    • 3、通信数据格式
    • 4、优缺点
    • 5、典型应用
  • 六、 I²C 、SPI 和UART对比
  • 七、DMA(Direct Memory Access)是一种机制
    • 1、概念
    • 2、工作原理
    • 3、优缺点
    • 4、典型应用

一、博客声明

  又是一年一度的秋招,怎么能只刷笔试题目呢,面试题目也得看,想当好厂的牛马其实也不容易呀O(∩_∩)O。注意:这篇博客大部分是来自网上的资源,通过自问或者他问,然后寻找答案,为了加深印象,总结或者抄一遍。


二、I²C或IIC (Inter-Integrated Circuit)

1、概念

  又称为内部集成电路总线,是一种常用于嵌入式系统的两线串行总线协议,主要用于短距离设备间的低速通信。

2、工作原理

  • 两线: 通过时钟同步传输数据。
    • SCL(时钟线)
    • SDA(数据线)
  • 半双工: 同一时间只能进行单向数据传输。
  • 主从模式: 一个主设备可以与多个从设备进行通信,每个从设备都有唯一的地址。主设备负责发出时钟信号并控制通信。

3、通信过程

  • 起始条件: 主设备在总线上的SDA和SCL上产生一个起始条件,来通知总线上的从设备准备开始通信。开始的标志是,SCL高电平时,主设备将SDA从高电平拉低到低电平。
  • 设备寻址: 主设备发送从设备的地址,通过这个地址来选择和哪个从设备进行通信。地址长度为 7位 或者是 10位 ,分别可以连接 128个从设备 或者 1024个从设备
    7位地址: | 地址7位 | R/W 1位 |
    10位地址:| 地址前5位 | 特定位 | 地址后8位 | R/W 1位 |
    
  • 应答信号(ACK/NACK): 设备寻址完成后,从设备需要发回一个应答信号(ACK) 来确认已经收到地址和通信请求。这个应答信号时从设备的SDA进行发出,拉低代表确认应答(ACK),SDA维持高电平表示没有设备响应(NACK)。
  • 数据传输: 主设备或从设备通过SDA线传输数据,每次传输1字节。在每个字节的传输完成后,接收方会发送ACK信号,表示数据传输成功。
  • 停止条件: SCL高电平时,主设备将SDA从低电平拉高到高电平,表示通信结束。总线释放出来可以进行新的传输。

4、优缺点

  • 优点: 只需要两条线,简化连接;支持多设备共享同一总线。
  • 缺点: 速度慢,通常在100kHz ~ 400kHz之间,适合低速设备。不适合长距离通信,主要用于板内通信。

5、典型应用

  温湿度传感器、LCD1206屏幕、RTC实时时钟等设备。

三、SPI (Serial Peripheral Interface)

1、概念

  又称为串行外围接口,是一种串行通信协议,用于短距离高速数据传输。

2、工作原理

  • 四线:
    • SCLK(串行时钟)
    • MOSI(主设备输出,从设备输入)
    • MISO(主设备输入,从设备输出)
    • SS/CS(从设备选择)
  • 全双工: 可以同时进行双向数据传输。
  • 主从模式: 主设备负责发出时钟信号并与多个从设备通信,通过选择不同的SS/CS,可以控制与哪个从设备通信。

3、通信过程

  • 选择从设备: 使用片选信号引脚(SS/CS)选择从设备。

  • 数据传输:

    • 主设备将要发送的数据放入 MOSI(Master Out Slave In)线。
    • 主设备产生时钟信号,SCK 线从低电平拉高,通知从设备数据的开始。
    • 从设备在 SCK 的高电平期间读取 MOSI 线上的数据。
    • 同时,从设备可以在 MISO(Master In Slave Out)线上发送数据回主设备。
    • 当数据传输完成后,主设备可以拉高 CS 信号,结束通信。
  • 时钟信号管理: SPI 协议允许主设备设置时钟极性(CPOL)和时钟相位(CPHA),这决定了数据在时钟的上升沿还是下降沿被读取。根据这两个参数,SPI 有四种工作模式(Mode 0 到 Mode 3):

    • Mode 0: CPOL = 0, CPHA = 0
    • Mode 1: CPOL = 0, CPHA = 1
    • Mode 2: CPOL = 1, CPHA = 0
    • Mode 3: CPOL = 1, CPHA = 1

4、优缺点

  • 优点:
    • 速度快,可以达到几Mkhz,适合高速通信。
    • 全双工传输,速度更高效。
  • 缺点:
    • 引脚多,多个从设备时,每个设备都需要一个独立的CS引脚。
    • 没有像 I²C 那样的设备地址,增加硬件的复杂性。

5、典型应用

  通信模块、显示屏、存储器、音频解码芯片。

四 、UART(Universal Asynchronous Receiver/Transmitter)

1、概念

  又称为通用异步收发器,是一种常见的异步串行通信协议,用于点对点的数据传输。

2、工作原理

  • 两线:
    • TX(发生数据)
    • RX(接受数据)
  • 全双工: 可以同时进行双向数据传输。
  • 点对点通信: 一对一的全双工通信。
  • 波特率: 没有时钟线,通信双方需要约定好波特率(即传输速率)。

3、通信电平

  根据距离区别分为了以下三种。图片来源:DigiKey得捷
在这里插入图片描述

4、数据格式

  一共包含了下面四个部分:

  • 起始位: 用于标志数据传输的开始,通常为逻辑低电平。
  • 数据位: 可以是5位到9位的实际数据,常见的是8位。
  • 校验位: 用于检测传输过程中是否发生了数据错误。
  • 停止位: 标志数据传输的结束,可以是1位或2位,通常是逻辑高电平。

5、优缺点

  • 优点:
    • 简单可靠、时候长距离通信。
    • 全双工传输,速度更高效。
  • 缺点:
    • 没有时钟信号,需要准确配置波特率。
    • 通信速度受限,通常几百Kbps到几Mbps之间。

6、典型应用

  电脑串口通信、GPS模块、蓝牙模块,单片机串口。

五、 CAN网络(Controller Area Network)

1、概念

  又称为控制器局域网,是一种多主(multi-master)、多节点的串行通信协议,允许多个设备之间通过一个共享的总线进行实时的数据交换。

2、工作原理

  • 两线:
    • CAN_H(高电平)
    • CAN_L(低电平)
  • 广播总线通信: 是一种广播总线通信,所有设备共享一根总线。每个设备都可以发送和接收数据,总线上的所有节点都能够接收到每一个数据帧,但是每个节点只会处理与自己相关的数据。
  • 差分信号: 协议通过差分信号来传输数据、即通过CAN_H和CAN_L之间的电压差分来判断信号状态。

3、通信数据格式

  • 帧结构:

    • 数据帧:传输实际的数据信息。
    • 远程帧:请求其他节点发送数据。
    • 错误帧:检测到错误时发送。
    • 过载帧:告诉发送方,接收节点忙,暂时不能接收数据。
  • 数据帧的组成:

    • 帧起始位:用于识别帧的开始。

    • 标识符:用于标识数据的优先级和消息类型,11位或者是29位标识符。

    • 控制字段:包含数据长度和远程请求信息。

    • 数据字段:包含实际要传输的数据,数据长度可变,0~8字节。

    • CRC校验字段:用于数据的错误检测。

    • 确认字段:接收方确认数据正确接收。

    • 帧结束位:标识帧的结束。

      | Start | Identifier | Control | Data | CRC | ACK | End |

4、优缺点

  • 优点: 使用差分信号,抗干扰能力强,适合长距离通信,多节点,长距离传输。
  • 缺点: 布线复杂,非安全性,数据帧长度有限制。

5、典型应用

  汽车、工业自动化、医疗设备等。

六、 I²C 、SPI 和UART对比

特性I²CSPIUARTCAN
线速2(CSL、SDA)4(SCLK、MOSI、MISO、CS)2(TX、RX)2(CAN_H、CAN_L)
速度慢,通常100kHz ~ 400kHz快,1MHz以上中速,典型9600bps ~ 1Mbps中等,最高 1Mbps(标准),8Mbps(CAN FD)
通信方式半双工全双工全双工(异步)半双工(差分)
多设备支持支持,使用设备地址支持,使用CS线不支持支持,使用 ID 仲裁
复杂性相对简单相对复杂简单中等,带仲裁和错误处理机制
应用场景传感器、低速设备高速设备、音频、视频数据串行通信、GPS、蓝牙模块汽车、工业自动化、医疗设备

七、DMA(Direct Memory Access)是一种机制

1、概念

  又称为直接存储访问,它不是一种通信协议,而是一种通信机制,用于嵌入式系统中高效地进行数据传输。

2、工作原理

  • 不依赖CPU: DMA控制器可以在不依赖CPU直接干预的情况下,在内设与外设、内存与内存之间传输数据。
  • 大数据传输: 当需要进行大块数据传输时,CPU可以将任务交给DMA控制器,然后进行处理其他的任务,DMA负责完成数据传输并通知CPU。
  • 常见操作: 数据从ADC传输到内存,或者从内存传输到DAC。

3、优缺点

  • 优点:
    • 提高了效率,减少了CPU在大数据任务中的负担。
    • 加快数据传输速度,特别是大块数据传输中,极大提高系统性能。
  • 缺点:
    • 硬件和软件实现较为复杂。
    • 不适合小块、频繁的数据传输。

4、典型应用

  音频、视频数据流传输,网络数据包传输,图像处理。


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

相关文章:

  • 如何删除Mac上的系统数据
  • 119.【C语言】数据结构之快速排序(调用库函数)
  • Wend看源码-Java-集合学习(List)
  • 双柱渐变图背景图
  • 学习 Python 编程的规则与风格指南
  • 大模型的实践应用33-关于大模型中的Qwen2与Llama3具体架构的差异全解析
  • 《深度学习》Dlib、OpenCV 轮廓绘制
  • 如何选择云BPM系统,简单问题深度解析
  • HarmonyOS SDK API 常用模块对应关系
  • 基于深度学习的异常检测
  • 【如何获取股票数据06】Python、Java等多种主流语言实例演示获取股票行情api接口之沪深A股最新分时BOLL数据获取实例演示及接口API说明文档
  • STL之队列翻牌游戏
  • Day9概率论
  • 多线程基础保姆级教程
  • Springboot连接多数据库
  • GPT-SoVITS的批量克隆声音并且合并
  • R语言机器学习算法实战系列(五)GBM算法+SHAP值 (Gradient Boosting Machines)
  • plsql查询Oracle数据库发现有的数据是乱码
  • Pr 音频效果快速参考(合集 · 2025版)
  • 基于Leaflet和SpringBoot的全球国家综合检索WebGIS可视化
  • 阿里 C++面试,算法题没做出来,,,
  • 基于STM32的智能物联网家用机器人设计
  • 组串式储能变流升压一体机
  • Field injection is not recommended – Spring IOC
  • AutoCompleteTextView
  • 【SuperHotSwap】IDEA零配置热更新插件升级