嵌入式面试题-4
常见面试题
说一说I2C的时序图,如何传输数据⭐⭐⭐⭐⭐
I2C总线只有两根双向信号线。一根是数据线SDA,另一根是时钟线SCL。
SDA:双向数据线,为OD (Open Drain,漏极输出) 门,与其它任意数量的OD与OC (Open Collector,集电极开路) 门成\线与\关系。
SCL:上升沿将数据输入到每个I2C从设备中;下降沿驱动I2C从设备输出数据。(边沿触发)
空闲状态:I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态。
起始信号:当SCL为高电平期间,SDA由高到低的跳变;
停止信号:当SCL为高电平期间,SDA由低到高的跳变;
然后我们来看看如何传输数据的,如图:
数据传输以字节为单位。
主设备在SCL线上产生每个时钟脉冲,将在SDA线上传输一个数据位,当一个字节按数据位从高位到低位的顺序传输完后,紧接着从设备将拉低SDA线,回传给主设备一个应答位(ACK),此时才认为一个字节真正的被传输完成。
当然,并不是所有的字节传输都必须有一个应答位,比如:当从设备不能再接收主设备发送的数据时,从设备将回传一个否定应答位。
I2C如何选择从设备⭐⭐⭐⭐
系统中的所有外围器件通常具有一个7位的从器件专用地址码,其中高4位为器件类型,由生产厂家制定,低3位为器件引脚定义地址,由使用者定义(I2C还支持10位寻址)。
说一说SPI总线⭐⭐⭐⭐⭐
SPI是串行外设接口。一 种同步串行接口技术,是一种高速的,全双工,同步的通信总线。
SPI的通信原理很简单,它以主从方式工作,这种模式通常有一个主设备和一个或多 个从设备,需要至少4根线,事实上3根也可以(单向传输时)。也是所有基于SPI的设备共有的,它们是SDI (数据输入)、SDO (数据输出)、SCLK (时钟)、CS (片选)。
- SDO/MOSI – 主设备数据输出,从设备数据输入;
- SDI/MISO – 主设备数据输入,从设备数据输出;
- SCLK – 时钟信号,由主设备产生;
- CS/SS – 从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时需要将从设备对应的片选引脚电平拉低或者是拉高。
说说SPI的四种工作模式,由什么决定?⭐⭐⭐
SPI总线有四种工作方式(SP0, SP1, SP2, SP3),其中使用的最为广泛的是SPI0和SPI3方式。SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟的极性和相位可以进行配置,如表格所示:
SPI模式 时钟极性 (CPOL) 时钟相位 (CPHA) 空闲状态下的时钟极性 采样 SP0 0 0 逻辑低电平 第一个跳变沿 (上升或下降) 数据被采样 SP1 0 1 逻辑低电平 第二个跳变沿 (上升或下降) 数据被采样 SP2 1 1 高电平 第二个跳变沿 (上升或下降) 数据被采样 SP3 1 0 高电平 第一个跳变沿 (上升或下降) 数据被采样 时钟极性 (CPOL) 对传输协议没有重大的影响。如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。
时钟相位 (CPHA) 能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA=0,在串行同步时钟的第一个跳变沿 (上升或下降) 数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿 (上升或下降) 数据被采样。
SPI主模块和与之通信的外设时钟相位和极性应该一致。
SPI接口有四种不同的数据传输时序,取决于CPOL和CPHL这两位的组合。
说说UART的数据通信格式⭐⭐⭐⭐⭐
在串口通讯的协议层中,规定了数据包的内容,它由起始位,主体数据,校验位以及停止位组成,通讯双方的数据包格式以及波特率要约定一致才能正常收发数据。
其中各位的意义如下:
- 起始位:先发出一个逻辑”0”信号,表示传输字符的开始。
- 数据位:可以是5~8位逻辑”0”或”1”。如ASCII码(7位),扩展BCD码(8位)。小端传输
- 校验位(可选):数据位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验)。不过可以不选。
- 停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
- 空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
说说串口的使用场景,你在什么场景下使用的串口?⭐⭐⭐
串口是计算机设备的通用接口,如鼠标、键盘等。
我一般是用来调试嵌入式系统时使用。
你一般使用串口,波特率设置多少?⭐⭐⭐
波特率:每秒传输的码元数。常用的波特率有4800、9600、19200、115200。
我平时使用的9600。
说说常用的数据校验算法:⭐⭐⭐⭐⭐
常用的数据校验算法:
剩余60%内容,订阅专栏后可继续查看/也可单篇购买
<p> - 本专刊适合于C/C++已经入门的学生或人士,有一定的编程基础。 - 本专刊适合于互联网C++软件开发、嵌入式软件求职的学生或人士。 - 本专刊囊括了C语言、C++、操作系统、计算机网络、嵌入式、算法与数据结构等一系列知识点的讲解,并且最后总结出了高频面试考点(附有答案)共近400道,知识点讲解全面。不仅如此,教程还讲解了简历制作、笔试面试准备、面试技巧等内容。 </p> <p> <br /> </p>