先说说本人的背景,我,一个大专人,从事嵌入式开发两年了,之前在一家公司是负责单片机和物联网开发的。2020年年底我选择了裸辞(主要想出去玩)。直到春节结束后,出来找工作。
我的技术栈:单片机(51、stm32)、freertos、MQTT,懂硬件。
首先,每一家的公司方式面试不一样, 前一晚先复习一些C语言基础,我面试的公司有十几家,出的题基本上是大同小异,参考下面的链接:
上面两套题是好经典的,我面试了十几家公司,有三分之一都在里面出题。不过,前提是你首先得有个底子,会变通。
然后提前半个月刷一下 leetcode,找找写代码得感觉。主攻《剑指offer》。
数据结构在嵌入式占的比例往往是一小部分,面试官更加看重的是具体的实际项目经验。一些基本的通讯协议,比如I2C、SPI、UART,把那些时序图、细节都得记好,我是吃过这个亏的,虽然面试官不会叫你手撕I2C协议,但是他会问的很细很细,比如说应答信号的时候SDA的电平是怎么变化的,答不出来就尴尬啦。
我下面对一些常用的协议做一个总结
I2C
(1)半双工模式。
(2)起始信号 SCL高电平期间 SDA产生下降沿。
(3)ACK应答信号 SCL高电平期间 SDA保持低电平。
(4)NACK应答信号 SCL高电平期间 SDA保持高电平。
(5)数据流 起始信号 +从机地址 + 发送数据标志位 + 应答信号+ 数据 +接收数据。。。应答信号+结束信号。
(6)空闲信号 SCL SDA 都位高电平。
(7)结束信号 SCL位高电平期间 SDA给一个上升沿信号。
SPI
(1)高速全双工的同步通讯总线
(2)4根总线 分别是
MISO 主设备数据输入,从设备数据输出 MOSI 主设备数据输出,从设备数据输入 SCLK 时钟信号,由从设备产生 CS 片选信号 由主设备控制 拉低设备CS线才可以进行读写设置,
(3)SPI的四种操作模式 模式0 模式1 模式2 模式3 他们的区别是?
CPHA 第一个跳变沿和第二个跳变沿 读取数据。
CPOL 0和1决定时钟空闲电平。
(4)硬件SPI和软件SPI的区别有哪些
硬件SPI效率比软件SPI效率要高 硬件SPI是直接读取寄存器的,软件
需要模拟时钟拉高拉低,但是硬件的看其设备有没有支持,软件的话一般IO口都可以用。
(5)缺点 没有应答机制 只支持单个主机
联系客服