嵌入式面试题:1.协议:IIC、SPI、TCP/IP

一、IIC的三种信号?

IIC协议的三种信号分别是起始信号、数据信号和停止信号,以下是具体介绍:

(1)起始信号(START)

定义:当SCL(时钟线)保持高电平时,SDA(数据线)由高电平向低电平的跳变被定义为起始信号,标志着一次IIC通信的开始。

作用:它告知总线上的从设备,主设备即将开始发送数据或指令,准备进行通信。从设备在检测到起始信号后,会开始监听总线上后续的信号。

(2)数据信号

定义:在起始信号之后,IIC总线开始传输数据信号。数据以字节为单位进行传输,每个字节包含8位数据位,先传输最高位(MSB)。在每个字节传输完毕后,还会有一个应答位(ACK)用于确认数据是否被正确接收。

作用:用于主设备向从设备发送数据或指令,以及从设备向主设备返回数据。主设备通过在SDA线上按照时钟信号SCL的节奏放置相应的电平状态来表示要传输的数据位。

(3)停止信号(STOP)

定义:当SCL保持高电平时,SDA由低电平向高电平的跳变被定义为停止信号,标志着一次IIC通信的结束。

作用:它告知总线上的设备,本次通信已经完成,从设备可以结束相应的操作,释放相关资源或进入待机状态等。主设备发送停止信号后,便不再占用总线资源,总线恢复到空闲状态。

二、IIC数据传输流程

(1)初始化与起始信号

总线初始化:在数据传输前,IIC总线需处于空闲状态,即SDA和SCL线都为高电平。

发送起始信号:主设备将SCL线保持高电平,然后把SDA线从高电平拉至低电平,产生起始信号,通知从设备通信即将开始。

(2)地址与读写位传输

发送设备地址:起始信号后,主设备发送7位或10位的从设备地址,以确定要通信的从设备。

发送读写位:地址位后紧跟1位读写位,"0"表示写操作,"1"表示读操作,告知从设备主设备的操作意图。

(3)数据传输与应答

写操作:主设备发送数据字节,每个字节后从设备接收数据并发送应答位。若从设备成功接收数据,会在第9个时钟周期将SDA线拉低,表示ACK;否则保持SDA为高电平,即NACK。主设备收到NACK后会采取相应处理,如重新发送数据或终止传输。

读操作:主设备发送读命令后,从设备将数据字节发送到总线上,主设备接收数据并发送应答位。主设备在接收完数据后,若需要更多数据则发送ACK,若已接收完则发送NACK,告知从设备停止发送。

(4)数据传输结束

发送停止信号:数据传输完成后,主设备将SCL线保持高电平,把SDA线从低电平拉高到高电平,产生停止信号,标志通信结束,释放总线资源,使总线恢复到空闲状态。

(5)重复起始信号

在某些情况下,主设备可能需要在一次通信结束后,不发送停止信号,而是立即发送一个重复起始信号,以与同一个或不同的从设备进行新的通信,可实现连续的数据读写操作或与多个从设备进行通信。

三、IIC协议为什么要上拉电阻?

(1)确定默认电平

IIC总线是开漏输出结构,没有上拉电阻时,SDA和SCL线的电平状态不确定。上拉电阻能将总线默认拉高到高电平,确保在没有数据传输或设备输出时,总线处于稳定的高电平状态,为数据传输提供明确的起始和空闲状态基准。

(2)实现线与功能

IIC总线上多个设备可共享SDA和SCL线,通过线与逻辑实现数据传输。当一个设备将总线拉低时,其他设备不能将其拉高,只有所有设备都释放总线,即输出高阻态时,总线才能在拉电阻作用下恢复高电平,实现多设备间的数据交互和仲裁。

(3)增强驱动能力

IIC总线上设备输出级驱动能力有限,上拉电阻能提供额外驱动电流,确保信号电平能正确传输和被识别,尤其在总线上连接多个设备或总线长度较长时,可减少信号传输的衰减和失真,提高信号完整性。

四、IIC协议如何进行读写操作?

(1)写操作

  1. 发送起始信号 :主设备在SCL为高电平时,将SDA从高电平拉到低电平,产生起始信号,表明通信开始。

  2. 发送从设备地址及写位 :主设备发送7位或10位的从设备地址,紧跟一位写位(逻辑0),告知总线上的从设备主设备要向其写入数据。

  3. 等待从设备应答 :从设备接收到地址和写位后,若识别到自己的地址,会在第9个时钟周期将SDA线拉低,发送应答信号ACK,通知主设备已准备好接收数据。

  4. 发送数据字节 :主设备开始发送数据,先发送最高位(MSB)。每发送一个字节数据,主设备会在第9个时钟周期等待从设备的应答。

  5. 重复发送数据 :若有多个字节的数据要发送,主设备会重复上一步骤,逐个字节发送数据,每个字节都需等待从设备的应答。

  6. 发送停止信号 :数据发送完成后,主设备在SCL为高电平时,将SDA从低电平拉高到高电平,产生停止信号,结束写操作。
    (2)读操作

  7. 发送起始信号 :同写操作的起始信号,主设备在SCL为高电平时,将SDA从高电平拉到低电平,启动通信。

  8. 发送从设备地址及读位 :主设备发送从设备地址,紧跟一位读位(逻辑1),表示要从从设备读取数据。

  9. 等待从设备应答 :从设备识别到地址和读位后,若匹配自身地址,会发送ACK应答,准备发送数据。

  10. 接收数据字节 :从设备开始通过SDA线发送数据,主设备在SCL的每个时钟周期对SDA上的数据进行采样,先接收最高位。主设备接收完一个字节后,需发送应答信号给从设备。

  11. 判断是否继续读取 :若主设备还需读取更多数据,则发送ACK,从设备会继续发送下一个字节的数据;若主设备已读取完所需数据,就发送NACK,告知从设备停止发送数据。

  12. 发送停止信号:主设备接收完数据后,发送停止信号,释放总线,结束读操作。

来源:https://mp.weixin.qq.com/s/NtPxq4EehsRgO0MJoDiJLw

五、SPI协议的特点是什么?

SPI通信即串行外设接口,是一种高速、全双工、同步的通信总线,常用于微控制器与外设之间的通信,其特点如下:

(1)硬件结构简单

连线少:通常只需4条线,即时钟线(SCK)、主机输出从机输入线(MOSI)、主机输入从机输出线(MISO)和片选线(CS),就能实现主设备与从设备间的数据传输,可节省硬件资源与电路板空间。

接口易实现:主从设备只需具备SPI控制器及相关引脚,无需复杂的电路设计,很多微控制器和外设都集成了SPI接口,方便连接与通信。
(2)通信速度快

高速时钟支持:SPI通信时钟频率较高,可达几十MHz,能满足高速数据传输需求,如闪存芯片与主控芯片间的数据读写,可快速完成。

全双工传输:数据能在主从设备间同时双向传输,主机发数据时,从机可同时回传数据,提高通信效率,如在音频编解码中,可同时传输音频数据与控制信息。
(3)数据传输灵活

可按需配置:数据帧格式、传输位数等可根据需求配置,通常支持8位、16位等多种数据位宽,能适应不同外设数据格式要求,如与不同分辨率的图像传感器通信时可灵活设置。

支持多设备连接:主机通过片选线能选择不同从设备通信,实现一主多从通信架构,便于扩展系统功能,如在智能家电控制系统中,可连接多个传感器和执行器。
(4)可靠性较高

同步传输机制:借助时钟信号同步数据传输,主从设备按统一时钟节奏收发数据,确保数据传输的准确性与稳定性,减少传输错误。

无应答机制:SPI通信无专门应答信号,但数据传输时可通过校验和、循环冗余校验(CRC)等方式检测错误,发现错误可重传,保证数据完整性。

六、SPI通信协议,主机和从机如何传输数据?

SPI通信采用主从模式,主机通过时钟线(SCK)提供同步时钟,同时通过MOSI线发送数据到从机,从机通过MISO线返回数据给主机,片选线(CS)用于选择目标从机,实现全双工同步数据传输。

七、TCP/IP 协议的层数

TCP/IP 协议栈采用四层架构,每层负责特定功能:

  • 应用层:处理用户数据和服务,如 HTTP、FTP、SMTP。
  • 传输层:提供端到端数据传输,包括 TCP(可靠、面向连接)和 UDP(不可靠、无连接)。
  • 网络层:实现跨网络路由和转发,如 IP 协议。
  • 链路层:管理本地网络传输和接口,如以太网(封装/解封装)。

此结构确保高效的数据传输与交换。

八、RS232-C 的硬件接口组成

RS-232C 是串行通信标准,用于数字设备(如计算机与调制解调器)间数据传输,定义电气、机械和信号特性。其硬件接口主要包括:

  • DTE(数据终端设备):如计算机、打印机。
  • DCE(数据通信设备):如调制解调器、集线器。
  • 信号线:数据传输线、控制线、地线。
  • 接口:25针(20信号引脚)或9针(9信号引脚)。
  • 常用信号:TXD(发送数据)、RXD(接收数据)、RTS(请求发送)、CTS(清除发送)、DTR(数据终端就绪)、DSR(数据通信就绪)、GND(地线)。

这些组件确保可靠的串行数据交换。

九、DDR 接口相关了解多少?

DDR(Double Data Rate)是现代计算机和芯片中常见的内存接口,支持上升沿和下降沿数据传输,提高带宽与性能。以下是常见问题精炼总结:

  • DDR 接口是什么?

    一种高性能内存接口,通过双边沿传输数据,提供比 SDR 更高的带宽和效率。

  • DDR 接口的工作原理是什么?

    基于时钟信号同步读写,在上升沿和下降沿传输数据,时序需精确控制以确保稳定性。

  • DDR 接口的版本有哪些?

    包括 DDR、DDR2、DDR3、DDR4 和 DDR5,各版本差异在于带宽、时钟频率、时序和电气特性。

  • DDR 接口的时序有哪些要求?

    关键参数如 tRAS(行激活时间)、tRCD(行地址到列地址延迟)、tRP(行预充电时间)、tRFC(刷新周期)、tWTR(写后读延迟)、tRRD(行到行延迟),需按版本和场景优化。

  • DDR 接口的优化有哪些方法?

    包括提升时序精度、调整参数、增加通道/数据位宽;辅助技术如 ECC 纠错和信号增强,提高稳定性和可靠性。

(有的话会不断更新)

相关推荐
云安全干货局1 小时前
深度解析:高防 IP 如何实现 “隐藏源站 IP”?核心技术原理拆解
网络·网络安全·高防ip
北邮刘老师2 小时前
从SEO到ADO:智能体时代的流量密码
服务器·网络·数据库·人工智能·大模型·智能体·智能体互联网
..过云雨2 小时前
拆解 UDP 协议:从协议格式理解UDP
网络·网络协议·udp
Loo国昌2 小时前
【LangChain1.0】第二篇 快速上手实战
网络·人工智能·后端·算法·microsoft·语言模型
无忧智库2 小时前
一网统飞:城市级低空空域精细化管理与服务平台建设方案深度解析(WORD)
大数据·网络·人工智能
橘颂TA2 小时前
【剑斩OFFER】算法的暴力美学——力扣 692 题:前 K 个高频单词
网络·算法·leetcode·哈希算法·结构与算法
世人万千丶2 小时前
鸿蒙跨端框架 Flutter 学习 Day 4:网络交互——HTTP 请求基础与数据反序列化实战
网络·学习·flutter·ui·交互·harmonyos·鸿蒙