嵌入式 单片机面试 通信协议常见问题答案 串口通信 IIC通信 SPI通信 协议解析讲解 RS232 RS485 协议 IIC总线

第0章-单片机 & 通信协议 & 其他

这个文章主要讲串口,RS232 \RS485 下一篇讲解IIC SPI等

单片机

5.MCU启动流程

6.DSP指令

5.MCU怎么选型,STM32F1和F4有什么区别

6.外部RAM和内部RAM区别,怎么分配

7.外部总线和内部总线区别

8.DSP指令

9.MCU上的固件,数据是怎么分配的

10.MCU启动流程

11.IAP是怎么升级的,突然断电怎么办

为什么用的CAN总线

你说一下spi和 i2c和 UART的 各自的工作方式优缺点?

一些项目中的问题,遇到了哪些问题,如何解决的

、有没有遇到过IO口输出电压稳定的问题,如何解决的

那么嵌入式中栈的工作机制是什么?(不会)

项目做了远程网络升级嵌入式,他就问我你有考虑过你的固件安全性问题吗?如果有其他人通过网络途径下载一个非官方的固件包,你怎么去判断?

  1. 51和32架构的区别

  2. Stm32处理中断的过程

  3. 保护现场保护什么东西(寄存器和堆栈)

  4. 要保护那些寄存器?

  5. Stm32是要中断嵌套的吗,什么时候需要什么时候不需要

  6. Cortex-m系列使用浮点会对stm32中断效率产生什么影响(不清楚)

  7. 对嵌入式哪方面比较深刻,研究比较深入的

  8. 如何保证buffer读和写的互斥

    四旋翼中的姿态解算算法是如何运行的?两个部分:一个是数据滤波,一个是姿态解算Mahony。表达的有点乱

    ​ PID算法的实现是库还是自己写?自己写的,算法不难,难的是参数调试

    ​ 讲一下PID算法的实现过程?

    ​ 介绍一下智能遥控?两个部分:红外遥控器、在线语音识别(面试官走个流程,对这个项目不感兴趣)

    ​ (以上个人感觉,更多的是考察项目是否是你做的,以及解决问题、与人沟通的能力)

    你未来发展linux,那为啥投我的单片机?

    单片机使用过什么外设?

    如何使用软件实现iic

    spi有哪些信号线

    介绍项目,问软件部分的结构框架

    1.问传感器测力的原理,应变片怎么把力转换成电信号,我画了图给他看。

    2.扣了一下我用的AD转换芯片的问题,问转换完成一次时间是多少,问主控芯片频率,大概意思就是是否来得及读取信号?

    3.还问了数字滤波后信噪比改善多少。追问怎么知道真值的,我说自己设计的标定平台,加上指定大小和方向的力,算的是一个相对值,后面需要解耦计算的。

    4.问项目里面,软件代码问题,怎么调试?

    .单片机启动程序,在执行main之前的是什么。

    3.keil怎么使用库。

    6.x86汇编和Arm汇编有什么区别?

处理器架构

6.x86汇编和Arm汇编有什么区别?

  • 51和32架构的区别
  • MCU可以运行Liunux吗,为什么
  • STM32启动过程(上电开始->main执行的过程)
  • 中断响应执行流程,中断上下文指的什么,保存中断上下文是完成的什么操作,以STM32为例,都有哪些寄存器被保存
  • STM32 F1和F4的区别
  • Cotex-M系列使用浮点运算对STM32中断效率会产生什么影响
  • STM32常见寄存器:R13(SP,堆栈指针),R14(LR,连接寄存器),R15(PC程序计数器)作用
  • 什么是大小端模式

问驱动程序里面,如果有一个buffer,在不同场景下需要定义不同大小,怎么办?

*、芯片选型考虑哪些因素?

*、系统用了哪些外设?

*、摁键防抖如何实现,该线程优先级如何设置?

通信协议

单片机类的

*、对哪些通信接口熟悉?介绍一下SPI;

4.通信协议,SPI IIC

信号量和互斥量,用互斥量实现信号量值为10的情况

5、相关的通信协议I2C;SPI;串口有没有用过

6、讲一下串口通信协议,串口通信如何校验,原理

项目中有没有用到I2C,主要用在哪方面,讲一下选择I2C的原因

\9. Uart是怎么样的接口

\10. Uart异步,不需要时钟,那为什么还要设定波特率

\11. Spi跟uart在使用上有什么区别

\12. Spi和uart需不需要区分主从

\13. Spi的从是否可以主动读写主的数据,怎么做到的

\14. 写iic、spi、uart驱动需要哪些注意的地方

\15. Iic、spi、uart接收方式有三种,轮询,中断和DMA,如果是中断收到的数据要谁去申请谁去释放

\16. 中断里数据往一个buffer去放,这个buffer要谁去申请

SPI四种模式

串口发送一个字节多少位

在做硬件驱动的时候,碰到的比较困难的问题? 项目中有制定通讯协议,就问有出现过什么通讯错误,出现错误了怎么办?通讯丢失怎么办?

  • Uart异步,不需要时钟,那为什么还要设定波特率
  • SPI有哪四种工作模式:根据极性和相位组合有四种模式

简单说一下spi协议,spi协议最大传输速度。

IIC协议内容、IIC协议的最大通信速率、你觉得什么因素限制了IIC速度,

spi协议

3.项目中用到了spi,spi有几种工作模式,简单介绍一下。

3.SPI是什么?有几条线?几种模式?

4.使用IO模拟过SPI吗?

网络协议

这是C++岗位的

TCP,UDP,稳定性,区别,适用场景。

7.路由相关问题

1.问TCP,UDP使用,在项目里面有没有用过,怎么用,三次握手,四次挥手,为什么断开连接是四次?

2.问一方断开,另一方还连接的情况,是否可以长期存在?调用什么函数断开连接?有没有只断开一方连接的函数?

3.问三次握手为什么ACK信号是SYN信号值+1?

、5.问阻塞,非阻塞,epoll,多路复用。

6.问到TCP服务器客户端编程,怎么处理多个客户端?

7.问到http搜索百度,有哪些过程?

嵌入式经典通信总线协议精讲

UART协议

UART是低位先发的 LSB在前

通讯基础

单工和双工

单工就是只能A发到B

双工就是A能发B,B也可以发给A

  • 半双工A-B 或者B-A 只能瞬间进行一项
  • A 发B同时B B也可以发给A

波特率

波特即指每秒传输1个码元符号(通过不同的调制方式,可以在一个码元符号上负载多个bit位信息),1比特每秒 是指每秒传输1比特(bit)。

UART帧格式

每秒发送多少位

UART在通信空闲的时候是高电平。

串口为什么一次发的比特数少?时钟不同步,所以少发一点,减少累计误差。

一些底层原理

发送数据和接受数据包含FIFO缓冲队列和数据移位器。

发送时:传送的数据写入缓冲器FIFO,然后复制到传输移位器。

接收时: 传送的数据写入缓冲区FIFO,然后复制到传输移位器。

寄存器

!!!设置寄存器的实例

实例1

下面是设置为0X22

**!!!**就是设置寄存器先是与0 相"与"就会让相应的位置清零。然后再使用与1 想或的方式置为相应位置。


实例2

!!!读某个寄存器的方式

寄存器与上一个对应的位置为1 的

输入输出重定向

发送字符串的函数,根据\0判断字符结束

RS232、RS485协议

是电气方面的协议

是串口的加强版

RS232

纯电路方便的,编程和串口没有区别

RS485

RS485的不同

RS485是串口在电气方面的改进,使用差分的方式传输信号。

因为使用两脚差分,所以485只能半半双工,不能同时双向传输了,编程也会和串口有点不同

而且485电平也是兼容串口电平的

两线的485是半双工的

485的优势

485的主从机制可以参考IIC

相关推荐
我叫黑大帅9 小时前
Go 语言并发编程的 “工具箱”
后端·面试·go
H5开发新纪元12 小时前
Nginx 部署 Vue3 项目完整指南
前端·javascript·面试
Lee川13 小时前
JavaScript 继承进化史:从原型链的迷雾到完美的寄生组合
前端·javascript·面试
前端Hardy14 小时前
别再忽略 Promise 拒绝了!你的 Node.js 服务正在“静默自杀”
前端·javascript·面试
前端Hardy14 小时前
你的 Vue 组件正在偷偷吃掉内存!5 个常见的内存泄漏陷阱与修复方案
前端·javascript·面试
UrbanJazzerati14 小时前
当网页翻页时,页码藏在哪里?——一次对分页机制的解密之旅
后端·面试
着迷不白15 小时前
Linux单用户模式密码修改与硬盘注释指南
面试
有意义16 小时前
深度拆解分割等和子集:一维DP数组与倒序遍历的本质
前端·算法·面试
我叫黑大帅18 小时前
Go 语言中处理「未知类型数据」的两大核心手段
后端·面试·go
拉不动的猪19 小时前
重温Vue异步更新队列
前端·javascript·面试