第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口输出电压稳定的问题,如何解决的
那么嵌入式中栈的工作机制是什么?(不会)
项目做了远程网络升级嵌入式,他就问我你有考虑过你的固件安全性问题吗?如果有其他人通过网络途径下载一个非官方的固件包,你怎么去判断?
-
51和32架构的区别
-
Stm32处理中断的过程
-
保护现场保护什么东西(寄存器和堆栈)
-
要保护那些寄存器?
-
Stm32是要中断嵌套的吗,什么时候需要什么时候不需要
-
Cortex-m系列使用浮点会对stm32中断效率产生什么影响(不清楚)
-
对嵌入式哪方面比较深刻,研究比较深入的
-
如何保证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