I2C总线协议教程,接口与应用程序

目前,协议在网络安全中扮演着重要的角色嵌入式系统设计.如果您想扩展微控制器的外围功能,那么在不使用协议的情况下,复杂性和功耗将会增加。有不同类型的总线协议,如USART, SPI, CAN,I2C总线协议等,用于在两个系统之间传输数据。

I2C协议

什么是I2C总线?


两个或两个以上设备之间的信息传输和接收需要一个称为总线系统的通信路径。bob的是什么网站I2C总线是一种双向双线串行总线,用于在集成电路之间传输数据。I2C代表“内部集成电路”。它是由飞利浦半导体公司在1982年首次推出的。I2C总线由标准模式、快速模式和高速模式三种数据传输速度组成。I2C总线支持7位和10位地址空间器件,其工作原理随电压的降低而不同。

I2c总线协议
I2c总线协议

I2C信号线路

I2C信号线路
I2C信号线路

I2C是一种串行总线协议,由两条信号线(如SCL和SDL)组成,用于与设备通信。标准及校正实验所代表的是“串行时钟线”,而这个信号总是由“主设备”驱动。SDL代表“串行数据线”,该信号由主控设备或I2C外设驱动。当I2C外设之间没有转移时,这些SCL和SDL线路都处于开漏状态。

排水明沟输出


露天排水沟是FET晶体管的概念其中晶体管的漏极端为开路状态。主器件的SDL和SCL引脚是用晶体管开路设计的,所以只有这些晶体管进行数据传输才可能。因此,这些线路或漏极端子通过上拉电阻连接到VCC导通模式。

I2C接口

许多从设备与微控制器相连在I2C总线的帮助下,通过I2C电平移位IC实现它们之间的信息传输。I2C协议用于连接最多128个设备,这些设备都被连接到主设备和从设备的SCL和SDL线路上进行通信。它支持Multimaster通信,这意味着使用两bob的是什么网站个master来与外部设备通信。

I2C数据传输速率

I2C协议运行三种模式,即快速模式、高速模式和标准模式,其中标准模式的数据速度范围为0Hz ~ 100Hz,快速模式的数据传输速度为0Hz ~ 400khz,高速模式的数据传输速度为10khz ~ 100KHz。每一次传输都要发送9位数据,其中8位由发送端MSB发送给LSB,第9位是接收端发送的确认位。

I2C数据传输速率
I2C数据传输速率

I2C通bob的是什么网站信

I2C总线协议是最常用的主从通信协议,其中主从设备称为“微控制器”,从设备称为嵌入式系统中的其他设备,如ADC、EEPROM、bob的是什么网站DAC等。在I2C总线的帮助下,从设备的数量被连接到主设备,其中每个从设备由一个唯一的地址来通信。以下步骤用于主设备和从设备之间的通信:

步骤1:首先,主设备发出一个启动条件来通知所有的从设备,以便它们监听串行数据线。

步骤2:主设备发送目标从设备的地址,与所有连接到SCL和SDL线路的从设备地址进行比较。如果任何地址匹配,则选择该设备,其余所有设备将从SCL和SDL线路断开连接。

步骤3:在数据总线上的主设备和从设备之间建立通信之后,从设备收到了与主设备匹配的地址,并向主设备发出应答。bob的是什么网站

目的:主和从设备都根据通信是读还是写来接收和传输数据。bob的是什么网站

顾不上然后,主机可以向接收端发送8位的数据,接收端以1位的确认回复。

I2C教程

根据时钟脉冲,循序渐进地发送和接收信息称为I2C协议。它是一种系统间的短距离协议,即在电路板内部用于主从设备之间的通信。

I2C协议的基础

一般来说,I2C总线系统由两根导线组成,用于扩展输入输出外设特性,如ADC、EEROM和RTC,以及其他基本组件使系统的复杂性大大降低。

例子:由于8051微控制器没有内置ADC -因此,如果我们想要将任何模拟传感器接口到8051微控制器-我们必须使用ADC设备,如ADC0804-1通道ADC、ADC0808- 8通道ADC等。通过使用这些adc,我们可以将模拟传感器连接到单片机上。

无需使用协议扩展任何微控制器或处理器的I/O功能,我们可以去8255的8针器件。的8051微控制器是一种40针微控制器;使用8255芯片,我们可以扩展3-I/O端口,每个端口8引脚。通过使用所有的设备,如RTC, ADC, EEPROM,定时器等-扩大外围电路-复杂性,成本,功耗和产品尺寸也增加了。

为了克服这个问题,协议的概念出现了,以降低硬件复杂度和功耗。我们可以扩展更多的功能,如I/0外设,adc, T/C和内存设备多达128个设备使用这个I2C协议。
I2C协议术语

发送器:向总线发送数据的设备称为发射机。

接收方:从总线接收数据的设备称为接收器。

主:发起传输以产生时钟信号并终止传输的设备称为主控设备。

奴隶:由主设备编址的设备称为从设备。

Multimaster:多个主机可以同时尝试控制总线而不破坏消息,这种主机称为Multimaster。

仲裁:确保当多个主机同时试图控制总线时,只有一个主机可以这样做的过程;获奖消息未被损坏。

同步:同步两个或多个设备的时钟单点的过程称为同步。

I2C基本命令序列

  1. 起始位条件
  2. 停止位条件
  3. 确认条件
  4. 主从写操作
  5. 从主读操作

启动和停止位条件

当主(微控制器)希望与从设备(例如ADC)通信时,它通过在I2C总线上发出一个启动条件来开始通信,然后发出一个停止条件。bob的是什么网站I2C启动和停止逻辑电平如图所示。

I2C启动条件定义为SDA线从高到低的过渡,而SCL线是高的。当SCL线高时,SDA线从低切换到高时,I2C停止条件发生。

I2C主机总是生成S和P条件。一旦I2C主机启动一个START条件,I2C总线就被认为处于忙碌状态。

启动和停止位条件
启动和停止位条件

编程:

开始状态:

sbit SDA = P1 ^ 7;//初始化单片机的SDA和SCL引脚//
sbit sci = P1 ^ 6;
空白延迟(unsigned int);
void main ()

SDA = 1;/ / / /处理数据
sci = 1;/ /时钟高/ /
延迟();
SDA = 0;/ / / /发送数据
延迟();
sci = 0;//时钟信号低//

空白延迟(int p)

unsignedinta, b;
(= 0; < 255; + +);/ / / /延迟函数
(b = 0; b < p, b + +);

停止条件:

void main ()

SDA = 0;//停止处理数据//
sci = 1;/ /时钟高/ /
延迟();
SDA = 1;/ /停止/ /
延迟();
sci = 0;//时钟信号低//

空白延迟(int p)

unsignedinta, b;
(= 0; < 255; + +);/ / / /延迟函数
(b = 0; b < p, b + +);

确认(ACK)和不确认(NCK)条件

在I2C总线上传输的每一个字节后面都有一个来自接收器的确认条件,这意味着当主机将SCL拉低以完成8位的传输后,接收器将SDA拉低送到主机。如果,在接收器传输后不拉,SDA线LOW被认为是一个NCK条件。

确认(ACK)
确认(ACK)

编程

确认
void main ()

SDA = 0;//SDA线到低//
sci = 1;//时钟从高到低//
延迟(100);
sci = 0;

没有确认:
void main ()

SDA = 1;//SDA线到高//
sci = 1;//时钟从高到低//
延迟(100);
sci = 0;

主从写操作

I2C协议以报文或字节的形式传输数据。每个字节后面跟着一个确认位。

数据传输格式

数据传输格式
数据传输格式

开始:首先,由生成启动条件的主机发起的数据传输序列。

7位地址:在此之后,主服务器以两种8位格式发送从地址,而不是单一的16位地址。

R / W:如果读写位高,则执行写操作。

应答:如果写操作是在从设备上进行的,则接收端向微控制器发送1位的ACK。

站:从机写操作完成后,单片机将停止状态发送给从机。

编程

写操作

void (unsigned char d)

无符号字符k, j=0x80;
(k = 0; k < 8; k + +)

SDA =(曹磊);
J = > > 1;
sci = 1;
延迟(4);
sci = 0;

SDA = 1;
sci = 1;
延迟(2);
c = SDA;
延迟(2);
sci = 0;

主从读操作

数据以位或字节的形式从从设备读取回来——首先读取最高有效位,最后读取最低有效位。

数据读取格式

数据读取格式
数据读取格式

开始:首先,数据传输序列由生成启动条件的主机发起。

7位地址:在此之后,主服务器以两种8位格式发送从地址,而不是单一的16位地址。

R / W:如果读写位过低,则执行读操作。

应答:如果写操作是在从设备上进行的,则接收端向微控制器发送1位的ACK。

站:从机写操作完成后,单片机将停止状态发送给从机。

编程

无效的read ()

无符号char j, z=0x00, q=0x80;
SDA = 1;
(j = 0; < 8; j + +)

sci = 1;
延迟(100);
国旗= SDA;
如果(标志= = 1)

z = (z | q);
q = q > > 1;
延迟(100);
sci = 0;

8051单片机与ADC接口的实例

ADC是一种用于将模拟数据转换为数字形式和数字转换为模拟形式的设备。8051单片机没有内置ADC,所以我们必须通过I2C协议在外部添加。PCF8591是基于I2C的模拟到数字数字-模拟转换器。该设备最多可支持4个模拟输入通道,并提供2.5至6v电压。

模拟输出

模拟输出以电压的形式出现。例如,5v模拟传感器输出逻辑从0.01v到5v。
5v的最大数字值为256。
根据最大电压值,2.5v的值=123。

模拟输出的公式为:

数字输出公式:

接口ADC到8051微控制器
接口ADC到8051微控制器

上图显示了使用I2C协议从ADC设备到8051单片机的数据传输。将SCL和SDA的ADC引脚连接到单片机的引脚1.7和1.6上,建立两者之间的通信。bob的是什么网站当传感器将模拟值给ADC时,ADC转换为数字,通过I2C协议将数据传输给单片机。

这是关于I2C总线协议的教程和相应的程序。我们希望给定的内容能给您提供使用I2C通信将多个设备与微控制器接口的实用概念。bob的是什么网站如果您对本协议的接口过程有任何疑问,可以在下方评论与我们联系。

添加评论