I2C总线特点
1. I2C总线由飞利浦推出的一种串行总线
2. 具备多主机系统(可以外挂很多器件:如STM8,收音机等),具有总线裁决和高低速器件同步功能的高性能串口总线
3. I2C总线只有两根双向信号线:数据线SDA(Serial Data),时钟线SCL(Serial Clock)
4. I2C总线相当于公路主干道,外挂器件相当于交通工具,只要遵守协议就可以跑数据
5. I2C适合板载芯片之间的通讯,不适合远距离通讯
I2C总线协议
I2C总线通过上拉电阻(2.2K)接正电源。当总线空闲时,SDA和SCL都是高电平,连接到总线上任一器件输出低电平,那么总线信号遍低,即各器件与SDA和SCL都是“与”关系。
每一个器件都有一个地址
在多主机系统中,可能同时有几个主机启动总线,I2C总线会启用总线仲裁,决定有谁优先使用总线
I2C总线的数据传送
I2C总线进行数据传输时:
SCL为高电平期间,SDA数据保持稳定不能变化
SCL为低电平期间,SDA数据允许进行数据变化
I2C总线起始和终止信号
起始信号:SCL线高电平,SDA线由高电平->低电平
终止信号:SCL线高电平,SDA线由低电平->高电平
起始和终止都是主机发出,产生起始信号后,总线就处于被占用状态;产生终止信号后,总线就处于空闲状态
总结:SCL高电平,如果SDA电压不变,那么就是在传数据,如果SDA电压有变化,那么要么起始信号要么终止信号
在进行数据传输时,如果主机希望继续占用总线进行新的数据传输,那么可以不产生终止信号,马上再次发出起始信号即可
数据传输格式
主机字节发送和应答
每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。
主机发送完8个字节后,主机的SDA线电平就会拉高,进入空闲状态;同时从机会将SDA线拉底来应答主机,表示数据接收完毕。
总线寻址
I2C采用寻址为1个字节,定义如下:
第 0 位(R/T位)表示数据传输方向:0 表示主机向从机写数据(主机发送数据T),1 表示主机由从机读数据(主机接收数据R)
第 1 ~ 7 位表示从机的地址
相关电平持续时间规则
关键字:众拳 STM8 I2C
引用地址:
【众拳STM8 46 讲】I2C 串形总线工作原理
推荐阅读最新更新时间:2024-11-01 20:56
基于I2C接口的LED驱动器
LED无疑是当前最热的一个应用,无论是手持设备、游戏机、霓虹灯、广告牌等等,眩目的色彩及高质的光亮,总能第一时间吸引人的眼球。在当前众多的LED控制器面前,如何选择一款功能丰富且性价比又高的产品来迎合自己的设计,无疑是摆在每个设计师面前的问题。 最简单的LED驱动,我们可以用普通的I/O来实现。但I/O控制只能实现LED的ON与OFF,无法用来进行混光、闪烁等功能,而且每个LED都需要占用一个单独的I/O资源,无疑性价比很低。我们也可以用专用的大电流LED控制器来设计,但昂贵的成本首先会成为问题,而且设计复杂,程度也会跟着各种干扰的出现相应地提高。基于这些,恩智浦(NXP)推出一系列使用I2C接口的LED驱动器,它可以通过
[电源管理]
STM32F10x_硬件I2C主从通信 (轮询发送,中断接收)
Ⅰ、写在前面 关注我分享文章的朋友应该知道我在前面讲述过(软件、硬件)I2C主机控制从机EEPROM的例子。在I2C通信主机控制程序是比较常见的一种,可以说在实际项目中,很多应用都会使用到I2C通信。但在实际项目中作为I2C从机的应用相对要少的多,本文主要讲述关于【STM32F10x_硬件I2C主从通信】中STM32作为从机的例子。 在学习本问内容之前,如果对I2C协议还不太了解的朋友请先去了解一下I2C协议,或看我之前关于I2C通信的文章(我微信公众号和博客都有)。 关于STM32硬件I2C作为从机的文章网上很少(我在写本文之前也在百度、谷歌等网站上搜索了解过),我猜测大概的原因主要是两点:1.使用该功能的人比较少; 2
[单片机]
STM32 模拟I2C
使用STM32来访问I2C接口的铁电存储器,FM24CL16,2K字节 ================================= I2C的引脚配置: /* Configure I2C1 pins: SCL and SDA */ GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6 | GPIO_Pin_7; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_OD; GPIO_Init(GPIOB, &GPIO_InitStructure
[单片机]
8051单片机的I2C接口并行扩展
1 引 言
I2C总线接口器件在视频处理、移动通信等领域的应用已经非常普遍。另外,通用的I2C总线接口器件,如带I2C总线的RAM,ROM,A/D,D/A,LCD驱动器等,也越来越多地应用于计算机及自动控制系统中。随着I2C接口器件越来越广泛的应用,8051系列单片机与他之间的通信越来越频繁。
8051系列单片机与I2C总线接口器件通信时,8051的通用口与I2C总线器件的SCL,SDA连接。根据I2C总线数据传输协议,8051必须对其两个通用口进行频繁的置位、清零。根据基于51指令系统编制的汇编程序,传送一位数据,需要9个机器周期,而对于8051,一个机器周期要耗费6个时钟周期,即用54个时钟周期才能传送一位
[嵌入式]
Linux环境下基于I2C总线的EEPROM 驱动程序
1 引言 I2C (Inter-Integrated Circuit1总线是一种由Philips公司开发的2线式串行总线,用于连接微控制器及其外围设备。它是同步通信的一种特殊形式,具有接口线少、控制方式简单、器件封装形式小、通信速率较高等优点。在主从通信中,可有多个I2C总线器件同时接到I2C总线上,通过地址来识别通信对象。笔者在开发基于MPC8250的嵌入式Linux系统的过程中发现I2C总线在嵌入式系统中应用广泛,I2C总线控制器的类型比较多,对系统提供的操作接口差别也很大。与I2C总线相连的从设备主要有微控制器、EEPROM、实时时钟、A/D转换器等.MPC8250处理器正是通过内部的I2C总线控制器来和这些连接在I
[嵌入式]
TI最低功耗双向I2C隔离器延长工业隔离应用使用寿命
2012 年 12 月 19日,北京讯 日前,德州仪器 (TI) 宣布推出与 I2C 接口兼容、比同类竞争产品功耗低38% 的双向隔离器产品系列。每款最新集成电路 (IC) 都可取代 16 个或16个以上分立式器件的典型实施方案,在工业应用中隔离 I2C 信号。此外,ISO1540 和 ISO1541 与光耦合器相比,还可提供更优异的瞬态抗扰度,加快开关时间,从而可在电源、网络、电信、以太网供电 (PoE) 以及电池管理系统等应用中实现更长效持久的隔离。如欲了解更多详情或订购样片,敬请访问: www.ti.com.cn/product/cn/iso1540 。 ISO1540 与 ISO1541 采用支持二氧化硅隔离层 (SiO
[工业控制]
I2C之知(四)--I2C总线的7bit从机地址
时钟拉伸(Clock stretching) clock stretching通过将SCL线拉低来暂停一个传输.直到释放SCL线为高电平,传输才继续进行.clock stretching是可选的,实际上大多数从设备不包括SCL驱动,所以它们不能stretch时钟. 从字节级来看,一个设备可能在快速模式下接受数据,但是需要更多的时间来存储接收到的字节或者准备将要传输的另一个字节.从机可以以一种握手的处理方式在接受和应答字节后将SCL线拉低来强制使得主机进入wait状态知道从机准备好下一个字节的传输. 从位级来看,I2C总线上的设备可以通过增长每一个时钟的低周期来降低总线时钟.所以每个主机可以适应这个设备的内部操作速率. 在Hs模式,握
[嵌入式]
MSP430F5438 I2C学习笔记——AT24C02
0.前言 对于大多数单片机来说,I2C成了一个老大难问题。从51时代开始,软件模拟I2C成了主流,甚至到ARMCortex M3大行其道的今天,软件模拟I2C依然是使用最广的方法。虽然软件模拟可以解决所有的问题,但是总感觉没有充分发挥MCU内部的硬件资源。查阅了所有关于MSP430F5系列的图书,没有关于硬件I2C的应用代码,自己通过调试摸索,把经验总结之后和大家分享,希望大家喜欢。同时,I2C的使用可以分为等待法和中断法,从理解的角度来说等待法思路清晰易于上手,从功耗的角度出发,中断法可以灵活的进入低功耗模式,但是不易理解。本文先从等待法入手。 MSP430F5系列的硬件I2C使用大致会有以下问题: 【I2C地址设定】一
[单片机]