I2C总线协议
来源:互联网 发布:flash软件怎么用 编辑:程序博客网 时间:2024/06/08 09:10
一、I2C协议
2条双向串行线,一条数据线SDA,一条时钟线SCL。
SDA传输数据是大端传输,每次传输8bit,即一字节。
支持多主控(multimastering),任何时间点只能有一个主控。
二、传输协议
1、I2C开始和结束信号
开始信号:SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据。
2、I2C应答信号
Master每发送完8bit数据后等待Slave的ACK。
即在第9个clock,若从IC发ACK,SDA会被拉低。若没有ACK,SDA会被置高。
即在第9个clock,若从IC发ACK,SDA会被拉低。若没有ACK,SDA会被置高。
3、I2C写流程
写寄存器的标准流程为:
1. Master发起START
2. Master发送I2C addr(7bit)和w操作0(1bit),等待ACK
3. Slave发送ACK
4. Master发送reg addr(8bit),等待ACK
5. Slave发送ACK
6. Master发送data(8bit),即要写入寄存器中的数据,等待ACK
7. Slave发送ACK
8. 第6步和第7步可以重复多次,即顺序写多个寄存器
9. Master发起STOP
1. Master发起START
2. Master发送I2C addr(7bit)和w操作0(1bit),等待ACK
3. Slave发送ACK
4. Master发送reg addr(8bit),等待ACK
5. Slave发送ACK
6. Master发送data(8bit),即要写入寄存器中的数据,等待ACK
7. Slave发送ACK
8. 第6步和第7步可以重复多次,即顺序写多个寄存器
9. Master发起STOP
4、I2C读流程
读寄存器的标准流程为:
1. Master发送I2C addr(7bit)和w操作1(1bit),等待ACK
2. Slave发送ACK
3. Master发送reg addr(8bit),等待ACK
4. Slave发送ACK
5. Master发起START
6. Master发送I2C addr(7bit)和r操作1(1bit),等待ACK
7. Slave发送ACK
8. Slave发送data(8bit),即寄存器里的值
9. Master发送ACK
10. 第8步和第9步可以重复多次,即顺序读多个寄存器
1. Master发送I2C addr(7bit)和w操作1(1bit),等待ACK
2. Slave发送ACK
3. Master发送reg addr(8bit),等待ACK
4. Slave发送ACK
5. Master发起START
6. Master发送I2C addr(7bit)和r操作1(1bit),等待ACK
7. Slave发送ACK
8. Slave发送data(8bit),即寄存器里的值
9. Master发送ACK
10. 第8步和第9步可以重复多次,即顺序读多个寄存器
阅读全文
0 0
- I2C总线协议详解
- I2C总线协议(转载)
- I2C总线协议详解
- I2C串行总线协议
- i2c总线协议总结
- I2C总线协议
- I2C总线协议详解
- I2C总线协议
- i2c总线协议
- I2C总线协议详解
- 嵌入式 I2C总线协议
- I2C总线协议详解
- I2C总线协议详解
- I2C总线协议详解
- I2C总线协议详解
- I2C总线协议详解
- I2C总线协议解析
- 【 I2C总线 - 协议 】
- Nsight Eclipse中使用opencv
- tableau js api 工作簿的简单调用
- Lniux网络通信二(TCP三次握手,四次挥手 并发服务器)
- mac 让Finder显示隐藏文件夹和文件
- Java五个最常用的集合类之间的区别和联系
- I2C总线协议
- Nginx之变量
- 判断1000年到2000年之间的闰年
- java中的锁
- nginx配置负载均衡
- C++ 回调函数
- ORACLE RMAN备份失败之ORA-19599
- Android Gradle Build Error:Some file crunching failed, see logs for details解决办法
- mysql主从搭建