博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
I2C (一) 协议
阅读量:4285 次
发布时间:2019-05-27

本文共 1521 字,大约阅读时间需要 5 分钟。

I2C协议

两条线     2条双向串行线,一条数据线SDA,一条时钟线SCL。    且两条线都被上拉电阻上拉
// linux代码 Documentation/i2c/i2c-protocol协议包括START、ACK、NACK、STOP。尽管协议中规定START必须,其他几个非必须,但实际上其他三个仍旧非常重要。 主发从收:主 START -> 主发地址(+ write bit 0) -> 从 ACK -> (主发数据 -> 从 ACK (循环)) -> 主 STOP 或 主 START 启动下一次传输 这一过程中,主控SCL线,从只在ACK时控SDA线,其他时刻主控SDA线。 主收从发:主 START -> 从发地址(+ read bit 1) -> 主 ACK -> (从发数据 -> 主ACK (循环)) -> 接受至最后一个字节时,主 NACK -> 主 STOP 或 主 START 启动下一次传输 I2C重要时序:1.读写寄存器的顺序写主 START -> 主发地址(+ write bit 0) -> 从 ACK -> 主发寄存器地址 -> 从 ACK -> 主发寄存器值 -> 从 ACK -> 主 STOP读主 START -> 主发地址(+ write bit 0) -> 从 ACK -> 主发寄存器地址 -> 从 ACK -> /*主 STOP(中间没有stop)->*/ 主 START -> 从发地址(地址为设备的地址+ read bit 1) -> 主 ACK -> 从发寄存器数据 -> 主 NACK -> 主 STOP
  • 状态
开始 : SCL 高的时候 SDA 从高到低 停止 : SCL 高的时候 SDA 从低到高数据 : SCL 高的时候, SDA 不变(为0为1)ack  :  SCL 高的时候, SDA 不变,且为0nack  :  SCL 高的时候, SDA 不变,且为1
  • ACK与NACK
每个字节后会跟随一个ACK信号。ACK bit使得接收者通知发送者已经成功接收数据并准备接收下一个数据。所有的时钟脉冲包括ACK信号对应的时钟脉冲都是由master产生的。ACK信号:发送者在ACK时钟脉冲期间释放SDA线,接收者可以将SDA拉低并在时钟信号为高时保持低电平。NACK信号:当在第9个时钟脉冲的时候SDA线保持高电平,就被定义为NACK信号。Master要么产生STOP条件来放弃这次传输,或者重复START条件来发起一个新的开始。
  • NACK
出现 NACK 肯定会停止本次传输,然后 不一定开始一次新的传输该出现的时机    read 结束, 主master 控制给出 NACK在不该出现的时候出现,会终止本次传输(一次传输代表一次读写结束)
  • 地址
I2C设备的写地址 = I2C设备地址 << 1I2C设备的读地址 = (I2C设备地址 << 1) + 1

I2C物理硬件

I2C控制器	一般集成在SOC中I2C设备	一般是一个单独的设备,表示该设备支持I2C协议,有I2C接口I2C控制器和I2C设备的连接	也就是SOC和I2C设备的连接,除了要给I2C设备供电,通常只有 SCL和SDA两根线. // Serial Clock 和 Serial Data Line

I2C电气特性

在这里插入图片描述

其他

  • SMbus
Documentation/i2c/smbus-protocol注意:此文章描述的是i2c标准协议,但是具体怎么控制器件,看器件datasheet支持的协议,可能与此类似,但不尽相同.
  • 线序 100khz 读写字节

在这里插入图片描述

  • 线序 100khz 写读寄存器
写寄存器

写寄存器

读寄存器

读寄存器

转载地址:http://caigi.baihongyu.com/

你可能感兴趣的文章
python 判断输入的是不是合法(正确)的ip
查看>>
linux 生成随机密码,uuid
查看>>
django 自定义分页与bootstrap分页结合
查看>>
django Paginator分页模块
查看>>
python 读取csv文件
查看>>
python 查找模块的文件路径
查看>>
centos 安装nginx
查看>>
nginx 运行与操作
查看>>
nginx 不中断服务 平滑升级
查看>>
nginx 反向代理测试
查看>>
阻塞与非阻塞 异步非阻塞
查看>>
nginx 负载均衡
查看>>
nginx server配置和指令详解
查看>>
jqury 获取表格中点击删除图标后要删除一行的元素数据
查看>>
django bootstrap 向modal插件传递参数
查看>>
js bootstrap 警告框的隐藏和显示
查看>>
centos 7.1安装docker
查看>>
docker 创建一个新镜像
查看>>
docker server gave HTTP response to HTTPS client 问题处理办法
查看>>
docker 导入与导出镜像
查看>>