产品概述

i2c单片机 什么是I2C总线,它有着哪些特点,设计时需要哪些细节?

小编 2024-10-09 产品概述 23 0

什么是I2C总线,它有着哪些特点,设计时需要哪些细节?

一、前言

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。

二、I2C总线开发设计需要注意点

1、总线容量及驱动能力

I2C总线的外围扩展器件都是CMOS器件,总线有足够的电流驱动能力,因此总线上扩展的节点数不由电流负载能力决定,而由电容负载确定。总线上每个实际节点器件的总线接口都有一定的等效电容,等效电容的存在会造成总线传输的延迟,导致数据传输出错。

通常总线负载能力为400pF,通常各个I2C器件都会有它自己的电容值,一般为不大于20pF,据此可计算出总线长度及节点数目的限制数量。总线上的每个外围器件都有一个器件地址,因此总线上扩展外围器件时也要受器件地址限制。

2、I2C总线的电气结构

I2C总线为双向同步串行总线,因此I2C总线接口内部为双向传输电路,如图所示。总线端口输出为开漏结构,故总线上必须有上拉电阻,上拉电阻与电源电压、SDA、SCL以及总线串接电阻有关,可参考有关数据手册进行选择,通常可选4.7K到10K。

3、每个节点都有一个固定的节点地址。

I2C总线为双向同步串行总线,因此总线上的单片机都可以成为主节点,其器件地址由软件给定,存放在总线的地址寄存器件中,称为主器件的从地址。在总线的多主系统中,单片机作为从节点时,其从地址才有意义,所以总线上所有的外围器件都有规范的器件地址。

4、I2C总线时序

I2C总线上数据传递时,总线上传送的每一帧数据均为一个字节。但启动总线后,传送的字节数没有限制,只要求每传送一个字节后,对方回应一个应答位。

在发送时,首先发送的是数据的最高位。每次传送开始有起始信号,结束时有停止信号。在总线传送完一个字节后,可以通过对时钟线的控制使传送暂停。

①时钟和数据发送:

SDA引脚通常使用外部设备拉高。SDA引脚上的数据只能在SCL为低电平时进行更改,SCL为高电平时数据更改将指示开始或停止条件。如图所示。

②起止条件:

SDA由高到低且SCL为高是启动条件,必须先于任何其他命令。SDA由低到高且SCL为高是停止条件,在一个读序列后,停止命令会使EEPROM进入待机模式。如图所示。

③应答:

所有地址和数据字均以8bit字连续传输到EEPROM,EEPROM发送一个"0"来应答,以确认它已收到每个字。应答发生在第九个时钟周期如图所示。

三、设计实例

我们对于AT24C256肯定不会陌生,这是ATMEL公司256kbit串行电可擦的可编程只读存储器,8引脚双排直插式封装,具有结构紧凑、存储容量大等特点,可以在2线总线上并接4片该IC,特别适用于具有高容量数据储存要求的数据采集系统。

EEPROM存储器设备既可以接收又可以发送数据。每个挂接在总线上的器件都有唯一一个地址识别。

主机访问EEPROM时,主机在向EEPROM发送完控制字节和地址信息后,紧接着向EEPROM存储器发送起始条件和控制信号并发送读标志位信号,切换数据的收发方向。接着在收到EEPROM的响应信号后便可以读出需要的数据了。

四、总结

通过以上实例,我们可以知道I2C优点主要表现在:

1、简化了硬件电路。在这种总线中只需要两根线,即串行数据线(SDA)和串行的时钟线(SCL)。

2、每个挂在总线上的I2C器件都有一个唯一的地址,并可以通过软件寻址。

3、因为在总线上可能有多个主I2C器件,因此I2C总线接口协议中有冲突监测和仲裁机制,以防止通信中的数据丢失或发生错误。

4、这种串行的两线双向的总线在标准模式下的速率为100kbit/s,在快速模式下的速率为400kbit/s,在高速模式下为3.4Mbit/s。

5、I2C器件中有滤波抗扰措施来保证数据的完整性。

6、在总线上挂接的器件数目是有限的,即总线上的容抗不能超过400pF。

干货分享之I2C模块

I2C总线是一种双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。

主器件通过串行数据(SDA)线和串行时钟 (SCL)线连接到其他从器件,每个器件都有一个唯一的地址识别(无论是微控制器、LCD 驱动器、存储器或键盘接口),除了LCD 驱动器(只能作为接收器)其他器件都可以作为数据的发送器和接收器。

I2C模块主要包含:

一个串行接口:一个数据引脚(SDA)和一个时钟引脚(SCL)

数据寄存器和FIF0:暂时保存SDA引脚与CPU之间传递的接收数据和发送数据

控制和状态寄存器。

外围总线接口:用于CPU访问I2C模块寄存器和FIF0s。

时钟同步器:用来使I2C输入时钟(由DSP时钟源产生)和SCL引脚的时钟同步,并且使数据发送器与不同的主机时钟速度同步

对输入到I2C模块的时钟进行分频的预定标器。

SDA和SCL引脚上的噪声滤波。

用来处理I2C模块和其它主器件的裁决问题的裁决器。

中断产生逻辑,用以向CPU发送中断信号。

FIF0中断产生逻辑:以便在I2C模块中接受数据或发送数据时能够同步访问FIF0。

时钟产生源:

当外部时钟源发射信号时DSP接受到这个信号后产生一个频率可编程的I2C输入时钟。

I2C输入时钟为CPU时钟,在I2C内部被两倍以上分频后产生I2C模块时钟和主机时钟。

模块时钟决定I2C以何种频率工作。I2C模块的可编程分频器通过对输入时钟来产生模块的时钟。为了与所有I2C协议时钟频率匹配,模块时钟必须配置在7-12MHz之间。分频器必须在I2C模块被复位时进行配置。当IRS从0变成1时所分频的频率才能有效。IRS=1时改变IPSC的值不起作用。

I2C模块操作

1.数据状态:只有当SCL是低电平时,数据线SDA自身的高低电平状态才能改变。

2.输入和输出电平:主设备为每个数据传输产生一个时钟脉冲。因为连接到I2C总线的设备采用的技术标准不同,所以逻辑0(低电平)和逻辑1(高电平)是不固定的,与设备的VDD值有关。

3.操作模式:如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。

4.I2C模块的起始和停止条件:当I2C模块作为主机时,就由这个模块来控制起始和停止。

当SCL为高电平,SDA数据线产生由高到低的跳变时,表示起始条件产生。主机通过产生这样这样的条件来表明数据传送开始

当SCL为高电平,SDA数据线产生由低到高的跳变时,表示停止条件产生。主机通过产生该条件表明数据传送停止结束。

5.串行数据格式:I2C模块可以传输1-8位的数据。SDA数据线上每一位的维持时间相当于SCL的一个脉冲。传输数据时,都是高有效位字节开始传送。发送和接受数据的个数没有限制。

每个数据传输结束后,主机可以再次驱动一个起始信号。有了这个功能,主机就可以和多个从机通信,不需要通过驱动停止信号来放弃总线控制权。

6.时钟同步。SCL的“线与”特性指的是在SCL上首先产生低电平的设备会控制其它的设备。这个由高到低的跳变,强制其它设备的时钟发生器开始其低电平周期。并且只要有设备的时钟信号为低则SCCL一直保持为低电平。必须等到SCL被释放后其它设备才能结束它们的低电平周期,开始其高电平周期。

SCL上产生的同步信号中,低电平周期的长度由最慢的设备决定,高电平周期的长度则是由最快的设备决定。

想要进阶单片机的同学,回复入门资料,加入我们,就可以与导师一对一互动,快速成长

相关问答

STM32 单片机 可以用来做人机交互界面吗?

原则上来说,只要支持ADC就能实现电阻触摸屏输入。电容式触摸屏有的stm32单片机可以支持支持。但是在实际项目中,通常采用模块化的设计,电容触摸屏和控制器通常...

AT24C02在 单片机 中是如何使用的,功能是什么呢?

I2C总线由单片机控制,挂在I2C总线上的设备可以很多个,每个有独立的地址,A0,A1,A2。。。但单片机发送地址后,该地址的设备就会被激活,向单片机反馈一个应答...

PIC 单片机i2c 总线的上拉电阻多大?

电压个单片机高电平电压匹配,低速100khz的I2C上拉一般是10K,高速I2C(400kz)上拉选择1k电压个单片机高电平电压匹配,低速100khz的I2C上拉一般是10K,高速I2C(40...

stc8 单片机 i/o口有几种工作模式?

stc8单片机i/o口有下列四种工作模式:①标准双向输入/输出②推挽输出具有很强的推动能力③高阻态输入I/O接口写入1或0不改变接口的电平,I/O接口只能用于输...

单片机 、光耦

[回答]1系统总体结构原理粮食在储藏期间,由于受环境、气候和通风条件等因素的变化,粮仓内温度或湿度会发生异常,这极易造成粮食的霉烂、或发生虫害。那么...

单片机 的IO口是不是既可以串行使用也可以并行使用?

是的。所有的I/O都可以并行使用也可以串行使用,但串行使用要看情况,如果单片机内部具有诸如UART、I2C、SPI硬件模块的,可以通过对模块进行配置而直接使用。如...

单片机 新唐下面求注释.void I2C _Ctrl(uint8_tstart,uint8_tst...

[最佳回答]那个"__IO"是采用的宏定义,其原型是#define__IOvolatilevolatile的英语原意思是“易变”的,用来修饰变量,表示这个变量是要时时从内存中读取的,....

单片机 ,什么是串行口,什么是并行口? - 珂珂珂的 的回答 - 懂得

有一根时钟线,一根数据线,一个时钟周期传送二进制1位,要传送一个字节至少需要8个时钟周期,串行线根数少,远程传输抗干扰能力强,成本低。...并行接...

单片机 ,什么是串行口,什么是并行口? - 小小一个小明 的回...

有一根时钟线,一根数据线,一个时钟周期传送二进制1位,要传送一个字节至少需要8个时钟周期,串行线根数少,远程传输抗干扰能力强,成本低。...并行接...

单片机 和ARM有什么区别?

欢迎大家关注狗哥,学习更多单片机干货1、单片机指单芯片上集成了控制器、存储器以及如定时器、SPI、IIC等外部设备于一体的片上系统,可以用来执行复杂的功能,...

猜你喜欢