嵌入式软件工程师面试题——嵌入式专题 (五十二)

 

1.IO口工作方式

答案:

上拉输入、下拉输入、推挽输出、开漏输出。
 
 

2.请说明总线接口USRTI2CUSB的异同点

答案:

(串/并、速度、全/半双工、总线拓扑等)
总线接口串/并同步/异步速率工作方式用线总线拓扑结构通信距离
UART异步

波特率设置

全双工

2线

Rx、Tx

RS485支持总线式、星形、树形

最远1200

I2C同步半双工

2线

SDA、SCL

总线型
SPI同步全双工

3线或4线

SCLK、SIMO、

SOMI、SS(片选)

环形
USB同步半双工

4线

Vbus(5V)、GND、D+、D-(3.3V)

星形

 

 

 

 

 

 

 

 

 

 

3.IIC协议时序图

答案:

必须会画出来
 
IIC协议有两根线,一根SCL时钟线,一根SDA数据线,如图可以看到开始信号和结束信号的电平状态。 开始后,因为IIC总线可以挂在很多设备(不超过8个),所以先发送一个设备地址,选中这个设备,设备地址最后一位代表了是写还是读。选中设备后,再发送寄存器地址,代表选中某个寄存器,再开始传输数据。
 
八位设备地址=7位从机地址+读/写地址,
 
再给地址添加一个方向位位用来表示接下来数据传输的方向,
 
0表示主设备向从设备(write)写数据, 1表示主设备向从设备(read)读数据。
 

4c2c29ed61ce4dd3ac6d8157bea9b7a2.png

 

开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
 
结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
 
应答信号:接收数据的 IC 在接收到 8bit 数据后,向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
 
IIC信号在数据传输过程中,当SCL=1高电平时,数据线SDA必须保持稳定状态,不允许有电平跳变,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。SCL=1时 数据线SDA的任何电平变换会看做是总线的起始信号或者停止信号。
 
 

4.单片机的SP指针始终指向

答案:
 
栈顶。
 

5.IIC总线在传送数据过程中共有三种类型信号

答案:
 
它们分别是:开始信号、结束信号和应答信号。
 

6.FIQ中断向量入口地址,IRQ呢

答案:
 
FIQ和IRQ是两种不同类型的中断,ARM为了支持这两种不同的中断,提供了对应的叫做FIQ和IRQ处理器模式(ARM有7种处理模式)。
 
FIQ的中断向量地址在0x0000001C,而IRQ的在0x00000018。

 

7.SPI四种模式,简述其中一种模式,画出时序图

答案:

在芯片资料上极性和相位一般表示为CPOL(Clock POLarity)和CPHA(Clock PHAse), 极性和相位组合成4种工作模式。
 CPOLCPHA
模式100
模式201
模式310
模式411

 

 
 
 
 
 
 
 
 
 
 
 
spi四种模式SPI的相位(CPHA)和极性(CPOL)分别可以为0或1,对应的4种组合构成了SPI的4种模式(mode)
 
时钟极性CPOL: 即SPI空闲时,时钟信号SCLK的电平(1:空闲时高电平; 0:空闲时低电平) 时钟相位CPHA: 即SPI在SCLK第几个边沿开始采样(0:第一个边沿开始; 1:第二个边沿开始)
 
sd卡的spi常用的是mode 0 和mode 3,这两种模式的相同的地方是都在时钟上升沿采样传输数据,区别这两种方式的简单方法就是看空闲时,时钟的电平状态,低电平为mode 0 ,高电平为mode 3。
 
 

8.讲一讲冯诺依曼和哈佛体系的区别

答案:
 
哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。目前使用哈佛结构的中央处理器和微控制器有很多,ARM9、ARM10和ARM11,51单片机属于哈佛结构。
 
冯·诺伊曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。
 

9.USART为什么一次只能发送一个字节? 先发高位还是低位

答案:

考虑数据准确性,时间误差的累计。

比如你发送的数据为1111 0000 那么接收方如何知道你连续发送了几个1几个0,这个时候就需要波特率,通过计算时间可以知道你发送了几个连续1或0,因为波特率规定了每发一个Bit的时间,但是发送方和接收方可能存在时间误差,会导致累计时间误差,导致数据不正确,所以这个时候就需要规定每次只能发送一个字节数据,就可以避免累计时间误差,这也是异步导致的。

先发低位。

10.串口通信存在的问题

答案:

1)串口只是规定了协议,即帧格式,用高电平表示1,低电平表示0,但是在不同的处理器中这个定义是不一样的,电气特性不一样,所以这两个处理器是不能直接连接的。

2)抗干扰能力差,使用的是 TTL 信号表示0和1。

3)通信距离短,只能用于一个电路板上的两个不同芯片之间的通信。

由于串口通信存在的问题就出现了RS232、RS485协议,但是软件编程还是串口那样编程,因为改的只是硬件上的电性。

 

  • 21
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值