关于I2C总结

I2C是一种串行通信  拥有SDA和SCL高速传输的一种协议。拥有高电平采集数据,只能低电平改变SDA上的数据的特点

简单阐述I2C时序和工作原理:

1.起始信号和终止信号

备注:起始:在SCL高电平期间:SDA拉低作为起始信号

终止:在SCL高电平期间:SDA拉高作为终止信号

2.读数据操作:

数据传输切记:

1.SCL与SDA对应好。不要SDA操作的时钟和SCL操作时钟不一致(如果SCL自己单独做个时钟的话)建议按步一步步来

2.读数据时高电平采集

3.写数据:

时间: 2024-08-07 00:15:29

关于I2C总结的相关文章

【资源共享】Rockchip I2C 开发指南 V1.0

2C设备的设备应用非常广泛,常见的包含重力传感器,触摸屏驱动芯片,音频解码等 这个文档是RK3399的I2C开发文档:<Rockchip I2C 开发指南 V1.0> 内容预览: 下载地址:http://developer.t-firefly.com/thread-12495-1-1.html

STM32F4XX高效驱动篇2 I2C

说到I2C很多用过STMF10X硬件I2C方式的工程师,都感觉有点头痛.大部分还是使用软件模拟的方式,I2C由于一般的工作频率是400,100KHz.所以在平凡读取,或所读数据量大时,使用这模拟的方式,还是比较浪费CPU有效工作时间的. 在之前的使用I2C的经历中,主要是I2C死锁问题让我也困扰了一段时间.不过后来经过多方资料,最后还是把这个问题解决了.以下驱动程序已集成了此功能. 什么是死锁,在I2C主设备进行读写操作的过程中.主设备在开始信号后控制SCL产生8个时钟脉冲,然后拉低SCL信号为

I2C笔记

  SCL:上升沿将数据输入到每个EEPROM器件中:下降沿驱动EEPROM器件输出数据.(边沿触发) SDA:双向数据线,为OD门,与其它任意数量的OD与OC门成"线与"关系. 一.协议 1.空闲状态 I2C总线总线的SDA和SCL两条信号线同时处于高电平时,规定为总线的空闲状态.此时各个器件的输出级场效应管均处在截止状态,即释放总线, 由两条信号线各自的上拉电阻把电平拉高. 2.起始位与停止位的定义: 起始信号:当SCL为高期间,SDA由高到低的跳变:启动信号是一种电平跳变时序信号

I2C总线介绍及AT24C02驱动编写 笔记

中断处理程序 { 清除中断 硬件自动清除 软件清除 } CPU芯片手册相关章节 -------- I2C CPU外接设备的方式 1)GPIO简洁的方式(按键,LED) 通过设置GPIO管脚的状态来完成通信(控制) gpccon gpcpud gpcdat 2)类似于内存的接口 (DDRAM norflash nand dm9000) 从硬件上看CPU和芯片 数据线 地址先  BANK 3)协议类接口 uart I2C AT24C02    EEPROM 3,如何解决CPU和设备通信的问题 I2C

温度传感器+I2C+串口+PC上位机(pyserial)例子

例子写的有点乱,主要是学习: 温度传感器DS18b20,E2PROM,I2C, 串口读写,PC上位机(pyserial)数据显示 SerialPort.py     PC串口上位机程序,可以设定上限报警温度 需要安装Python3以上,pyserial库,例子在Python3.4下写的. 上位机传给单片机上限报警温度后,单片机存入E2PROM, 单片机断电重启后,从E2PROM读取报警值. i2c.h             I2C总线读写和设定 lcd1602.h         lcd160

I2C相关知识学习

通过I2C访问的模块: SFP.XSFP.QSFP.QSFP28等等 通过MDIO访问的模块: X2.CFP/CFP2/CFP4.XENPARK等等 SDA:数据线,主机从机都能够控制. SCL:时钟线,由主机控制 数据在时钟为高电平时有效: SCL H H H H L SDA H->L L->H L H ALL FLAG Start Stop 0 1 invalid I2C中一个完整的数据包由9个字节组成: 器件地址有7位,总共地址128个,预留16个地址(0xFxxx, 0x0xxx),剩

nRF52832之硬件I2C

这几天一直在折腾nRF52832的硬件I2C,到了今天最终出现了成果,在此也印证了那句话:"耕耘就有收获" 52832的硬件I2C尽管官方提供了demo,可是自己对I2C通信理解的不够深入,再一个52832的代码也封装的太深了.可是对接口函数没有一个明白的解释(也能够说是我英文太渣,别人写了可是我没看懂. . .),这样对于首次接触nRF产品的人就造成了一定的难度 依据我的开发过程,还是先说明一下I2C的一些相关知识,由于我是先调硬件I2C搞了半天不正确头,然后再开发模拟I2C,模拟的

[I2C]pca9555应用层测试代码

驱动方面: 首先配置I2C内核驱动,将pca9555的源码built-in进入(这里根据需要可能要配thermal的驱动),然后在devicetree中根据pca9555硬件I2C地址配置节点. 测试源码: // I2C test program for a PCA9555 #include <stdint.h> #include <stdlib.h> #include <stdio.h> #include <unistd.h> #include <l

【转载】GPIO模拟i2c通信

I2C总线的通信过程(见图4-8)主要包含三个主要阶段:起始阶段.数据传输阶段和终止阶段. 1. 起始阶段 在I2C总线不工作的情况下,SDA(数据线)和SCL(时钟线)上的信号均为高电平.如果此时主机需要发起新的通信请求,那么需要首先通过SDA和SCL发出起始标志.当SCL为高电平时,SDA电平从高变低,这一变化表示完成了通信的起始条件. 在起始条件和数据通信之间,通常会有延时要求,具体的指标会在设备厂商的规格说明书中给出. 2. 数据传输阶段 I2C总线的数据通信是以字节(8位)作为基本单位

S5PV210-arm-裸机-i2c

I2C协议,是同步的,串行通信方式.有两个线,一根SCLOCK时钟线,一根SDA数据线,时钟是右SOC提供的,SOC和外设用I2C通信时,使用的是一个时钟,数据线是两者传输信息用的.一般在通信的过程中,分为主设备和从设备,如果主设备要向从设备发送信息时,从设备不可以发送东西. 可以一对一进行I2C通信,也可以一对多进行I2C通信,在一对多I2C通信时,主设备像往常一样先把SDA,SCL拉高,SCL维持高电平的这一段时间里,SDA产生了一个由高电平到低电平的变化,就成功发送了一个起始位,这时,所有