持续更新版本 嵌入式工程师常见面试题(17)


串/并:USART( / /)是一种同步串行通信接口,它支持串行和并行数据传输 。I2C(Inter- )是一种串行通信接口,只支持串行传输 。而USB(Bus)是一种串行总线,也支持串行数据传输 。速度:USART和I2C的速度通常较低,它们适合于低速应用 。而USB的速度相对较高,支持高速数据传输 。全/半双工:USART是全双工和I2C是半双工,而USB只支持全双工通信 。总线拓扑:USART和I2C都是点对点通信协议,可以支持多个设备之间的通信,但需要额外的控制器来管理通信 。而USB是一种树形总线结构,设备通过Hub连接,可以支持多个设备的连接和通信 。
综上所述,USART、I2C和USB在串/并、速度、全/半双工和总线拓扑等方面都存在差异,根据实际应用场景的需求来选择适合的总线接口 。
推荐博客地址:
4、单片机的SP指针始终指向:栈顶
单片机的堆栈指针(SP)始终是指向栈顶的 。
在单片机中,堆栈是一种内存区域,用于存储临时数据和地址 。堆栈指针(SP)是一个指向栈顶的寄存器,它指向当前栈顶元素的位置 。当新的元素被压入栈中时,堆栈指针会向下移动,指向新的栈顶位置;当元素被弹出栈时,堆栈指针会向上移动,指向下一个栈顶元素的位置 。
由于堆栈是一种先进后出(LIFO)的数据结构,所以堆栈指针始终指向栈顶,即最后一个压入栈的元素 。这样在访问栈顶元素时,只需要通过堆栈指针就可以快速定位到栈顶元素,而不必遍历整个栈 。
在单片机中,堆栈通常用于存储程序的临时变量、函数参数和返回地址等,它的使用可以大大简化程序的编写和执行效率 。
5、FIQ中断向量入口地址
FIQ(FastQueue)是 ARM 架构中的一种中断机制,用于处理高优先级的中断 。FIQ 的中断向量入口地址是预先定义好的,根据ARM架构的不同版本,FIQ 的中断向量入口地址可能有所不同 。
在 ARMv7 和 ARMv8 架构中,FIQ 的中断向量入口地址为 。
在 ARMv9 和A RMv10 架构中,FIQ 的中断向量入口地址为 。
需要注意的是,这些中断向量入口地址是在内核空间中定义的,用户空间中无法直接访问 。在编写使用 FIQ 的中断处理程序时,需要按照对应架构的规范来进行编写 。
6、全双工总线类型
全双工总线是指数据可以在两个方向上传递,即可以同时进行发送和接收操作 。以下是一些常见的全双工总线类型:
SPI总线():是一种常用的全双工总线,它采用串行通信协议,可以在主设备和从设备之间进行双向数据传输 。SPI总线通常使用4条线,包括主设备到从设备的数据传输线(MOSI)和从设备到主设备的数据传输线(MISO) 。I2C总线(Inter- ):是一种低速半双工总线,它采用串行通信协议,可以在主设备和从设备之间进行双向数据传输 。I2C总线通常使用两条线,一条是数据线SDA,另一条是时钟线SCL 。USB总线(Bus):是一种高速全双工总线,它采用串行通信协议,可以在主机和设备之间进行双向数据传输 。USB总线通常使用4条线,包括电源线、数据线、地线和ID线 。以太网():是一种高速全双工总线,它采用并行通信协议,可以在网络设备之间进行双向数据传输 。以太网通常使用多条线,包括传输数据的双绞线和传输控制的LED线和CRS线等 。
这些全双工总线类型都有其独特的特点和应用场景,根据实际需求选择适合的总线类型 。
7、l2C协议时序图和SPI的时序图
I2C和SPI都是嵌入式非常基础且必备的通信协议,内容篇幅偏长,建议大家好好掌握!
8、CAN协议
CAN( Area )协议是一种用于设备间通信的高效、可靠、安全的通信协议 。以下是一些关于CAN协议的关键信息: