【基础知识】IIC(I2C)协议
文章目录
- 概述
- 时序
- 起始信号
- 停止信号
- 数据信号
- 应答信号
- 总时序
- IIC的地址
- I2C读写寄存器
- 写寄存器
- 读寄存器
概述
IIC(I2C)是一个同步半双工串行通信协议,使用3根线即可连接
名称 | 功能 |
---|---|
SCL | 时钟线 |
SDA | 数据线 |
GND | 接地 |
设计用于低速设备的连接,速度不及SPI,快于串口通信,接线简单。
有主机和从机之分,主机产生时钟信号,地址信号,从机根据地址选择是否收发数据,如果主机发送的地址与从机相同,则从机开始接受或发送数据,占用地址线。
电气连接如图
时序
不同的设备的具体发送的数据不同,但总体上主设备是先发送地址,再发送或接受数据
注意:iic是同步通信方式,允许不定长度的数据,也就是每一对起始信号和终止信号中间可以传输多个8bit数据
发送地址和数据的流程为
- 发送起始信号
- 发送地址
- 接受校验信号
- 发送或接受数据8bit
- 接受校验信号
- 重复
- 发送结束信号
SDA和SCL的默认电平为高电平(空闲状态)
起始信号
在空闲状态时(SCL,SDA为高电平),SDA产生下降沿为起始信号
注意:SDA如果要回到高电平,需要在SCL为低电平时动作,避免误触停止信号
如果SDA为低电平时,将其置高时,SDA高电平状态需要存留一段时间,
SDA与SCL下降沿之间也需要一段延迟
具体时间与外设有关
思路
- 拉高SDA和SCL,顺序无所谓,确保进入空闲状态
- 拉低SDA,产生下降沿,发送起始信号
- 拉低SCL,确保数据传输不好误触(也可以放到数据传输的最前)
停止信号
在SCL为高电平时,SDA产生上升沿信号,之后SCL,SDA全为高,进入空闲状态
注意,SCL与SDA的上升沿之间需要一定时间间隔,SDA的高电平需要持续一段时间
思路:
- 拉低SDA(默认从发送数据后SCL为低电平)
- 拉高SCL
- 拉高SDA,产生终止信号,回到空闲状态
数据信号
对于数据来说,只有SCL为低电平时才允许SDA发送电平变化
即SCL为高电平时SDA保持稳定,为高电平或低电平
就像这样,只有在SCL为低电平时才允许SDA变化
思路:
- 拉低SCL
- 改变SDA为自己的数据(发)
- 拉高SCl
- 读取SDA的电平(收)
- 重复到8次
应答信号
当数据传输完成后,需要产生一个校验信号,这是第9个时钟周期,应答信号由接受机产生
这个信号除了数据来源不同以外,与数据信号完全相同
SDA为低电平为应答,高电平为非应答
思路
- 拉低SDA(收)(默认从数据出来是低电平)
- 拉高SCL
- 读取SDA(发)
- 拉低SCL
总时序
读数据和写数据只有方向上的区别
注意:时钟信号是由主设备产生的,数据信号可以由主从设备操作
主设备产生时钟信号时不要忘记应答信号的时钟
接收时不要忘记应答信号
IIC的地址
地址由主机发送
从高位到低位发送7bit地址,最后一位是选择发送或接受数据
0是主机发送数据,1是主机接受数据
I2C读写寄存器
写寄存器
- 起始信号(开始I2C通信)
- 发送从设备地址(检测应答)
- 发送寄存器地址(检测应答)
- 发送数据直到完成(每次均检测应答)
- 发送结束信号
读寄存器
- 起始信号(开始I2C通信)
- 发送从设备地址(检测应答)
- 发送起始信号(表示发送的是寄存器地址)
- 发送寄存器地址(检测应答)
- 读取数据(发送应答信号)
- **读取到最后一个字节时(**发送非应答信号)
- 结束信号
【基础知识】IIC(I2C)协议相关推荐
- 计算机网络基础知识--TCP/IP协议、IP分组、TCP传输
转 计算机网络基础知识--TCP/IP协议.IP分组.TCP传输 2017年12月08日 08:35:09 孔维昊 阅读数 1820 查看全文 http://www.taodudu.cc/news/s ...
- 上传文件到tftp服务器,网络基础知识:TFTP协议之上传文件
原标题:网络基础知识:TFTP协议之上传文件 上传文件指的是客户端将本地上的文件上传到TFTP服务器上.下面介绍客户端如何进行文件上传,以及上传时所涉及的各类型数据包. 1.工作流程 客户端会向TFT ...
- 【嵌入式Linux】嵌入式Linux应用开发基础知识之I2C应用编程和SMBus协议及AP3216C应用编程
文章目录 前言 1.IIC协议和SMBUS协议 1.1.IIC协议 1.1.1.硬件框架 1.1.2.软件框架 1.1.3.读写数据格式 1.1.4.硬件结构--在硬件上是如何实现双向传输 1.2.S ...
- web基础知识(3)--HTTP协议与web框架与其他
一.HTTP协议 HTTP(Hyper Text Transfer Protocol 超文本传输协议 )协议是基于TCP/IP协议的用于传递数据的协议,其默认端口为80/TCP,简单来说就是客户端与服 ...
- 存储基础知识二 主要协议SCSI、FC、iSCSI
一.SCSI SCSI是小型计算机系统接口(Small Computer System Interface)的简称,于1979首次提出,是为小型机研制的一种接口技术,现在已完全普及到了小型机,高低端服 ...
- 3、以太网基础知识——ARP地址解析协议原理
返回目录 上一篇 下一篇 概述 地址解析协议,即ARP(Address Resolution Protocol),是根据IP地址获取物理地址的一个TCP/IP协议.网络层以上的协议用IP地址来标识网络 ...
- 网络基础知识-TCP/IP协议各层详解
TCP/IP简介 虽然大家现在对互联网很熟悉,但是计算机网络的出现比互联网要早很多. 计算机为了联网,就必须规定通信协议,早期的计算机网络,都是由各厂商自己规定一套协议,IBM.Apple和Micro ...
- 【网络】网络的基础知识--TCP/IP协议、IP分组、TCP传输
1.OSI参考模型: OSI(Open System Interconnect),即开放式系统互联.一般都称为OSI参考模型,是ISO(国际标准化组织)组织在1985年研究的网络互联模型.该体系结构标 ...
- Web基础知识之TCP_IP协议
TCP/IP协议 计算机网络体系结构分层 不难看出,TCP/IP 与 OSI 在分层模块上稍有区别.OSI 参考模型注重"通信协议必要的功能是什么",而 TCP/IP 则更强调&q ...
最新文章
- 29岁,从不学无术到技术Leader:这几个学习资源,决定你5年后的技术提升!
- flot中文API(转载)
- D455启用IMU后的RGB流故障报错
- 使用jMeter的csv data set config避免用户密码的硬编码
- python装饰器代码简洁_Python基础知识之装饰器(示例代码)
- EXPRESS项目PM2启动NODE_ENV传参数不生效问题解决方法
- 网页特效代码大全网址
- Unity中Camera的Clear flags,Culling Mask,Depth参数
- 阿里巴巴矢量图标库(Iconfont)-利于UI和前端的搭配
- 过滤Filtering
- python模拟登录12306_python基于selenium模块实现自动登录12306网站
- 字节跳动笔试难题 扑克牌的移动
- 自定义vscode插件路径及离线安装VSIX说明
- 微信小程序时间轴demo_微信小程序时间轴实现方法示例
- Python 改写__str__
- 国家气象局提供的天气预报接口
- 面向对象基础案例(2)
- UG NX 10.0 GRIP 二次开发
- 阿里最新秋招面经,腾讯/美团/字节1万道Java中高级面试题
- python calu_python自动重采样数据