聊聊通讯协议 I2C 子系统
I2C Transfer
Definition of timing
想要深入探讨 I2C 协议,必须深刻理解各种时间的定义(F/S-mode)
标识符 | 定义 |
tf | 信号下降时间 |
tr | 信号上升时间 |
tLOW | 信号低电平时间 |
tHIGH | 信号高电平时间 |
tHD;DAT | 数据保持时间 |
tSU;DAT | 数据建立时间 |
tSP | 输入滤波器必须抑制的毛刺脉宽 |
tBUF | 启动和停止条件的空闲时间 |
tHD;STA | 重复起始条件的保持时间 |
tSU;STA | 重复起始条件的建立时间 |
tSU;STO | 停止条件建立时间 |
Sr 重新启动,S 启动,P 停止。
note:SCL 高电平的时候,SDA 是高就是 1,是低就是 0。SCL 低电平期间,SDA 变换数据。
note:起始条件很容易理解,重复起始条件就是没有STOP,再来了一个 START,然后发送另外一个从设备 ID,访问其他从设备。
定义术语
1.数据有效性
在 SCL 高电平期间,SDA 必须稳定,所以一般情况下,SCL 高电平宽度小,SDA 高电平宽度大,用示波器看也是这样的。
2.起始条件和停止条件
起始条件:SCL 高电平时,SDA 由高变低。
停止条件:SCL 高电平时,SDA 由低变高。
一般每传输一个字节(8 bit),就会重新开始。SDA 在 SCL 是低电平期间变换数据,不可以在 SCL 高电平期间变换数据,否则会认为是 起始和停止条件。
- 传输长度必须是一个字节(8 bit)
- 每次传输的字节不受限制
- 数据必须以 MSB 开头进行传输,也就是先传输最高位
- 从机可以将时钟线 SCL 保持在低位,迫使主机进入等待状态。
3.ACK or NACK
每次传输完一个字节以后,从设备要进行一个回应,回应 ACK 或者 NACK。
ACK :在传输 8 bit 以后,在第九个 bit ,SCL 高电平,如果 SDA 是低电平,说明回应了 ACK。
NACK:在传输 8 bit 以后,在第九个 bit ,SCL 高电平,如果 SDA 是高电平,说明回应了 NACK。
4.write data
5.read data
6.复合格式
7.I2C Transfer Regulation
- 以 START 条件开始
- 以 STOP 条件结束
- 传输的第一个字节为 7bit 从机地址 + 1bit 读写位
- 每个总线上的设备都会比较 STRAT 信号后面的 7bit 地址与自己的地址是否匹配
- 每个 byte(8 bits) 后面都会有 ACK 或者 NACK
- 在 START 信号或者 repeated START 信号后,从机必须重置自己的总线逻辑
- 一个 START 后面紧跟着一个 STOP 信号,是非法格式
- 主机 master 可以不产生 STOP 信号,而是直接产生一个 repeated START 信号+另外一个设备地址,直接开始访问另外一个设备
8.10-bit addressing
解析如下:
A9-A0 表示 10bits 地址
9、示波器波形图
10.补充
I2C 不支持从设备在 SCL 和 SDA 总线上发起一个中断,通知主设备来读数据。有中断需求的从设备需要额外接一根中断线,通知主控数据已经准备好,让主控发起读数据的操作。
相关文章
- 【技术种草】cdn+轻量服务器+hugo=让博客“云原生”一下
- CLB运维&运营最佳实践 ---访问日志大洞察
- vnc方式登陆服务器
- 轻松学排序算法:眼睛直观感受几种常用排序算法
- 十二个经典的大数据项目
- 为什么使用 CDN 内容分发网络?
- 大数据——大数据默认端口号列表
- Weld 1.1.5.Final,JSR-299 的框架
- JavaFX 2012:彻底开源
- 提升as3程序性能的十大要点
- 通过凸面几何学进行独立于边际的在线多类学习
- 利用行动影响的规律性和部分已知的模型进行离线强化学习
- ModelLight:基于模型的交通信号控制的元强化学习
- 浅谈Visual Source Safe项目分支
- 基于先验知识的递归卡尔曼滤波的代理人联合状态和输入估计
- 结合网络结构和非线性恢复来提高声誉评估的性能
- 最佳实践丨云开发CloudBase多环境管理实践
- TimeVAE:用于生成多变量时间序列的变异自动编码器
- 具有线性阈值激活的神经网络:结构和算法
- 内网渗透之横向移动 -- 从域外向域内进行密码喷洒攻击