1. SPI总线

1.1 基础概念:

  • 技术性能

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

  • SPI结构示意图

SPI接口共有4根信号线,分别是:串行输出数据线、串行输入数据线、时钟线、设备选择线。

(1)MOSI:主器件数据输出,从器件数据输入
(2)MISO:主器件数据输入,从器件数据输出
(3)SCLK :时钟信号,由主器件产生
(4)/SS:从器件使能信号,由主器件控制

  • 时钟极性和时钟相位

    在SPI操作中,最重要的两项设置就是时钟极性(CPOL或UCCKPL)和时钟相位(CPHA或UCCKPH)。时钟极性设置时钟空闲时的电平,时钟相位设
    置读取数据和发送数据的时钟沿。

    主机和从机的发送数据是同时完成的,两者的接收数据也是同时完成的。所以为了保证主从机正确通信,应使得它们的SPI具有相同的时钟极性和
    时钟相位。

SPI接口时钟配置心得:在主设备这边配置SPI接口时钟的时候一定要弄清楚从设备的时钟要求,因为主设备这边的时钟极性和相位都是以从设备为
基准的。因此在时钟极性的配置上一定要搞清楚从设备是在时钟的上升沿还是下降沿接收数据,是在时钟的下降沿还是上升沿输出数据

  • 优缺点

SPI接口具有如下优点:

1) 支持全双工操作;

2) 操作简单;

3) 数据传输速率较高。

同时,它也具有如下缺点:

1) 需要占用主机较多的口线(每个从机都需要一根片选线);

2) 只支持单个主机。

3) 没有指定的流控制,没有应答机制确认是否接收到数据。

1.2传输时序:

SPI接口在内部硬件实际上是两个简单的移位寄存器,传输的数据为8位,在主器件产生的从器件使能信号和移位脉冲下,按位传输,高位在前,低位在后。如下图所示,在SCLK的下降沿上数据改变,上升沿一位数据被存入移位寄存器。

在一个SPI时钟周期内,会完成如下操作:

1) 主机通过MOSI线发送1位数据,从机通过该线读取这1位数据;

2) 从机通过MISO线发送1位数据,主机通过该线读取这1位数据。

这是通过移位寄存器来实现的。如下图所示,主机和从机各有一个移位寄存器,且二者连接成环。随着时钟脉冲,数据按照从高位到低位的方式依次移出主机寄存器和从机寄存器,并且依次移入从机寄存器和主机寄存器。当寄存器中的内容全部移出时,相当于完成了两个寄存器内容的交换。

SPI总线协议及SPI时序图详解

嵌入式工程师常用的IIC和SPI总线协议,今天来说透!

SPI总线 通俗易懂讲解

【博文汇总】SPI总线学习

2. I2C

2.1 I2C数据发送全过程:

IIC 通信过程大概如下。首先,主设备发一个START信号,这个信号就像对所有其它设备喊:请大家注意!然后其它设备开始监听总线以准备接收数据。接着,主设备发送一个7位设备地址加一位的读写操作的数据帧。当所设备接收数据后,比对地址自己是否目标设备。如果比对不符,设备进入等待状态,等待STOP信号的来临;如果比对相符,设备会发送一个应答信号——ACKNOWLEDGE作回应。

当主设备收到应答后便开始传送或接收数据。数据帧大小为8位,尾随一位的应答信号。主设备发送数据,从设备应答;相反主设备接数据,主设备应答。当数据传送完毕,主设备发送一个STOP信号,向其它设备宣告释放总线,其它设备回到初始状态。

【博文汇总】I2C总线学习

I2C总线时序模拟(二)-加深理解总线协议

嵌入式工程师常用的IIC和SPI总线协议,今天来说透!

2.2 原理:

1、 在I2C总线上传送的每一位数据都有一个时钟脉冲相对应(或同步控制),即在SCL串行时钟的配合下,在SDA上逐位地串行传送每一位数据。进行数据传送时,在SCL呈现高电平期间,SDA上的电平必须保持稳定,低电平为数据0,高电平为数据1。只有在SCL为低电平期间,才允许SDA上的电平改变状态

为什么IIC总线进行数据发送时,时钟信号为高电平期间,数据线上的数据必须保持数据稳定???这是因为会在高电平期间采集总线上的数据,如果此时总线上的数据不稳定,会导致采集的数据和发送的数据不一致,从而关闭发送(类似仲裁失败)。协议规定只有在时钟信号为低电平期间,数据线上的高电平或低电平才允许变化,这是因为BSD7中的数据是在时钟下降沿发出的,且不会在时钟脉冲低电平期间采集总线上的数据。

2、无论读与写,都是在时钟线为低时把数据送到数据总线上,在高时采样数据,把数据锁存到内部,所以读之前先把时钟线拉低,做好准备(数据线为高表示释放数据线),为接下来读数据做好准备。也就是时钟信号为低时,数据线上的高低电平才允许变化,时钟信号为高时,数据总线上的数据必须保持稳定。

3、起始信号产生后,总线为被占用状态(SDA拉低);终止信号产生后,总线为空闲状态(SCL被释放了)。

4、接收器件收到一个完整的数据字节后有可能需要完成一些其它工作,如处理中断,可能无法立刻接收下一字节,这时从机将SCL拉成低电平,从而使主机处于等待状态。直到从机准备好接收下一字节,再释放SCL线使之为高,从而数据传送可继续进行。数据线上的数据是在时钟信号为高时被采样。

5、当主机接收数据时,它收到最后一个数据字节后,必须向从机发出一结束信号。这个信号是由对从机的非应答来实现的。然后,从机释放SDA线,以允许主机产生终止信号。

3. I2S

3.1 基础概念:

  • I2S硬件接口定义

    串行时钟SCLK,也叫位时钟(BCLK),即对应数字音频的每一位数据,SCLK都有1个脉冲,SCLK的频率=2采样频率采样位数。

    帧时钟LRCK,用于切换左右声道的数据,1为左声道,0为右声道,LRCK频率等于采样频率。

    串行数据SD,就是用二进制补码表示的音频数据。

    有时为了使系统能够更好地同步,还需要另外一个信号MCLK,称为主时钟,也叫系统时钟(sys clock),一般是采样频率的256倍或是384倍。切记,MCLK并不是必须的。可有可无,看设计要求。

  • 电气连接

IIS是比较简单的数字接口协议,没有地址或设备选择机制,在IIS总线上,只能同时存在一个主设备和发送设备。
主设备可以是发送设备,也可以是接收设备,或是协调发送设备和接受设备的其它控制设备。
在IIS系统中,提供时钟的设备为主设备。

Linux下的I2S驱动学习

I2S协议

I2S音频总线学习

转载于:https://www.cnblogs.com/agui125/p/10309603.html

SPI、I2C、I2S相关推荐

  1. SPI、I2C、I2S、UART、GPIO、SDIO、CAN、JTAG的区别

    SPI.I2C.I2S.UART.GPIO.SDIO.CAN.JTAG的区别 SPI 全称及由来:SPI接口的全称是"Serial Peripheral Interface",意为 ...

  2. SPI、I2C、UART三种串行总线的原理、区别及应用

    SPI协议解析,链接如下 https://blog.csdn.net/weiqifa0/article/details/82765892 I2C协议解析,链接如下 https://blog.csdn. ...

  3. SPI、I2C、UART三种串行总线协议的区别和SPI接口介绍(转)

    SPI.I2C.UART三种串行总线协议的区别 第一个区别当然是名字: SPI(Serial Peripheral Interface:串行外设接口); I2C(INTER IC BUS) UART( ...

  4. 详细介绍GPIO、I2C、SPI通讯原理以及物理层原理

    目录 一. GPIO 1. 什么是GPIO? 2. GPIO组成原理 3. GPIO工作原理 二. I2C 1. 什么是I2C? 2. I2C组成原理 3. I2C的特性 4. I2C的通讯模式 5. ...

  5. 【Linux驱动】驱动设计硬件基础----串口、I2C、SPI、以太网接口、PCIE

    1.前言 常见的外设接口与总线的工作方式,包括串口.I2C.SPI.USB.以太网接口.PCI和PCI-E.SD和SDIO等. 2.串口 RS-232.RS-422与RS-485都是串行数据接口标准, ...

  6. 【通信协议】UART、RS232、RS485、I2C、SPI、CAN

    单工通信 只能发送器给接收器发送数据 双工通信 发送器可以给接收器发送数据,接收器也可以给发送器发送数据. 半双工:不能同时进行,发送和接收共用一根线. 全双工:同时进行,发送和接收各一根线. 数据用 ...

  7. SPI、I2C、UART(即串口)三种串行总线详解

    以下内容均来源于网络资源的学习与整理,如有侵权请告知删除. 参考博客 几个串口协议学习整理 UART IIC SPI_mainn的博客-CSDN博客 SPI.I2C.UART三种串行总线的原理.区别及 ...

  8. 422器件与lvds接收器的区别_SPI、I2C、UART三种串行总线的原理、区别

    SPI.I2C.串口.我相信如果你是从事的是嵌入式开发,一定会用到这三种通信协议,串口的话因为和波特率有关,所以一般的CPU或者MCU只会配有两个或者三个串口,而数据的传输,的话SPI和I2C用得会比 ...

  9. SPI、I2C、UART、I2S、GPIO、SDIO、CAN,你能分清楚吗?

    总线,总线,总要陷进里面.这世界上的信号都一样,但是总线却成千上万,让人头疼. 总的来说,总线有三种:内部总线.系统总线和外部总线.内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连: ...

  10. 教你分清楚SPI、I2C、UART、I2S、GPIO、SDIO、CAN!

    总线,总线,总要陷进里面.这世界上的信号都一样,但是总线却成千上万,让人头疼. 总的来说,总线有三种:内部总线.系统总线和外部总线.内部总线是微机内部各外围芯片与处理器之间的总线,用于芯片一级的互连: ...

最新文章

  1. 哪些人适合参加软件测试培训
  2. 表单开发(二):获取单选按钮,多行文本框,下拉菜单,捆绑元素数据,用户注册
  3. 自定义标签报 无法为TAG [my2:hello]加载标记处理程序类[null]
  4. 【渝粤教育】电大中专建设工程法规1作业 题库
  5. oracle用户密码已过期,oracle用户密码过期的处理方法
  6. c语言k歌4.0编程,一次在线K歌玩法的尝试
  7. 网上图书商城项目学习笔记-008修改密码功能
  8. Sun Java认证
  9. sorted()函数快速实现字典输出
  10. python代码翻译器-Python编程学习 -- 用十几行代码实现一个翻译器
  11. 如何在html中做圆角矩形和 只有右边的分隔线
  12. redis存储对象_redis内存优化总结
  13. WPS最大的败笔是“免费用,广告弹窗”,难怪用户纷纷使用office
  14. threadlocal原理_Java并发编程——揭开ThreadLocal的面纱
  15. synchronized的作用以及不足
  16. (转)谁是全球资管规模之冠?
  17. 首周任务 :asp留言板
  18. 7-8 jmu-Java-03面向对象-06-继承覆盖综合练习-Person、Student、Employee、Company
  19. 自媒体推广该怎么做?学懂这10招,走路横着走
  20. Kubernetes Pod Evicted

热门文章

  1. python framework jdon_python – Django Rest Framework和JSONField
  2. 简述开发Android2D图形,2D图形开发(一)(高级).pdf
  3. 北大生物信息学学习(2) 生物学及生物学信息学的发展
  4. oracle sequence sql server,SQL Server 实现oracle的sequence方法示例
  5. 反编译exe软件_挖洞经验 | Panda反病毒软件本地提权漏洞分析
  6. python编程从入门到实战的16堂课_好评如潮,百万Python程序员的「案头必备书」,终于出配套习题解答了!...
  7. 图像融合(一)--概述
  8. 系统学习机器学习之正则化(二)
  9. 孙鑫MFC笔记之十七--HOOK编程
  10. 建议0 不要让main函数返回void