PTL中文资料IIC总线接口功能描述
- 格式:docx
- 大小:645.72 KB
- 文档页数:5
一、I2C总线:i2c总线是Philips 公司首先推出的一种两线制串行传输总线。
它由一根数据线(SDA)和一根时钟线(SDL)组成。
i2c总线的数据传输基本过程为:1、主机发出开始信号。
2、主机接着送出1字节的从机地址信息,其中最低位为读写控制码(1为读、0为写),高7位为从机器件地址代码。
3、从机发出认可信号。
4、主机开始发送信息,每发完一字节后,从机发出认可信号给主机。
5、主机发出停止信号。
应答信号:既认可信号,主机写从机时每写完一字节,如果正确从机将在下一个时钟周期将数据线(SDA)拉低,以告诉主机操作有效。
在主机读从机时正确读完一字节后,主机在下一个时钟周期同样也要将数据线(SDA)拉低,发出认可信号,告诉从机所发数据已经收妥。
(注:读从机时主机在最后1字节数据接收完以后不发应答,直接发停止信号)。
/images/blog/2006/6/12/15/13/10c132158a9.jpg注意:在I2C通信过程中,所有的数据改变都必须在时钟线SCL为低电平时改变,在时钟线SCL为高电平时必须保持数据SDA信号的稳定,任何在时钟线为高电平时数据线上的电平改变都被认为是起始或停止信号。
I2C.C标准80C51模拟I2C总线程序(主模式,通用)******************************************************************************/#i nclude <REG52.H>#i nclude "I2C.H"//模拟I2C总线的管脚定义sbit I2C_SCL = P1^6; //定义I2C总线时钟信号sbit I2C_SDA = P1^7; //定义I2C总线数据信号/******************************************************************************函数:I2C_Delay()功能:模拟I2C总线延时说明:请根据具体情况调整延时值******************************************************************************/ void I2C_Delay(){unsigned char t;t = 10;while ( --t != 0 ); //延时2*t个机器周期}/******************************************************************************函数:I2C_Init()功能:I2C总线初始化,使总线处于空闲状态说明:在main()函数的开始处,应当执行一次本函数******************************************************************************/ void I2C_Init(){I2C_SCL = 1; I2C_Delay();I2C_SDA = 1; I2C_Delay();}/****************************************************************************** 函数:I2C_Start()功能:产生I2C总线的起始条件说明:SCL处于高电平期间,当SDA出现下降沿时启动I2C总线本函数也用来产生重复起始条件******************************************************************************/ void I2C_Start(){I2C_SDA = 1; I2C_Delay();I2C_SCL = 1; I2C_Delay();I2C_SDA = 0; I2C_Delay();I2C_SCL = 0; I2C_Delay();}/****************************************************************************** 函数:I2C_Write()功能:向I2C总线写1个字节的数据参数:dat是要写到总线上的数据******************************************************************************/ void I2C_Write(unsigned char dat){unsigned char t = 8;do{I2C_SDA = (bit)(dat & 0x80);dat <<= 1;I2C_SCL = 1; I2C_Delay();I2C_SCL = 0; I2C_Delay();} while ( --t != 0 );}/****************************************************************************** 函数:I2C_Read()功能:从从机读取1个字节的数据返回:读取的1个字节数据******************************************************************************/ unsigned char I2C_Read(){unsigned char dat;unsigned char t = 8;I2C_SDA = 1; //在读取数据之前,要把SDA拉高,使之处于输入状态do{I2C_SCL = 1; I2C_Delay();dat <<= 1;if ( I2C_SDA ) dat++;I2C_SCL = 0; I2C_Delay();} while ( --t != 0 );return dat;}/****************************************************************************** 函数:I2C_GetAck()功能:读取从机应答位(应答或非应答),用于判断:从机是否成功接收主机数据返回:0-从机应答1-从机非应答说明:从机在收到每一个字节后都要产生应答位,主机如果收到非应答则应当终止传输******************************************************************************/ bit I2C_GetAck(){bit Ack;I2C_SDA = 1; I2C_Delay();I2C_SCL = 1; I2C_Delay();Ack = I2C_SDA;I2C_SCL = 0; I2C_Delay();return Ack;}/****************************************************************************** 函数:I2C_PutAck()功能:主机产生应答位(应答或非应答),用于通知从机:主机是否成功接收从机数据参数:Ack = 0:主机应答Ack = 1:主机非应答说明:主机在收到每一个字节后都要产生应答,在收到最后一个字节时,应当产生非应答******************************************************************************/ void I2C_PutAck(bit Ack){I2C_SDA = Ack; I2C_Delay();I2C_SCL = 1; I2C_Delay();I2C_SCL = 0; I2C_Delay();}/****************************************************************************** 函数:I2C_Stop()功能:产生I2C总线的停止条件说明:SCL处于高电平期间,当SDA出现上升沿时停止I2C总线******************************************************************************/ void I2C_Stop(){I2C_SDA = 0; I2C_Delay();I2C_SCL = 1; I2C_Delay();I2C_SDA = 1; I2C_Delay();}/****************************************************************************** 函数:void I2C_On()功能:启动I2C总线收发数据返回:0-正常,1-异常(无应答)说明:参数Mode是操作模式,决定I2C总线收发格式。
I2C串行总线通信原理采用串行总线技术可以使系统的硬件设计大大简化、系统的体积减小、可靠性提高。
同时,系统的更改和扩充极为容易。
常用的串行扩展总线有:I2C (Inter IC BUS)总线、单总线(1-WIRE BUS)、SPI(Serial Peripheral Interface)总线等。
本章仅讨论I2C串行总线。
一、IIC概述IIC(Inter-Integrated Circuit)总线,许多文献写作I2C,主要用于同一电路板内各集成电路模块(IC)之间的连接。
IIC采用双向2线制串行数据传输方式,简化IC之间的通信连接。
IIC协议是PHILIPS公司于二十世纪八十年代初提出,其后,PHILIPS和其他厂商提供了种类丰富的IIC兼容芯片。
目前,IIC总线标准已经成为世界性的工业标准。
各大半导体公司推出了大量的带有IIC接口的芯片,如RAM、EEPROM、Flash ROM、A/D、D/A转换、LED/LCD驱动、I/O接口、实时时钟等。
二、IIC总线特点在硬件结构上,它采用数据(SDA)和时钟(SCL)两根线来完成数据的传输及外围器件的扩展,任何一个具有IIC总线接口的外围器件,不论其功能差别有多大,都具有相同的电气接口,因此都可以挂接在总线上,使其连接方式变得十分简单。
对各器件的寻址是软寻址方式,因此节点上没有必须的片选线,器件地址给定完全取决于器件类型与单元结构,这也简化了IIC系统的硬件连接。
另外IIC总线能在总线竞争过程中进行总线控制权的仲裁和时钟同步,并且不会造成数据丢失,因此由IIC总线连接的多机系统可以是一个多主机系统,支持多主控。
串行的8位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s。
三、IIC总线的相关术语①主机(主控器):在IIC总线中,提供时钟信号,对总线时序进行控制的器件。
主机负责总线上各个设备信息的传输控制,检测并协调数据的发送和接收。
1.电气特性I2C运用一个漏极开路/集电极开路和一个输入缓冲在同一个线路上,它能够使用单一的数据线来传输双向数据流1.1漏极开路增益对于双向通信漏极开路参考一典型的输出,它能够上拉总线到电压(地,在大多数情况下)或者“释放”总线和让他通过一个电阻上拉,万一总线被主设备或者从设备使用,上拉的电阻(R PU)在线路上是为了负责上拉总线电压到电源线路上,即使没有一个器件强迫线路电源为高,这就意味着这个总线不会发生通信错误,当一个设备尝试传输高电平,和另一个设备传输低电平,造成一个短路(电源线路到地),I2C需要如果一个主设备在一个多个主设备的环境中传输高电平,但是看到这个线路上的数据是低电平(另一个设备被拉低),为了去停止通信,因为另一个设备正在运用这个总线,被上拉的接口不会允许接口的类型自由,这个就是I2C的好处。
图2显示了一个简单在SDA/SCL总线上的主或者从设备的内部结构框图,由一个输入缓冲器去读输入数据,一个下拉的FET去传输数据,一个设备是能够把总线拉低的(提供短路到地)或者释放总线(高阻抗到地)和允许上拉电阻到电源电路中,这是一个重要的概念去实现,当总线处理多个I2C器件时,没有一个设备能够保持这个总线为高电平,这个属性是允许双向通信的1.1漏极开路下拉到地正如之前描述的在之前的章节中,漏极开路的也许会设置上拉总线为低,或者释放总线和上拉一个电阻到电源,图3显示了数据流将数据将总线拉低,逻辑想要去传输一个低电平激活下拉的场效应管,将会提供一个短暂的时间到地,将线路拉低。
1.1.2 漏极开路释放总线当主设备或者从设备想要传输一个逻辑高电平时,它有可能释放总线通过关闭下拉的场效应管,这个电平总线悬浮,上拉的电阻上拉电压到电压线路中,它将被认为是一个高电平,数据4显示了数据流通过一个上拉的电阻将数据总线保持高电平。
2I2C接口2.1通用I2C操作这个I2C总线是一个标准的双向接口,运用一个控制器,就是众所周知的主设备,去控和从设备沟通,一个从设备不会去传输数据,除非它的地址已经被主设备所获得了,每个设备在I2C总线上都有一个唯一的器件地址去区别于其他下挂在I2C总线上的设备,许多从设备在启动时将会做一些启动设置,这是每个从设备通常会做的当这个主设备接入这个从设备的内部寄存器,就会获得一个专用的寄存器地址,一个设备将会有一个或者多个寄存器去存储,读,写的数据。
飞利浦I2C总线产品简介Introduction to Philips I2C Bus飞利浦半导体I2C总线简介I2C(集成电路间互连总线)是由飞利浦公司于上世纪80年代早期开发的。
它是一个简单的两线总线,包括一条数据线和一条时钟线。
目前I2C已经成为重要的全球业界标准,被所有主要的IC厂商所认同和使用。
它具有多种机功能和仲裁特性,采用主控-伺服通讯方式,通常在某一时刻,只有两个器件进行通信,广播呼叫例外,此种情形下伺服设备可充当伺服接收机或伺服发射机使用。
I2C是低数据速率方式,用于短距离用途。
目前的I2C指标显示,它的速度可以做到100kHz、400kHz和3.4MHz,不过还没有出现3.4MHz的产品。
400kHz产品是经过了很长一段时间才变得普及,3.4MHz走向应用尚需时间。
这里将主要讨论100kHz、400kHz产品。
I2C没有规定的电缆长度,唯一的限制是I2C总线规范,它规定I2C 的最大电容是400pF,现在通过使用缓冲器如P82B96可以延长总线的距离。
所有的I2C硬件架构均为漏极开路或集电极开路设计,具有上拉电阻。
上拉电阻的值为2-10千欧,它们不超过I2C规范中3mA反向电流的规定和上升时间的规定。
大多数飞利浦伺服设备的SCL上没有下拉电阻。
有一点特别重要,即设备的最大输入电容是10pF。
I2C总线与其它总线如UART、CAN、USB、SPI相比,在性能上各有千秋,I2C的优点是它非常简单,如在一个微控制器上使用两个插脚来产生I2C。
I2C得到应用的时间比较长,为众多工程师所了解,也有着大量的产品系列支持。
I2C技术及产品介绍飞利浦I2C器件飞利浦拥有一系列的新器件用来克服规范指标上的限制,以扩展I2C使用。
I2C总线的主要局限是它的7位地址,通过使用飞利浦的I2C多路复用器,可以在一条总线上使用具有相同地址的相同设备。
多路复用器允许应用工程师将主I2C总线动态划分为几个子分支,以解决I2C地址冲突。
I2C总线接口功能描述总线接口数据通过DATA与CLK在微处理器与PT2313L之间传输。
DATA和CLK构成总线接口。
需要注意的是,上拉电压电阻必须连接到正电源。
数据有效性数据线上的数据只有在时钟信号为高电平状态时才被认为稳定有效。
数据线上的上下状态只有在时钟信号为低电平时才允许变化。
请参考以下图。
起始和停顿条件当满足以下条件时,起始状态被激活:1.CLK为高电平;2.DATA从高变为低。
停顿的条件是:1.CLK设置为高电平;2.DA TA从低变为高。
请参阅下面的时序图:字节格式每一个在数据线上传输的字节由8bit组成。
每个字节必须跟一个应答位。
最高位首先发送。
应答在应答脉冲时,主机〔微处理器〕将数据线置为高阻态。
应答的从机〔音频处理器〕在应答时必须下拉〔低电平〕数据线,所以在应答时数据线是稳定的低电平状态。
请参考以下图。
音频处理器已被设计为在接收完每一个字节后必须产生一个应答位,否那么,数据线将在第九个时钟脉冲时仍保持高电平。
在这种情况下,主机发送器可以产生终止信号以中止数据传输。
传输无应答如果你想撤销音频处理器的应答检测,可以使用一个简单的微处理器传输。
等待一个时钟周期,并且不检测这个时钟周期的应答然后再发送新的数据。
如果你使用这种方法,有很大的几率造成误操作而且降低降噪能力。
接口协议接口协议包括以下内容:●一个起始位●一个芯片内地址字节=88H●ACK=应答位●一个数据字节●一个中止位请参考以下图:注意:ACK=应答最大时钟速度=100Kbit/S软件标准PT2313L地址PT2313L地址如下所示:数据字节其中:注意:*=只有28pin版本提供了响度和音调控制功能。
I2C总线接口启动时间接通电源后,PT2313L需要一个很短的延时以确保稳定。
这个延时的长短与Cref的值有关。
当Cref的值为10μF时,PT2313L发送I2C总线信号的延时至少为300mS。
如果这个延时低于300mS,I2C控制可能会失败。
IIC总线工作原理1. 概述IIC(Inter-Integrated Circuit)总线是一种用于连接微控制器和外部设备的串行通信接口。
它由飞利浦公司(现在的恩智浦半导体公司)在1982年开发,并被广泛应用于各种电子设备中。
IIC总线具有简单、灵活、高效的特点,适用于连接各种不同类型的芯片和传感器。
2. IIC总线结构IIC总线由两根信号线组成:SDA(Serial Data Line,串行数据线)和SCL(Serial Clock Line,串行时钟线)。
SDA用于数据传输,而SCL用于同步传输。
3. IIC总线基本原理IIC总线采用主从式结构,在总线上有一个主设备(Master)和一个或多个从设备(Slave)。
主设备负责发起并控制通信过程,而从设备则被动地接受和响应主设备的命令。
3.1 主从式通信在IIC总线上进行通信时,主设备负责生成时钟信号,并通过SDA发送数据。
从设备则根据主设备提供的时钟信号进行数据读取或写入操作。
3.2 起始条件和停止条件为了确保通信的可靠性,IIC总线在数据传输前需要进行起始条件(Start Condition)和停止条件(Stop Condition)的设置。
•起始条件:主设备将SCL线保持高电平的同时,将SDA线由高电平拉低。
这个过程表示通信即将开始,从设备准备好接收数据。
•停止条件:主设备将SCL线保持高电平的同时,将SDA线由低电平拉高。
这个过程表示通信结束,从设备可以终止数据传输。
3.3 时钟同步IIC总线使用时钟同步方式进行数据传输。
主设备通过在SCL线上产生时钟脉冲来驱动数据传输。
每个时钟周期内,主设备和从设备在SDA上读取或写入一个比特位的数据。
3.4 数据帧格式IIC总线采用帧格式进行数据传输,每个帧由一个起始位、8个数据位和一个确认位组成。
起始位指示数据传输的开始,而确认位用于检测通信是否成功。
3.5 主从设备地址为了区分不同的从设备,IIC总线使用7位或10位地址对它们进行编号。
I2c总线原理及其在单片机接口中的应用实例The Principle of I2C-Bus and its Realization in MCU Interface摘要:本文介绍了I2C总线的结构及通信原理,并以串行芯片E2PROM存储芯片AT24C02为例,给出了在单片机上,利用基本I/O口实现I2C总线的方法。
关键词:I2C AT24C02I2C总线介绍:I2C总线是英文INTER IC BUS或 IC TO IC BUS的简称,十多年前由PHILIPS公司推出,是近年来微电子通信控制领域广泛采用的一种新型总线标准,它是同步通信的一种特殊形式,具有接口线少,控制方便简化,器件封装形式小,通信速率较高等优点。
在主从通信中,可以有多个I2C总线器件同时接到I2C总线上,所有I2C兼容的器件都具有标准的接口,通过地址来识别通信对象,使它们可以经由I2C总线互相直接通信。
I2C总线是由数据线SDA和时钟线SCL构成的串行总线,可发送和接收数据。
在CPU与被控IC之间、IC与IC之间进行双向传送,最高传送速率为400kb/s,各种被控电路均并联在这条总线上,每个电路都有唯一的地址。
在信息的传输过程当中,I2C总线上并联的每一个模块电路既是被控器(或是主控器),又是发送器(或是接收器),这取决于它所要完成的功能。
CPU 发出的控制信号分为地址码和数据码两部分:地址码用来选址,及接通需要控制的电路;数据码是通信的内容,这样各控制电路虽然挂在同一条总线上,却彼此独立。
I2C总线的数据传输:在传输数据开始前,主控器件应发送起始位,通知从器件做好接收准备;在传输数据结束时,主控器件应发送停止位,通知从器件停止接收,起始位时序:当SCL位为高位时,SDA线由高到低的转换。
停止位时序:当SCL位为高位时,SDA线由低到高的转换。
SDA上的数据在时钟高电平期间必须保持稳定,在SCL低电平期间才可以改变,输出到SDA 线上的每个字节必须是8位,每次传输的字节不受限制,每个字节必须有一个确认位(又称应答位ACK),与确认位对应的时钟脉冲由主控器产生,发送器在应答期间必须拉低SDA线。
P T L中文资料I I C总线接
口功能描述
Revised by Liu Jing on January 12, 2021
I2C总线接口功能描述总线接口
数据通过DATA与CLK在微处理器与PT2313L之间传输。
DATA和CLK构成总线接口。
需要注意的是,上拉电压电阻必须连接到正电源。
数据有效性
数据线上的数据只有在时钟信号为高电平状态时才被认为稳定有效。
数据线上的高低状态只有在时钟信号为低电平时才允许变化。
请参考下图。
起始和停止条件
当满足下列条件时,起始状态被激活:
1.CLK为高电平;
2.DATA从高变为低。
停止的条件是:
1.CLK设置为高电平;
2.DATA从低变为高。
请参阅下面的时序图:
字节格式
每一个在数据线上传输的字节由8bit组成。
每个字节必须跟一个应答位。
最高位首先发送。
应答
在应答脉冲时,主机(微处理器)将数据线置为高阻态。
应答的从机(音频处理器)在应答时必须下拉(低电平)数据线,所以在应答时数据线是稳定的低电平状态。
请参考下图。
音频处理器已被设计为在接收完每一个字节后必须产生一个应答位,否则,数据线将在第九个时钟脉冲时仍保持高电平。
在这种情况下,主机发送器可以产生终止信号以中止数据传输。
传输无应答
如果你想撤销音频处理器的应答检测,可以使用一个简单的微处理器传输。
等待一个时钟周期,并且不检测这个时钟周期的应答然后再发送新的数据。
如果你使用这种方法,有很大的几率造成误操作而且降低降噪能力。
接口协议
接口协议包括以下内容:
●一个起始位
●一个芯片内地址字节=88H
●ACK=应答位
●一个数据字节
●一个中止位
请参考下图:
注意:
ACK=应答
最大时钟速度=100Kbit/S
软件规范
PT2313L地址
PT2313L地址如下所示:
数据字节
其中:Ax=1.25dB/steps; Bx=10dB/steps; Cx=2dB/steps;
Gx=3.75dB/steps
注意:*=只有28pin版本提供了响度和音调控制功能。
I2C总线接口启动时间
接通电源后,PT2313L需要一个很短的延时以确保稳定。
这个延时的长短与Cref的值有关。
当Cref的值为10μF时,PT2313L发送I2C总线信号的延时至少为300mS。
如果这个延时低于300mS,I2C控制可能会失败。
请参考下图:
音量
下表给出了音量数据字节的详细描述。
例如:设定音量值为-37.5dB的值为00011110。
扬声器衰减器
下表给出了扬声器衰减器数据字节的详细描述。
例如:使RF(Right Front
音频开关数据字节
下表给出了音频开关数据字节的详细描述。
例如:(在28pin的PT2313L 上)设置为立体声1输入,响度增益为+11.25dB时这个数据字节应为:01000000.
注意:
1.*=立体声4是内部连接。
2.**=仅适用于28pin的版本。
音调数据字节
下表给出了音调数据字节的详细描述。
例如:使高音为-12dB的值为01110001
单位:dB
注意:
1.*=这个只适用于28pin版本的PT2313L
2. 20pin版本的PT2313L不提供音调控制功能(高音和低音)。