I2C通信协议
来源:互联网 发布:linux怎么卸载jdk 编辑:程序博客网 时间:2024/06/05 18:33
I2c是一种个非常常见的串行通信协议,由SDA,SCL两根线组成,分别为数据信号线和时钟信号线。直接从它的时序图开始分析
起始信号:SCL高电平期间,SDA由高电平到低电平表示为起始信号。I2C设备检测到起始信号知道要开始接受传输的设备。
结束信号:SCL高电平期间,SDA由低电平到高电平表示为结束信号。I2C设备检测到结束信号后知道对方已经结束数据传输。
数据传递:I2C设备只在SCL为高电平时读取SDA的状态,也就是说SDA的电平状态必须在SCL高电平时保持稳定,在SCL低电平期间再产生变化。
响应信号:CPU把数据发给I2C设备,CPU怎么知道I2C设备接受到了数据呢?这就需要到这个响应信号(ACK)——在设备接受完八位数据后,在第九个时钟周期,SDA引脚相对于CPU变为输入模式,并拉低SDA为低电平,在之后释放SDA数据线。
一条I2C(或者说两条...)可以访问多个设备,是怎么访问的呢?
访问设备:先发送一个起始信号(START),传送7位设备地址(根据设备的数据手册得知),第八位是读写选择位(0是写,1是读),如果有这个地址该设备就会给CPU发送一个响应信号(ACK)
读数据:发送完设备地址后先写地址位置0选择写模式,为什么要选择’写‘?因为要先选择你要读存储芯片内部哪一地址的数据,这里的WORD ADRESS就是你通过CPU写下这个地址告诉存储芯片我要读访问这地址的数据,写完后对方回应。再写一次设备地址,这次选择’读‘模式,把数据给读回来。
0 0
- I2C通信协议
- I2C通信协议
- I2C通信协议简介
- 解析I2C通信协议
- I2C通信协议的时序
- UART、I2C、SPI通信协议
- 通信协议——I2C总线
- 通过实例来分析I2C基本通信协议
- MPU6050的430控制程序--i2c通信协议
- MPU6050开发 -- 进阶之I2C/SPI通信协议
- 嵌入式学习--step7 各类通信协议--串口、SPI、I2C
- 通信协议
- 通信协议
- 通信协议
- 通信协议
- 通信协议
- 通信协议
- 通信协议
- Android Error:Execution failed for task ':app:compileDebugJavaWithJavac' 解决方案
- 适配器模式
- java.lang.IllegalThreadStateException异常原因解析
- 关于素数的求解
- CountDownLatch(同步器)
- I2C通信协议
- android开源项目分类汇总
- expect用法
- Kafka 设计与原理详解
- Hello,world
- 创建 OVS vlan101并部署 instance - 每天5分钟玩转 OpenStack(139)
- tomcat7无法创建,tomcat7的压缩包资源
- 常用的python库
- banner--与下拉刷新冲突解决