面试中关于SPI常见问题

什么是SPI?

SPI接口是Motorola 首先提出的全双工三线同步串行外围接口,采用主从模式(Master Slave)架构;支持多slave模式应用,一般仅支持单Master。时钟由Master控制,在时钟移位脉冲下,数据按位(bit)传输,高位在前,低位在后(MSB first);SPI接口有2根单向数据线,为全双工通信,目前应用中的数据速率可达几Mbps的水平。

SPI一般使用4条线通信分别是?

答:
1、 MISO ————— 主设备数据输入、从设备数据输出
2、 MOSI ————— 主设备数据输出、从设备数据输入
3、 SCLK ————— 时钟信号、由主设备产生
4、 NSS(CS) ————– 从设备片选信号,由主设备控制

SPI有四种操作模式,模式0、模式1、模式2、模式3。它们的区别是?

答:SPI模块为了和外设进行数据交换,根据外设工作要求,其输出串行同步时钟极性和相位可以进行配置,时钟极性(CPOL)对传输协议没有重大的影响。

如果CPOL=0,串行同步时钟的空闲状态为低电平;如果CPOL=1,串行同步时钟的空闲状态为高电平。

时钟相位(CPHA)能够配置用于选择两种不同的传输协议之一进行数据传输。如果 CPHA=0,在串行同步时钟的第一个跳变沿(上升或下降)数据被采样;如果CPHA=1,在串行同步时钟的第二个跳变沿(上升或下降)数据被采样。

SPI主模块和与之通信的外设音时钟相位和极性应该一致。

硬件SPI和软件模拟SPI的区别有哪些?

答:硬件SPI的效率要比软件模拟SPI高,写程序的时候只要把要发的数据写在寄存器里,硬件就会自动给你发了,软件模拟SPI则需要器实现时钟的拉高拉低,数据串行输出等等。硬件SPI必须要处理器支持才可以用,软件SPI就不需要特定的要求了,一般IO口就可用。

简单手撕程序

从下面这个图分析循环移位寄存器,从高位开始发送,接收到寄存器的低位,然后通过每次移位,完成master和slave的8bit数据交换,也就完成数据的读写。

//GPIO模拟SPI(同时读写,写一个数据,通过返回一个数据)
uchar SPI_RW(uchar byte)//byte是写的数据,返回值是需要读的数据
{
uchar bit_ctr;
for(bit_ctr=;bit_ctr<8;bit_ctr++)
{
MOSI=(byte&0x80);//写,移动最高有效位到MOSI线上
byte=(byte<<1);//左移一位
SCK=1; //时钟线置高
byte|=MISO;//读,取当前MISO线上的值,放在byte最低位上
SCK=0;//时钟线置低
}
return(byte);
}  

【嵌入式工程师面试高频问题】你知道SPI吗相关推荐

  1. 【嵌入式工程师面试高频问题】你知道IIC吗(附程序说明)

    在嵌入式面试中,需要能够熟悉IIC的工作原理,使用场景,并且需要能够手撕IIC的时序图和写一个IIC读写程序. IIC的一些工作原理.时序图在<沧小海详解面试的必答题--I2C协议>这篇博 ...

  2. 小米嵌入式工程师面试-心得

    小米Linux嵌入式C工程师面试-心得 前言:今年有幸参加小米的面试和笔试,大学刚毕业那一会儿,特别想进小米,但是投的简历都打水漂了,估计网申没过把.想进小米,主要因为个人原因,我的第一部智能手机就是 ...

  3. 嵌入式工程师面试知识总结

    C/C++语言 指针 1. 数组指针 与 指针数组,函数指针 与 指针函数 区别? 答: 函数指针指向函数的指针变量,即本质是一个变量. 指针函数是指返回值是指针的函数,即本质是一个函数. 数组指针是 ...

  4. 嵌入式工程师的面试指南

    文章来源:电子通信.嵌入式工程师的面试指南 今天我们聊聊电子通信,嵌入式工程师面试的那些事. ... 一.公司面试求职者的目的是什么 寻找备胎的公司. 团队大体成形,有缺人的hc名额,但是项目不急的公 ...

  5. 【转载】电子通信、嵌入式工程师的面试指南

    转自:​https://zhuanlan.zhihu.com/p/63785660 火哥自从校招找工作到现在,面试过不下50家公司,拿到过不少于30个offer.虽然不能是百战百胜,但是也还算有着较高 ...

  6. 28335接两个spi设备_IIC和SPI如此流行,谁才是嵌入式工程师的必备工具?

    IICvs SPI 现今,在低端数字通信应用领域,我们随处可见 IIC (Inter-Integrated Circuit) 和 SPI (Serial Peripheral Interface)的身 ...

  7. 电子通信、嵌入式工程师的面试指南

    作者:火哥 授权转载自公众号嵌入式老鸟的职场之道(id:ict_embedded) 一.公司面试求职者的目的是什么 <孙子兵法>有云知己知彼,百战不殆,当然百战不殆并不等于百战百胜,而是说 ...

  8. 嵌入式工程师的经典面试题目及答案

    上个星期,去深圳一家搞ARM开发的公司面试,HR叫我做了一份卷子,里面都是C编程,心中暗喜,因为这些题基本上都在程序员面试宝典里见过.后来回到学校,在网上搜索,原来这些题都是嵌入式工程师的经典面试题目 ...

  9. 作为面试官,我是如何面试嵌入式工程师的?

    关注.星标公众号,直达精彩内容 来源:网络素材 作者:王科岩 提起面试大家都不会陌生,我们有时是参加面试,有时也需要面试别人,那么什么样的面试是一次高效有价值的面试呢?我在最近2年的面试中总结了以下几 ...

最新文章

  1. 替代还是扩展:云的下一站真是雾计算?
  2. JavaScript 中的return true 和return false
  3. eventEmitter3源码分析与学习
  4. 如何用python创建一个下载网站-详解如何用python实现一个简单下载器的服务端和客户端...
  5. 计算机将成为学生们的老师英语,重庆英语教师
  6. 遇到的浏览器问题总结
  7. C语言课后习题(1)
  8. 如何使用python装饰器_Python学习之如何使用装饰器 @decorator
  9. string取某个符号后面的的_String.replace 用的不对性能可能差 10 倍,你用对了吗?...
  10. 证件照处理:一寸照片换底色
  11. medsem-中介效应:基于结构方程模型SEM的中介效应分析
  12. 《Hexo: 从零开始编写自己的主题》2. 入门Hexo主题编写
  13. HTML5系列代码:Visual Studio Code(简称 VS Code)是一个由微软开发
  14. 谈谈This对象的理解
  15. 钟平逻辑英语语法_关于钟平的逻辑英语
  16. 【翻译】代码指针完整性——Code Pointer Integrity
  17. ps中颜色和图片本身颜色不一样,白色呈米色
  18. 软件行业职位及相关缩写
  19. MMC5603NJ地磁传感器(指南针示例)
  20. 运营级低延时网络直播平台建设解决方案

热门文章

  1. android自定义tab的分隔符,TabView中的分隔符
  2. linux cp后文件变大,使用 rsync 复制大文件的一些误解 | Linux 中国
  3. python s=1*2-2*3+ 3*4-4*5+..+(-1)m1XnX
  4. Linux服务之SSH
  5. atitit.细节决定成败的适合情形与缺点
  6. javascript使用闭包模拟私有属性和方法
  7. InputStreamReader和 OutputStreamWriter
  8. 信息安全系统设计基础第八周期中学习总结—20135227黄晓妍
  9. spring Mvc 执行原理 及 xml注解配置说明 (六)
  10. TPT:中科院等提出用于VideoQA的跨模态交互时间金字塔Transformer