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

嵌入式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.mrgr.cn/news/52407.html

相关文章:

  • Mamba学习笔记(2)—序列数据处理基础
  • 建筑工程管理软件推荐,2024年最佳选择
  • Linux网络命令:轻量级的、用户友好的、监视每个进程或应用程序网络带宽使用的工具nethogs详解
  • C++【内存管理】(超详细讲解C++内存管理以及new与delete的使用和原理)
  • 【DDPG】DDPG的离散实现(含代码)
  • Android Framework AMS(04)startActivity分析-1(am启动到ActivityThread启动)
  • 点评项目-9-秒杀业务(加锁)、redis分布式锁
  • 联众优车积极应对二手车市场挑战,在变化的市场抓住发展机遇
  • 从零开始的LeetCode刷题日记:515.在每个树行中找最大值
  • mac 录屏(视频+内外部声音)
  • 【建议收藏】两万字总结Git的60个常用操作
  • PCL 点云配准 KD-ICP算法(精配准)
  • LVGL代码移植(裸机+FreeRTOS操作系统+内部SRAM+外部SRAM+内存管理算法+编译错误以及现象显示不正常)
  • 18. 位运算
  • torch-npu的配置+yolo
  • 十月编程语言排行榜~
  • 【数据结构】之链表详解
  • 【AscendC】算子调用API的对齐问题
  • 下面四款2024年首推的免费的录屏工具,哪个是你的首选??
  • 【HuggingFace 如何上传数据集 (2) 】国内网络-稳定上传图片、文本等各种格式的数据