SPI和IIC通信区别
来源:互联网 发布:百度人工智能负责人 编辑:程序博客网 时间:2024/05/16 01:42
IIC 是多主设备的总线,IIC没有物理的芯片选择信号线,没有仲裁逻辑电路,只使用两条信号线—— ‘serial data’ (SDA) 和 ‘serial clock’ (SCL)。
IIC协议规定:
第一,每一支IIC设备都有一个唯一的七位设备地址;
第二,数据帧大小为8位的字节;
第三,数据(帧)中的某些数据位用于控制通信的开始、停止、方向(读写)和应答机制。
IIC 数据传输速率有标准模式(100 kbps)、快速模式(400 kbps)和高速模式(3.4 Mbps),另外一些变种实现了低速模式(10 kbps)和快速+模式(1 Mbps)。
基于IIC总线的设计,线路上不可能出现电平冲突现象。如果一支设备发送逻辑0,其它发送逻辑1,那么线路看到的只有逻辑0。也就是说,如果出现电平冲突,发送逻辑0的始终是“赢家”。
总线的物理结构亦允许主设备在往总线写数据的同时读取数据。这样,任何设备都可以检测冲突的发生。当两支主设备竞争总线的时候,“赢家”并不知道竞争的发生,只有“输家”发现了冲突——当它写一个逻辑1,却读到0时——而退出竞争。
任何IIC设备都有一个7位地址,理论上,现实中只能有127种不同的IIC设备。实际上,已有IIC的设备种类远远多于这个限制,在一条总线上出现相同的地址的IIC设备的概率相当高。为了突破这个限制,很多设备使用了双重地址——7位地址加引脚地址(external configuration pins)。IIC 标准也预知了这种限制,提出10位的地址方案。10位的地址方案对 IIC协议的影响有两点:
第一,地址帧为两个字节长,原来的是一个字节;
第二,第一个字节前五位最高有效位用作10位地址标识,约定是“11110”。
另外,在IIC中有个现象--时钟拉伸:在 IIC 通信中,主设备决定了时钟速度。因为时钟脉冲信号是由主设备显式发出的。但是,当从设备没办法跟上主设备的速度时,从设备需要一种机制来请求主设备慢一点。这种机制称为时钟拉伸。
当从设备需要降低传输的速度的时候,它可以按下时钟线,逼迫主设备进入等待状态,直到从设备释放时钟线,通信才继续。
二、SPI和IIC比较
1. SPI适合数据流应用,而IIC更适合“字节设备”的多主设备应用。
3. 数据吞吐/传输速度
如果应用中必须使用高速数据传输,那么SPI是必然的选择。因为SPI是全双工,IIC 的不是。SPI没有定义速度限制,一般的实现通常能达到甚至超过10 Mbps。IIC 最高的速度也就快速+模式(1 Mbps)和高速模式(3.4 Mbps),后面的模式还需要额外的I/O缓冲区,还并不是总是容易实现的。
- SPI和IIC通信区别
- IIC和SPI通信
- IIC和SPI的区别
- SPI、UART和IIC区别
- IIC和SPI通信的异同
- IIC和SPI的数据线区别
- SPI IIC USART 区别
- SPI、IIC、UART区别
- SPI、IIC、UART区别
- SPI、IIC、UART区别
- SPI、IIC、UART区别
- SPI、IIC、UART区别
- IIC和SPI总线
- IIC和SPI
- 硬件相关基础知识1(IIC和SPI的区别)
- IIC、SPI、UART的区别
- SPI,IIc总线的区别
- USART、SPI、IIC的区别
- 使用浏览器查看Android SQLite数据库-Android Debug Database用法
- python excel使用进阶篇
- Android:一个通用的底部导航
- 深入理解Python(二)
- Codeforces Round #411 (Div. 2) D. Minimum number of steps
- SPI和IIC通信区别
- Pycharm首次安装
- 剑指offer 27. 二叉搜索树与双向链表
- 【读书笔记】机器学习实战-2.3节
- 利用Java操作FTP文件上传,下载,删除
- Dos 命令(一)
- 按同学身高从高到矮依次输出人名
- params.h
- Python处理数据--sort,sorted