I2C学习笔记——I2C协议学习
1、I2C简介:一种简单、双线双向的同步串行总线,利用串行时钟线(SCL)和串行数据线(SDA)在连接总线的两个器件之间进行信息传递;
数据传输是通过对SCL和SDA线高低电平时序的控制,来产生I2C总线协议所需要的信号。在总线空闲状态时,这两根线被所连接的上拉电阻保持为高。
每个器件的设备地址是唯一的,任何器件既可以作为主机也可以作为从机,但同一时刻只允许有一个主机。
I2C 标准具有冲突检测机制和仲裁机制的多主机总线,它能在多个主机同时请求控制总线时利用仲裁机制避免数据冲突并保护数据。
主从设备以串行8bit为单位进行双向数据传输,拥有不同的速度模式,标准模式100KB/s、快速模式400KB/s、高速模式3.4MB/s。通过I2C总线接口的可编程时钟来实现传输速率的调整,同时也跟所接的上拉电阻的阻值有关。
2、串行、并行总线:
并口,需要很多的线,把data、address等等在一个周期就可以表达;
串口,用的线很少,需要8个SCL周期才能将地址和RW位发送;数据也需要8个时钟周期;
3、数据有效时序:
SDA线上的数据在SCL高电平必须是稳定的; 只有当SCL时钟信号为低时,SDA的数据才可以发生变化; 每传输一个数据位,产生一个时钟脉冲;
4、开始停止条件:
当总线上的主机都不驱动总线,总线进入空闲状态, SCL 和 SDA 都为高电平。总线空闲状态下总线上设备都可以通过发送开始条件启动通信。
当SCL为高,SDA由高变低,为数据传输的开始(START)标识;
当SCL为高,SDA由低变高,为数据传输的结束(STOP)标识;
启动后,总线会被置为繁忙状态;在停止条件后的一段时间内,总线被释放为空闲状态。
如果生成的重复启动条件(Sr),总线会保持为繁忙状态。
总线处于忙状态时,由本次数据传输的主从设备独占,其他I2C器件则无法访问总线。
5、地址传送:
开始条件是地址帧(一个字节),用于指定主机通信的对象地址,在发送停止条件之前,指定的从机一直有效;
I2C通讯支持:7 位寻址和10 位寻址两种模式。
7 位寻址模式:7 位从机地址 + 1位读写位,读写位控制从机的数据传输方向(0写1读)。
10 位寻址模式,主机发送帧,第一帧 发送头序列(11110XX0,XX 表示 10 位地址的高两位),第二帧发送低八位从机地址。 主机接收帧 ,第一帧发送头序列11110XX0,然后第二帧发送低八位从机地址。接下来会发送一个重新开始条件,然后再发送一帧头序列11110XX1;
(SLA :表示从机地址;Sr :表示重新开始条件)
6、数据传送与ACK:
地址匹配一致后,总线上的主机根据 R/W 定义的方向一帧一帧的传送数据。 所有的地址帧后传送的数据都视为数据帧。10 位地址格式的低 8 位地址也视为数据帧。
数据帧的长度是 8 位。 SCL 的低电平 SDA 变化, SCL 的高电平 SDA 保持,每个时钟周期发送一位数据。数据帧后的第 9 个时钟是应答位,是接收方传送的握手信号。
从机接收数据时,第 9 个时钟周期不响应主机,从机必须发送 NACK;主机接收数据时,发送 NACK,从机接收到后停止发送数据;主机可以发送停止条件释放总线或重新开始条件;
如果从端设备无法接收或者发送另一个完整字节的数据。这时,可以先拉低SCL线,使得主设备进入等待状态,直到执行完毕其他功能。当从端设备准备好接受另一个字节的数据时,将其SCL线拉高,数据传输继续进行。
7、写操作:
当RW位为0(写操作)时,主发送设备发送数据给从接受设备,
- 主设备根据从地址寻址,找到对应的从设备,从设备应答ACK。
- 从接受设备ACK每一个字节的数据。
- 停止条件由主设备产生。
8、读操作:
当RW位为1(读操作)时,主设备向从设备中读取数据。
- 主设备根据从地址寻址,找到对应的从设备,从设备应答ACK。
- 第一个ACK信号由从设备产生,之后主设备立即读取数据。
- 之后的ACK信号由主设备产生。
- 在停止前,主设备发送一个NACK信号。
- 主设备生成停止信号。
9、组合传输
在传输中改变方向,由读变写,由写变读的操作。
- 传输方向转换前,要重新产生开始条件S或者重复开始条件Sr。
- 开始或重复开始条件满足后,要重新发送从地址。
- RW位要倒转,0变1,或者1变0。
- 如果要转换传输方向,接受设备会在产生重复开始条件前返回一个NACK。
I2C学习笔记——I2C协议学习相关推荐
- OpenHarmony学习笔记——I2C驱动0.96OLED屏幕
文章目录 前言 I2C简介 硬件连接 编程实现 创建代码框架 初始化并复用GPIO 初始化I2C0 初始化OLED 从机地址 OLED初始化配置 功能代码 总结 目录 前言 前面介绍了一些关于在Hi3 ...
- 树莓派学习笔记 ——I2C PCF8574 SysFs方式
1.前言 树莓派的GPIO端口数量有限,可通过IO扩展芯片增加GPIO的数量,使得树莓派可以适应更多的应用.PCF8574为一款通过I2C总线扩展IO的芯片,单个PCF8574可扩展8个IO,一个I2 ...
- 树莓派学习笔记——I2C设备载入和速率设置
1.载入设备 方法1--临时载入设备 sudo modprobe -r i2c_bcm2708 #卸载设备 -r代表removesudo modprobe i2c_bcm2708 #重新载入设备 方法 ...
- 【转】医疗业务学习笔记--DICOM协议的基础内容!!!!!!!!!!
转自:医疗业务学习笔记--DICOM协议的基础内容 - 知乎 本文首发于"雨夜随笔"公众号,欢迎关注. DICOM协议是医疗领域对如何处理.存储.打印和传输医疗图片的一系列标准.D ...
- 开源鸿蒙南向嵌入学习笔记——NAPI框架学习(一)
开源鸿蒙南向嵌入学习笔记--NAPI框架学习(一) 前言--系列介绍 本系列文章主要是记录笔者在鸿蒙南向的学习与工作中的知识点笔记记录,其中不止会针对鸿蒙中的学习问题进行思考与记录,也会对涉及到的一些 ...
- 深度学习入门之PyTorch学习笔记:深度学习介绍
深度学习入门之PyTorch学习笔记:深度学习介绍 绪论 1 深度学习介绍 1.1 人工智能 1.2 数据挖掘.机器学习.深度学习 1.2.1 数据挖掘 1.2.2 机器学习 1.2.3 深度学习 第 ...
- 学习笔记:CentOS7学习之二十二: 结构化命令case和for、while循环
目录 学习笔记:CentOS7学习之二十二: 结构化命令case和for.while循环 22.1 流程控制语句:case 22.2 循环语句 22.1.2 for-do-done 22.3 whil ...
- 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用
目录 学习笔记:CentOS7学习之十六:LVM管理和ssm存储管理器使用 16.1 LVM的工作原理 16.1.1 LVM常用术语 16.1.2 LVM优点 16.2 创建LVM的基本步骤 16.2 ...
- 学习笔记:强化学习与最优控制(Chapter 2)
Approximation in Value Space 学习笔记:强化学习与最优控制(Chapter 2) Approximation in Value Space 1. 综述 2. 基于Value ...
- 【长篇博文】Docker学习笔记与深度学习环境的搭建和部署(二)
长篇博文记录学习流程不容易,请关注.转发.点赞.评论,谢谢! 上一篇文章:Docker学习笔记与深度学习环境的搭建和部署(一) 文章末尾附加nvidia455.23.cuda11.1.cudnn8.0 ...
最新文章
- (六) Docker 容器命令
- 如何adb shell进入ctia模式
- python中用turtle绘制时钟_python使用turtle库绘制时钟
- 非常有趣的古越及吴语-台州话
- android studio 集成 第三方sdk,Android FrameWork集成第三方SDK的jar包和so庫
- 高擎信息安全大旗,打造“互联网+”新服务模式
- Android 系统(172)---如何使用addr2line命令解析native backtrace
- 2021年中国一氧化碳传感器市场趋势报告、技术动态创新及2027年市场预测
- Scala中的“=”和“-”
- vue filters使用
- Gibbs Sampling\吉布斯采样(三)
- PCWorld:Android游戏业务渐露锋芒
- 微波雷达传感器模块,智能感知人体存在,实时感应交互控制应用
- python可嵌入和可执行版本_Python可嵌入zip
- 3.5 基本属性测试
- NOIP2020微信步数
- 网站如何防御DDOS攻击
- 2022年物联网统计数据
- 游戏脚本引色粉,无脑圈钱攻略
- 多图上传以及多图排序的方法及流程详解
热门文章
- 免费的手游联运系统可以使用吗?
- Scrapy框架学习 - 爬取Boss直聘网Python职位信息
- 计算机音乐致爱丽丝,听音乐《致爱丽丝》
- scrapy源码分析(六)---------------CrawlProcess
- DMA-DAC音频播放调试笔记
- OPPO A73线刷包下载_OPPO A73密码忘记了?来这里搞定!
- 今天把一张人像照片制作成白色背景的一寸免冠照并进行打印排版!
- 厦门站报名开启!大量游戏开发干货来袭,《叫我大掌柜》主程加盟丨Cocos Star Meetings...
- 基于SpringBoot的教务系统【附源码】
- 2017年全国大学生电子设计大赛A题(微电网模拟系统)