第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

点赞(0) 打赏

评论列表 共有 0 条评论

暂无评论

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部