一.ARM接口技术

IIC总线理解

IIC总线是一种串行总线,用于连接微控制器及其外围设备,它具有如下特点。

(1)IIC总线有两条线:一条串行数据线(SDA),一条串行时钟线(SCL)

(2)每个连接到总线的器件都可以使用软件根据它唯一的地址来识别

(3)传输数据的设备间是简单的主/从关系

(4)主机可以用作主机发送器或者主机接收器

(5)它是一个真正的多主机总线,两个或者多个主机同时发起数据传输时,可以通过冲突检测和仲裁来防止数据被破坏,IIC的仲裁机制: 遵循“低电平优先”的原则,即谁先发送低电平谁就会掌握对总线的控制权。

(6)串行的8位双向数据传输,位速率在标准模式下可达100kbit/s,在快速模式下可达400kbit/s,在高速模式下可达3.4Mbit/s

IIC总线在传送数据过程中共有三种类型信号,开始信号、结束信号和响应信号

(1)开始信号:SCL为高电平时,SDA由高向低跳变,开始传输数据

(2)结束信号:SCL为高电平时,SDA由低向高跳变,结束传输数据

(3)响应信号(ACK):接收器在接收到8bit数据后,在第9个时钟周期,拉低SDA电平一段时间作为应答

注意:

SDA上传输数据必须在SCL为高电平期间保持稳定,SDA上的数据只能在SCL为低电平期间变化,主机接收器在接收最后一个字节后,也不会发出ACK信号哦。于是从机发送器释放SDA线,以允许主机发出结束信号结束传输。

SPI总线理解

SPI串行外围设备接口。为微控制器和外围设备芯片之间提供一个低成本、易使用的接口,这种接口可以用来连接存储器、AD转换器、DA转换器、实时时钟、LCD驱动器、传感器、音频芯片、甚至其他处理器。

与标准的串行端口不同,SPI是一个同步协议接口,所有的传输都参照一个共同的时钟,中同步时钟信号由主机产生。接收数据的外设使用时钟对串行比特流的接收进行同步化。可能会有许多芯片连接到主机的同一个SPI接口上,这时主机通过触发从设备的芯片的片选信号引脚来悬着接收数据的从设备,没有被选中的外设将不会参与SPI传输。

SPI主要使用4个信号:

主机输出/从机输入(MOSI)

主机输入/从机输出(MISO)

串行时钟(SCLK/SCK)

外设片选(CS)

MOSI信号由主机产生、从机接收。在有些芯片上,MOSI只被简单标位串行输入(SI),或者串行数据输入(SDI)。MISO信号由从机产生,不过还是在主机的控制下产生。在一些芯片上,MISO有时被称为串行输出(SO),或者串行数据输出(SDO)。外设片选信号通常只是由主机的备用I/O引脚产生。

主机和从机都包含一个串行移位寄存器,主机通过向它的SPI串行寄存器写入一个字节发起一次传输。寄存器通过MOSI信号将字节传送给从机,从机也将字节的移位寄存器的内容通过MISO信号线返回给主机。这样两个移位寄存器中的内存就被交换了。从机的写操作和读操作是同步完成的,所以SPI是一个很有效的协议。

如果只是写操作,主机只需要忽略收到的字节;反过来,如果主机需要读取从机的一个字节,就需要发送一个字节来引发从机的传输。

通过SPI总线,在主机在从机之间传输数据,必须保证主机发出的时序和从机所要求的时序一致才可以。在这里,常常我们会说到两个概念:时钟极性和时钟相性。

(1)时钟极性:CPOL,指SPI的CLK空闲时的电平,是0(低电平)还是1(高电平)

(2)时钟相性:CPHS,指数据采样的时机,是在CLK的第一个边沿还是第二个边沿。CPHA=0,CLK的第一个边沿采样,CPHA=1时,时钟的第二个边沿采样。(时钟指有效时钟,即与CLK空闲时电平相反)。

对于:CPHA=0,表示第一个边沿:

对于CPOL=0,SPI的CLK空闲时是低电平,第一个边沿就是从低变到高,所以是上升沿;
对于CPOL=1,SPI的CLK空闲时是高电平,第一个边沿就是从高变到低,所以是下降沿;

CPHA=1,表示第二个边沿:

对于CPOL=0,SPI的CLK空闲时是低电平,第二个边沿就是从高变到低,所以是下降沿;
对于CPOL=1,SPI的CLK空闲时是高电平,第一个边沿就是从低变到高,所以是上升沿;

IIC和SPI的不同

1、IIC总线是半双工,2根线SCL,SDA。SPI总线是全双工,4根线SCK,CS,MOSI,MISO

2、IIC总线是多主机纵向,通过SDA上的地址信息来锁定从设备。SPI总线只有一个主设备,主设备通过CS片选来确定从设备

2、IIC总线传输速度在100K~4Mbps。SPI总线传输速度更快,可以达到30MHZ以上。

4、IIC总线空闲状态下SDA SCL都是高电平。SPI总线空闲状态MOSI MISO也都是SCK是由 CPOL决定的

5、IIC总线SCL高电平时SDA下降沿标志传输开始,上升沿表示传输结束。SPI总线CS拉低标志传输开始,CS拉高标志传输结束

6、IIC总线是SCL高电平采样。SPI因为是全双工,因此是边沿采样,具体根据CPOL和CPHA决定。

7、IIC总线和SPI总线数据传输都是MSB在前,LSB在后。

8、IIC总线和SPI总线时钟都是主设备产生,并且只在数据传输时发出时钟

9、IIC总线读写时序比较固定统一,设备驱动编写方便,SPI总线不同从设备读写时序差别较大,因此必须根据具体的设备datasheet来实现读写,相对复杂一点。

UART是异步收发传输器,是设备进行异步通信的关键模块。UART负责处理数据总线和串行口之间的串/并,并/串转换,并规定了帧格式;通信双方主要采用相同的帧格式和波特率,就能在未共享时钟信号的情况下,仅用两根信号线完成通信过程,因此也成为异步串行通信。

ARM面试总结(1)相关推荐

  1. AMBA——slave的HREADY信号

    在前几天的ARM面试中,被问到总线架构,主要是AMBA那一套东西.对于AMBA之前上课学过一点,但很肤浅.为了面试上网查了一下.也看了部分协议补充了一下,但是接触的少,理解的不深入,被问到之前没遇到的 ...

  2. 嵌入式软件工程师笔试面试指南-ARM体系与架构

    哈喽,大家好.我终于回来了!19号刚提交完大论文,就被抓去出差了,折腾了整整一周,26号晚上,才回到学校.鸽了好久都没更新干货了.今天更新一篇关于Arm的笔试面试题目. 文章目录 ARM体系与架构 硬 ...

  3. 嵌入式面试知识点总结 -- ARM篇

    一.交叉编译与移植 问题: 问题一:简单介绍一下交叉编译与移植? 解答: 参看:S5PV210开发 – 交叉编译器 (1)下载安装交叉编译器 (2)增加/etc/profile环境变量 在最末尾添加: ...

  4. 133道Java面试题及答案(面试必看),arm架构linux系统

    1)Java 中能创建 volatile 数组吗? 能,Java 中可以创建 volatile 类型数组,不过只是一个指向数组的引用,而不是整个数组.我的意思是,如果改变引用指向的数组,将会受到 vo ...

  5. iOS开发-面试总结(九)

    iOS面试指导 一 经过本人最近的面试和对面试资料的一些汇总,准备记录这些面试题,以便ios开发工程师找工作复习之用,本人希望有面试经验的同学能和我同时完成这个模块,先出面试题,然后会放出答案. 1. ...

  6. Flutter面试常见开发问题

    本文主要介绍Flutter面试常见开发问题 Flutter 使用了一种全新的方法,您可以使用 widgets代替 Views .Android 中的 View 主要是布局的一个元素,但在 Flutte ...

  7. 日常生活 -- 面试思考

    最近在找工作.跟一些公司的技术人员沟通了很多,了解到自己的不足. 要学和总结的东西太多了. 1.实时操作系统我只用了ucosii,那么freertos该怎么实现,还有一款国产的系统,RT-Thread ...

  8. 分享一些面试中的经验和心得

    " 本文作者在2019年实习和秋招中面了10多家公司,只吃过一次拒信,拿到的offer中不乏一些竞争非常激烈的外企与国内大厂的ssp,而且开发/算法的offer都有.值得一提的是作者本科并非 ...

  9. java arm 编译器下载_最全盘点:18款在线C/C++/Py/Java编译器,一个比一个强大(附地址)...

    1.Ideone Ideone是C / C ++,Java,PHP,Python,Perl和40+编译器和解释器,支持其他的60种语言.这个工具提供许多强大的功能,允许程序员快速高效的编译源代码.在编 ...

最新文章

  1. 【PHP 每日函数】第 03 周期
  2. Python 基础篇-whl文件怎么安装
  3. python standard lib_跟Python Standard Library混个脸熟(一)
  4. 深入理解分布式技术 - Redis 分布式锁解决方案
  5. 问题 1047: [编程入门]报数问题
  6. 新东方面试知识点记录
  7. 阿里云印尼大区开服,助力“一带一路”发展数字经济
  8. 95-150-015-源码-Sink-SinkFunction
  9. 轻松八句话 教会你完全搞定MySQL数据库(基础)
  10. 华为澳大利亚大动作,终止4.9亿投资;iPhone 12 或10月13日发布;Swift正式登陆Win 10 | 极客头条...
  11. php 生产环境 测试环境 同步,开发 RoR PHP Project,测试环境、生产环境部署相关问题...
  12. 手机连接投影机的步骤_投影仪手机投屏怎么弄(投影仪连接手机方法介绍)
  13. Dos窗口的常见打开方式和常见命令
  14. 计算机毕业设计Python毕业论文总结基于Python实现的仓库库存管理系统[包运行成功]
  15. 英特尔AI大会:新版AI芯片
  16. 「win10右键菜单修改名称」
  17. 基于stm32单片机的模拟IIC时序(附源码)
  18. java从json数组中提取数据,从JSON数组中提取数据
  19. 实验报告微型计算机拆卸顺序表,顺序表的操作实验报告馒头制作.doc
  20. Python 每天定时运行某程序代码

热门文章

  1. java计算机毕业设计基于springboot+vue+elementUI的旅游网站(源码+数据库+Lw文档)
  2. dialogue怎么读_dialogue是什么意思_dialogue怎么读_dialogue翻译_用法_发音_词组_同反义词_对话-新东方在线英语词典...
  3. java日历记事本_用java写的日历记事本代码?
  4. 俄罗斯电商平台ozon的崛起,卖家可以使用测评补单方式打造爆款吗?
  5. 软件设计模式——用Java代码实现物种特征
  6. Windows照片查看器无法显示此照片,因为计算机上的可用内存可能不足
  7. ESP32 E (10309) task_wdt: Task watchdog got triggered. The following tasks did not reset the watchdo
  8. Android 分割线
  9. 我一结婚到婆家,婆家全家人就自动不做饭了,啥都等我做
  10. 全球最大同性交友网站的所有用户密码都无法登录!!!