嵌入式八股 - ARM体系结构三

21、在编写IIC时,如果不能达到效果,应该怎么做?

可以考虑以下方面:

  1. 检查硬件线路是否正确,比如连线是否对应
  2. 查看数据手册,看看代码逻辑是否符合传感器数据读写序列
  3. 检查软件代码,主要是确认IIC时序等是否正确,比如各个部分延迟时间,起始信号之类

22、串口接收中断代码应该怎么开发?

通常遵循以下步骤:

  • 初始化串口硬件(波特率、数据位、停止位等)
  • 配置接收中断(使能中断源)
  • 编写中断服务程序 (ISR)(处理接收到的数据)
  • 实现数据缓冲机制(通常使用环形缓冲区)
  • 在主程序中处理接收到的数据

23、串口接收如果一个读一个写会有什么问题?

在串口通信中,如果一个任务负责写数据到缓冲区,另一个任务负责从缓冲区读数据,如果没有做好同步和缓冲设计,会出现写脏问题以及数据不一致的问题。

解决写脏问题可以使用环形缓冲区、进行临界区保护等方法。

24、SPI速率

SPI全双工同步传输,速度约有50Mbps,即约5.9MB/s,比I2C快。

25、UART速率

无限制,速度取决于波特率,常用9600bps(1.2KB/s)和115200bps(14.4KB/s)

26、RS232、RS485速率

RS232传输速率一般不超过20Kbps,最大距离不超过15m。

RS485最高传输速率10Mbps,抗干扰能力强,可以传距离可达千米。

27、什么是IIC死锁

IIC设备可能因为看门狗、手动按钮复位等异常复位导致IIC总线死锁产生。

IIC 死锁:数据线(SDA)被持续拉低为低电平,而时钟线(SCL)保持为高电平。由于IIC总线在空闲时要求SDA和SCL均为高电平,这种状态会让主设备误认为总线正被占用,从而无限期地等待总线释放,导致通信完全停滞。

发生原因:在主设备等待ACK时,如果这个时候主设备异常复位,SCL 就会被释放为高电平。此时,如果从设备没有复位,就会继续IIC的应答,将SDA一直拉为低电平,直到SCL变为低电平,才会结束应答信号。(如果SCL 为高,根据原理,SDA不能变化)

如何解决IIC死锁?

主要是软件恢复法和硬件恢复法

28、RS232 与 RS485介绍与区别

1)RS232

RS232 是现在常用的串行通信接口之一,其接口使用一根信号线和一根信号返回线而构成共地的传输形式。在使用时需要通过电平转换电路方能与TTL电路连接。

RS232最常见的物理接口是DB-9连接器,一个DB-9接口包含9个引脚,每个引脚都有特定的功能。但在许多简单的应用场景中,通常只需要连接三根线即可实现基本通信:

  • RXD: 接收数据
  • TXD: 发送数据
  • GND: 信号地

2)RS485

RS485是一种定义数字电路电气特性的串行通信标准,其规定了信号如何通过电线传输。它使用一对双绞线(A线和B线),通过测量两线之间的电压差来判断逻辑电平,这也使得它具有较强的抗干扰性。采用 RS485 进行传输时,同样需要增加电平转换电路。

RS232 和 RS485 的区别

  • 工作模式:RS232 为全双工,RS485 为半双工。
  • 传输方式:RS485是差分传输方式,RS232是单端传输方式。
  • 信号线:RS485接口一般只需二根信号线。RS-232 接口需要使用 RXD、TXD、GND 三条线 。
  • 抗干扰性:RS485接口是差分传输方式,抗噪声干扰性好。RS232接口使用一根信号线和一根信号返回线而构成共地的传输形式,这种共地传输容易产生共模干扰。
  • 传输距离:RS485接口传输距离相对远些,最大传输距离标准值为 1200 米。RS232传输距离有限,实际上最大传输距离 15 米左右。
  • 通信能力:RS485支持在一条总线上并联多个设备,标准规定最多可连接32个设备。RS232只允许一对一通信。
  • 传输速率:RS232传输速率较低,在异步传输时,波特率为 20Kbps。RS485 的数据最高传输速率为 10Mbps 。
  • 电气电平值:RS485的逻辑"1"以两线间的电压差为+(2-6) V 表示;逻辑"0"以两线间的电压差为-(2-6)V 表 示 。 RS-232 中逻辑“1”为 -3V 至 -15V,逻辑“0”为 +3V 至 +15V。

29、IIC和SPI

1)IIC

IIC是一种两线式串行总线,包含数据线(SDA)和时钟线(SCL),属于半双工通信,主要用于近距离、低速的芯片之间的通信。在使用IIC通信时,每个连接到总线上的设备都一个设备地址,用于后续设备之间通信选择。设备地址主要有7bit、10bit。需要注意的是IIC是一种多主机总线,每个连接总线的设备都可以作为主机和从机,只是同一时刻只能有一个主机。

关键通信机制

IIC的通信过程遵循严格的时序规则,由主机发起和控制。

1. 空闲状态

时钟线和数据线皆为高电平。

2. 起始与停止条件

  • 起始条件 :在SCL保持高电平期间,SDA线从高电平跳变为低电平。这标志着一次通信事务的开始,总线进入忙状态。
  • 停止条件:在SCL保持高电平期间,SDA线从低电平跳变为高电平。这标志着通信结束,总线释放,返回空闲状态。

3. 数据传输

为了保证数据被正确采样,协议规定:只有当SCL为低电平时,SDA线上的数据才允许改变。当SCL为高电平时,SDA线必须保持稳定,接收器在此期间读取数据。

4. 寻址与读写

IIC总线上的每个从设备都有一个唯一的地址。主机通过发送一个地址字节来呼叫特定的从设备。这个字节包含7位地址和1位读/写(R/W)位:

  • R/W = 0:表示主机将向从设备写入数据。
  • R/W = 1:表示主机将从从设备读取数据。

5. 应答机制 (ACK/NACK)

IIC协议内置了可靠的握手机制。每传输完一个字节,接收方必须在第9个时钟周期内发送一个应答信号。

  • 应答 (ACK):接收方将SDA线拉低,表示已成功接收该字节。
  • 非应答 (NACK):接收方保持SDA线为高电平,通常表示接收失败、设备忙或主机希望结束读取操作。

2)SPI

SPI 是一种高速的全双工、同步的通信总线,并且在芯片的引脚上只占用四根线,包括SS(从器件选择线)、MOSI (串行数据输出线)、MISO (串行数据输入线)和 SCK(同步串行时钟线)。SPI 是一主多从的总线,通常有一个主设备和一个或多个从设备。

四种工作模式

SPI协议没有规定统一的时钟行为,而是通过时钟极性(CPOL)和时钟相位(CPHA)两个参数来定义数据的采样时机。这两个参数的组合形成了四种工作模式,通信双方必须配置为相同的模式才能正常通信

  • CPOL:决定时钟线在空闲时是高电平还是低电平。
  • CPHA:决定是在时钟的第一个边沿(前沿)还是第二个边沿(后沿)采样数据。

模式

CPOL (极性)

CPHA (相位)

SCLK空闲状态

数据采样时刻 (边沿)

Mode 0

0

0

低电平

上升沿

Mode 1

0

1

低电平

下降沿

Mode 2

1

0

高电平

下降沿

Mode 3

1

1

高电平

上升沿

30、IIC和SPI对比

相同点

  • 均采用串行同步的方式
  • 均采用TTL电平、传输距离和应用场景类似
  • 均采用主从方式工作

不同点

  • IIC为半双工、SPI为全双工
  • IIC有应答机制,SPI没有应答机制
  • IIC通过向总线广播从机地址来寻址,SPI通过向对应从机发送使能信号来寻址
  • IIC的时钟极性和时钟相位相对固定,SPI时钟极性和时钟相位可调
#嵌入式软件八股##嵌入式##我的求职进度条##嵌入式软件##嵌入式面经#
嵌入式面试八股汇总 文章被收录于专栏

涉及嵌入式全方面知识。根据个人学习以及面试所得,并且加上自己见解、理解记忆方法。 大致内容:C、C++、ARM、QT、Linux驱动、FreeRTOS、Linux应用编程、数据结构、操作系统、计算机网络、算法以及其他嵌入式相关内容。 优势:专门适用于嵌入式软件岗位的面试高频内容总结,短时间内快速掌握重要面试内容

全部评论
点赞 回复 分享
发布于 今天 15:03 北京

相关推荐

评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务