I2C协议简介

主从芯片如何传输数据
AT24C02是一个存储芯片,需要把数据从ARM板发给AT24C02,也需要从AT24C02读取数据。
I2C是一个主从结构,Master发起传输,slave接收或回应
一主多从:如何选在哪个从芯片呢?每个从芯片都有设备地址,设备地址各不相同,这些地址都是在芯片里写死的。



设备地址是7位,先传输地址的最高位MSB。
SCL为低电平时,SDA可变化
SCL为高电平时,SDA不可变。
问:如何在SDA上实现双向传输?
主从设备里面必然有两个引脚,发送引脚和接收引脚。

1)主设备发送时,从设备不应该发送。
可以通过SCL区分控制。
2)主设备发送时,从设备的发送引脚不影响SDA上传输的数据。同样从设备发送时,主设备的发送引脚不要影响SDA上传输的数据。怎样做到呢?
如上图所示,使用开极电路。
使用一真值表来表示A、B以及SDA引脚电平状态。

1)当A为低电平时,主设备里的三极管不导通。B为低电平时,从设备里的三极管也是不导通的。那么此时SDA引脚的电平状态是什么?
如果没有接那个上拉电阻,那么SDA引脚是出于悬空状态的,悬空引脚的电平状态是无法确定的,这也是为什么加上上拉电阻的原因。加上上拉电阻后,此时SDA引脚电平的状态是由上拉电阻决定的,为1。
2)当A为低电平时,主设备三极管不导通。B为高电平时,从设备的三极管导通,因此SDA引脚的电平为低电平。
后面两种情况的分析,和上面两种情况的原理是一样的,在此不再赘述。
从上面分析可以看出,
1)芯片不影响数据线上即SDA上的数据,只要使这个芯片不驱动三极管即可。
2)要使SDA引脚上电平为高电平,不要驱动主从设备任意的三极管
3)要使SDA引脚上电平为低电平,驱动主从设备上的任意一个三极管即可。
举个例子:
主设备发送8bit数据给从设备


问题:SCL是不是一直由主控芯片来决定?
答案:不是的。第9个时钟以后,如果某一方(比如说,我现在还忙不过来,再等一会儿),它可以一直把SCL拉低。当SCL为低电平时,主从芯片都不应该使用I2C总线。
SCL为低电平时,表示大家都在忙,当变为高电平时,再来操作。
注意:对于I2C协议,它只能规定如何传输数据,这个数据是什么含义,它完全不能控制。数据的含义由设备决定。
I2C协议简介的更多相关文章
- i2c协议简要分析(转载)
声明 本文大部分内容为转载,因此标定为转载 源地址: http://www.cnblogs.com/zym0805/archive/2011/07/31/2122890.html http://blo ...
- Fiddler--一、HTTP协议简介
在学习Fiddler之前,最好先学习一下HTTP协议. HTTP协议简介 什么是HTTP协议 超文本传输协议(HTTP)是一种通信协议,它允许将超文本标记语言(HTML)文档从Web服务器传送到客户端 ...
- i2c协议
i2c协议 http://blog.csdn.net/g_salamander/article/details/8016698 总线设备驱动模型 http://blog.csdn.net/u01395 ...
- MODBUS-RTU通讯协议简介
MODBUS-RTU通讯协议简介 什么是MODBUS? MODBUS 是MODICON公司最先倡导的一种软的通讯规约,经过大多数公司 的实际应用,逐渐被认可,成为一种标准的通讯规约,只要按照这种规 ...
- (原创) 巩固理解I2C协议(MCU,经验)
题外话:这几天天气突然转冷了.今天已是11月23日了,查查黄历,昨天(11月22日)刚好是小雪,一夜温度骤降,果然老祖先的经验有灵验!冬天来了,还是多加加衣服,注意保暖! 1.Abstract ...
- JavaWeb:Web与HTTP协议简介
JavaWeb:Web与HTTP协议简介 Web的概念 什么是Web: Web是网络上使用最广泛的分布式应用架构. 旨在共享分布在网络上的各个Web服务器中的所有互相连接的信息. 三个特征: 用HTM ...
- CC2540开发板学习笔记(九)—— BLE协议简介
一.BLE协议简介 1.协议是什么? 协议是一系列的通信标准,双方需要共同按照这进行正常数据 协议是一系列的通信标准,双方需要共同按照这进行正常数据发射和 接收.协议栈是的具体实现形式,通俗点来理解就 ...
- I2C协议(转)
1.I2C协议 2条双向串行线,一条数据线SDA,一条时钟线SCL. SDA传输数据是大端传输,每次传输8bit,即一字节. 支持多主控(multimastering),任何时间点只能有一 ...
- (1)I2c的简介和特性
I2C我是想全面深入的从嵌入式软件工程师的角度做个理解,刚刚还申请了一个专栏,这个好好写. 学习技术从外文文档看起-- 要全面了解I2C,可以从<I2C-bus specific ...
随机推荐
- MacBook安装WIN7开机黑屏的解决办法
同事的一台Macbook,全盘用diskgenius格式化为MBR分区,支持BIOS启动,安装ghost版本的WIN7,开机黑屏,看了网上的帖子没有用,插入启动盘按option键选择从优盘启动,用di ...
- 8.10 NOIP模拟测试16 Blue+Weed+Drink
T1 Blue 贪心,每次跳得时候跳能跳到的最远的地方,跳过的就把他设为0,每次二分找到位置,一直跳就行,如果能跳到的位置就是当前位置或比当前位置还小(数组里现在呆着的这一块石头,二分得到的就是当前位 ...
- C# HTTP系列8 GET与POST对比说明
系列目录 [已更新最新开发文章,点击查看详细] HTTP协议,即超文本传输协议(Hypertext transfer protocol).是一种详细规定了浏览器和万维网(WWW = Worl ...
- html5手机web页面底部菜单
一.效果图 二.HTML代码 <header class="text-center">TOP</header> <div id="conte ...
- 使用Shell上传/下载文件
来源:https://www.cnblogs.com/pcyy/p/7568820.html 1,安装lrzsz工具包 yum install lrzsz 2,安装完成后 输入rz选择文件进行上传
- python运维开发常用模块(三)DNS处理模块dnspython
1.dnspython模块介绍: dnspython(http://www.dnspython.org/)是Python实现的一个DNS 工具包,它支持几乎所有的记录类型,可以用于查询.传输并动态更新 ...
- Clean Code 笔记 之 第二章
你是否真正的会命名 前言 这是我第二次看这本书了(Clean Code)的时候,第一次看的时候是,看到某世界五百强在他们的代码中我竟然看不到一句注释,现在我还记得当时的情景,当我Download 下第 ...
- Java 8——日期时间工具库(java.time)
一.前言 在介绍Java SE 8中新的日期时间库前,先了解下Java 8之前的日期时间工具的诟病. 在Java SE 8前,日期时间工具库在java.util包中,包括: java.util.Dat ...
- 【转】常用PLC通讯协议
三菱FX系列PLC通讯测试 发送帧(Hex): 起始(STX) 02 命令(CMD) 30 首地址(ADDRESS) 30 30 41 30 字节数(BYTES) 30 31 终止(ETX) 03 校 ...
- Dapper学习(四)之Dapper Plus的大数据量的操作
这篇文章主要讲 Dapper Plus,它使用用来操作大数量的一些操作的.比如插入1000条,或者10000条的数据时,再使用Dapper的Execute方法,就会比较慢了.这时候,可以使用Dappe ...