竭诚为您提供优质文档/双击可除
i方c总线协议
篇一:i2c总线协议
1.i2c协议
2条双向串行线,一条数据线sda,一条时钟线scl。
sda传输数据是大端传输,每次传输8bit,即一字节。
支持多主控(multimastering),任何时间点只能有一个主控。
总线上每个设备都有自己的一个addr,共7个bit,广播地址全0.
系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datasheet。
1.1i2c位传输
数据传输:scl为高电平时,sda线若保持稳定,那么sda上是在传输数据bit;
若sda发生跳变,则用来表示一个会话的开始或结束(后面讲)数据改变:scl为低电平时,s
da线才能改变传输的bit
1.2i2c开始和结束信号
开始信号:scl为高电平时,sda由高电平向低电平跳变,开始传送数据。结束信号:scl为高电平时,sda由低电平向高电平跳变,结束传送数据。
1.3i2c应答信号
master每发送完8bit数据后等待slave的ack。
即在第9个clock,若从ic发ack,sda会被拉低。
若没有ack,sda会被置高,这会引起master发生RestaRt或stop流程,如下所示:
1.4i2c写流程
写寄存器的标准流程为:
1.master发起staRt
2.master发送i2caddr(7bit)和w操作0(1bit),等待ack
3.slave发送ack
4.master发送regaddr(8bit),等待ack
5.slave发送ack
1.2i2c开始和结束信号
开始信号:scl为高电平时,sda由高电平向低电平跳变,开始传送数据。结束信号:scl为高电平时,sda由低电平向高电平跳变,结束传送数据。
1.3i2c应答信号
master每发送完8bit数据后等待slave的ack。
即在第9个clock,若从ic发ack,sda会被拉低。
若没有ack,sda会被置高,这会引起master发生RestaRt或stop流程,如下所示:
1.4i2c写流程
写寄存器的标准流程为:
1.master发起staRt
2.master发送i2caddr(7bit)和w操作0(1bit),等待ack
3.slave发送ack
4.master发送regaddr(8bit),等待ack
5.slave发送ack
6.master发送data(8bit),即要写入寄存器中的数据,等待ack
7.slave发送ack
8.第6步和第7步可以重复多次,即顺序写多个寄存器
9.master发起stop
写一个寄存器
写多个寄存器
1.5i2c读流程
读寄存器的标准流程为:
1.master发送i2caddr(7bit)和w操作1(1bit),等待ack
2.slave发送ack
3.master发送regaddr(8bit),等待ack
4.slave发送ack
5.master发起staRt
6.master发送i2caddr(7bit)和r操作1(1bit),等待ack
7.slave发送ack
7.slave发送ack
8.第6步和第7步可以重复多次,即顺序写多个寄存器
9.master发起stop
写一个寄存器
写多个寄存器
1.5i2c读流程
读寄存器的标准流程为:
1.master发送i2caddr(7bit)和w操作1(1bit),等待ack
2.slave发送ack
3.master发送regaddr(8bit),等待ack
4.slave发送ack
5.master发起staRt
6.master发送i2caddr(7bit)和r操作1(1bit),等待ack
7.slave发送ack
typec数据线 8.slave发送data(8bit),即寄存器里的值
9.master发送ack
10.第8步和第9步可以重复多次,即顺序读多个寄存器读一个寄存器
读多个寄存器
2.powerpc的i2c实现
mpc8560的ccsR中控制i2c的寄存器共有6个。
2.1i2cadR地址寄存器
cpu也可以是i2c的slave,cpu的i2c地址有i2cadR指定
2.2i2cFdR频率设置寄存器
theserialbitclockfrequencyofsclisequaltotheccbclockdividedbythedivider.
用来设置i2c总线频率
篇二:i2c总线协议详解
i2c总线协议详解
i2c总线定义
--------------------------------------------------------------------------------
9.master发送ack
10.第8步和第9步可以重复多次,即顺序读多个寄存器读一个寄存器
读多个寄存器
2.powerpc的i2c实现
mpc8560的ccsR中控制i2c的寄存器共有6个。
2.1i2cadR地址寄存器
cpu也可以是i2c的slave,cpu的i2c地址有i2cadR指定
2.2i2cFdR频率设置寄存器
theserialbitclockfrequencyofsclisequaltotheccbclockdividedbythedivider.
用来设置i2c总线频率
篇二:i2c总线协议详解
i2c总线协议详解
i2c总线定义
--------------------------------------------------------------------------------
i2c(inter-integratedcircuit)总线是一种由philips公司开发的两线式串行总线,用于连接微控制器及其外围设备。i2c总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。
i2c总线特点
--------------------------------------------------------------------------------
i2c总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此i2c总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10kbps的最大传输速率支持40个组件。i2c总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
i2c总线工作原理
--------------------------------------------------------------------------------
总线的构成及信号类型
i2c总线特点
--------------------------------------------------------------------------------
i2c总线最主要的优点是其简单性和有效性。由于接口直接在组件之上,因此i2c总线占用的空间非常小,减少了电路板的空间和芯片管脚的数量,降低了互联成本。总线的长度可高达25英尺,并且能够以10kbps的最大传输速率支持40个组件。i2c总线的另一个优点是,它支持多主控(multimastering),其中任何能够进行发送和接收的设备都可以成为主总线。一个主控能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。
i2c总线工作原理
--------------------------------------------------------------------------------
总线的构成及信号类型
--------------------------------------------------------------------------------
i2c总线是由数据线sda和时钟scl构成的串行总线,可发送和接收数据。在cpu与被控ic之间、ic与ic之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,i2c总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。cpu发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。
i2c总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。
开始信号:scl为高电平时,sda由高电平向低电平跳变,开始传送数据。
结束信号:scl为高电平时,sda由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的ic在接收到8bit数据后,向发送数据的ic发出特定的低电平脉冲,表示已收到数据。cpu向受控单元发出一个信号后,等待受控单元发出一个应答信号,cpu接收
i2c总线是由数据线sda和时钟scl构成的串行总线,可发送和接收数据。在cpu与被控ic之间、ic与ic之间进行双向传送,最高传送速率100kbps。各种被控制电路均并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作,所以每个电路和模块都有唯一的地址,在信息的传输过程中,i2c总线上并接的每一模块电路既是主控器(或被控器),又是发送器(或接收器),这取决于它所要完成的功能。cpu发出的控制信号分为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独立,互不相关。
i2c总线在传送数据过程中共有三种类型信号,它们分别是:开始信号、结束信号和应答信号。
开始信号:scl为高电平时,sda由高电平向低电平跳变,开始传送数据。
结束信号:scl为高电平时,sda由低电平向高电平跳变,结束传送数据。
应答信号:接收数据的ic在接收到8bit数据后,向发送数据的ic发出特定的低电平脉冲,表示已收到数据。cpu向受控单元发出一个信号后,等待受控单元发出一个应答信号,cpu接收
到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。
这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。
目前有很多半导体集成电路上都集成了i2c接口。带有i2c接口的单片机有:cygnal的c8051F0xx系列,philipsp87lpc7xx系列,micRochip的pic16c6xx系列等。很多外围器件如存储器、监控芯片等也提供i2c接口
i2c总线是一种用于ic器件之间连接的双向二线制总线,所谓总线它上面可以挂多个器件,并且通过两根线连接,占用空间非常的小,总线的长度可长达25英尺,并且能够以10kbps的最大传输速率支持4个组件。它的另一优点是多主控,只要能够进行接收和发送的设备都可以成为主控制器,当然多个主控不能同一时间工作。
i2c总线有两根信号线,一根为sda(数据线),一根为scl(时钟线)。任何时候时钟信号都是由主控器件产生。
i2c总线操作
--------------------------------------------------------------------------------
i2c规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定
这些信号中,起始信号是必需的,结束信号和应答信号,都可以不要。
目前有很多半导体集成电路上都集成了i2c接口。带有i2c接口的单片机有:cygnal的c8051F0xx系列,philipsp87lpc7xx系列,micRochip的pic16c6xx系列等。很多外围器件如存储器、监控芯片等也提供i2c接口
i2c总线是一种用于ic器件之间连接的双向二线制总线,所谓总线它上面可以挂多个器件,并且通过两根线连接,占用空间非常的小,总线的长度可长达25英尺,并且能够以10kbps的最大传输速率支持4个组件。它的另一优点是多主控,只要能够进行接收和发送的设备都可以成为主控制器,当然多个主控不能同一时间工作。
i2c总线有两根信号线,一根为sda(数据线),一根为scl(时钟线)。任何时候时钟信号都是由主控器件产生。
i2c总线操作
--------------------------------------------------------------------------------
i2c规程运用主/从双向通讯。器件发送数据到总线上,则定义为发送器,器件接收数据则定
义为接收器。主器件和从器件都可以工作于接收和发送状态。总线必须由主器件(通常为微控制器)控制,主器件产生串行时钟(scl)控制总线的传输方向,并产生起始和停止条件。sda线上的数据状态仅在scl为低电平的期间才能改变,scl为高电平的期间,sda状态的改变被用来表示起始和停止条件。
控制字节
在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,eepRom一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。
写操作
写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。
读操作
读操作有三种基本操作:当前地址读、随机读和顺序读。图4给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持sda为高电平、然后发出停止条件。
控制字节
在起始条件之后,必须是器件的控制字节,其中高四位为器件类型识别符(不同的芯片类型有不同的定义,eepRom一般应为1010),接着三位为片选,最后一位为读写位,当为1时为读操作,为0时为写操作。
写操作
写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。
读操作
读操作有三种基本操作:当前地址读、随机读和顺序读。图4给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心”。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持sda为高电平、然后发出停止条件。
i2c总线应用
--------------------------------------------------------------------------------
目前有很多半导体集成电路上都集成了i2c接口。带有i2c接口的单片机有:cygnal的c8051F0xx系列,三星的s3c24xx系列,philipsp87lpc7xx系列,micRochip的pic16c6xx系列等。很多外围器件如存储器、监控芯片等也提供i2c接口。
举常i2c器件/i2cdevice
--------------------------------------------------------------------------------
1、存储器类:atmel公司的at24cxx系列eepRom;
2、i2c总线8位并行io口扩展芯片pcF8574/jlc1562;
3、i2c接口实时时钟芯片ds1307/pcF8563/sd2000d/m41t80/me901/isl1208/;
4、i2c数据采集adc芯片mcp3221(12bitadc)/ads1100(16bitadc)/ads1112(16bitadc)/max1238(12bitadc)/max1239(12bitadc);
5、i2c接口数模转换dac芯片dac5574(8bitdac)/dac6573(10bitdac)/dac8571(16bitdac)/;
6、i2c接口温度传感器tmp101/tmp275/ds1621/max6625
--------------------------------------------------------------------------------
目前有很多半导体集成电路上都集成了i2c接口。带有i2c接口的单片机有:cygnal的c8051F0xx系列,三星的s3c24xx系列,philipsp87lpc7xx系列,micRochip的pic16c6xx系列等。很多外围器件如存储器、监控芯片等也提供i2c接口。
举常i2c器件/i2cdevice
--------------------------------------------------------------------------------
1、存储器类:atmel公司的at24cxx系列eepRom;
2、i2c总线8位并行io口扩展芯片pcF8574/jlc1562;
3、i2c接口实时时钟芯片ds1307/pcF8563/sd2000d/m41t80/me901/isl1208/;
4、i2c数据采集adc芯片mcp3221(12bitadc)/ads1100(16bitadc)/ads1112(16bitadc)/max1238(12bitadc)/max1239(12bitadc);
5、i2c接口数模转换dac芯片dac5574(8bitdac)/dac6573(10bitdac)/dac8571(16bitdac)/;
6、i2c接口温度传感器tmp101/tmp275/ds1621/max6625
usb转i2c专用芯片:usb2i2c
--------------------------------------------------------------------------------
usb2i2c是一个usb总线转i2c总线i2c/iic/twi/smbus的接口芯片,通过usb2i2c芯片可以非常方便地实现pc机usb总线和下位机端i2c接口(即iic或twi总线:scl线、sda线)之间的通信。
usb2i2c芯片上位机pc端提供简单易用的usbiox.dll动态库调用,可以方便地被Vb,Vc,delphi,labview,bcb等上位机开发工具调用。相关例程在usbio可以到。
usb2i2c功能特点:
●全速usb设备接口,兼容usbV2.0。
●外围元件简单,只需1个12m晶体和2个电容。
●低成本,可以通过i2c总线直接实现上位机与下位机之间的连接,无需辅助mcu。●上位机软件能够实现灵活实现i2c/iic/twi总线协议的各种操作。
●作为i2c总线host/master主机端。
●i2c接口提供scl和sda信号线,支持scl时钟4种不同传输速度:100khz/400khz/750khz。
●采用ssop-20小型封装。
本文来自csdn博客,转载请标明出处:blog.csdn/subkiller/archive/20xx/09/01/45
--------------------------------------------------------------------------------
usb2i2c是一个usb总线转i2c总线i2c/iic/twi/smbus的接口芯片,通过usb2i2c芯片可以非常方便地实现pc机usb总线和下位机端i2c接口(即iic或twi总线:scl线、sda线)之间的通信。
usb2i2c芯片上位机pc端提供简单易用的usbiox.dll动态库调用,可以方便地被Vb,Vc,delphi,labview,bcb等上位机开发工具调用。相关例程在usbio可以到。
usb2i2c功能特点:
●全速usb设备接口,兼容usbV2.0。
●外围元件简单,只需1个12m晶体和2个电容。
●低成本,可以通过i2c总线直接实现上位机与下位机之间的连接,无需辅助mcu。●上位机软件能够实现灵活实现i2c/iic/twi总线协议的各种操作。
●作为i2c总线host/master主机端。
●i2c接口提供scl和sda信号线,支持scl时钟4种不同传输速度:100khz/400khz/750khz。
●采用ssop-20小型封装。
本文来自csdn博客,转载请标明出处:blog.csdn/subkiller/archive/20xx/09/01/45
08441.aspx
篇三:i2c总线协议学习笔记
1.i2c协议
2条双向串行线,一条数据线sda,一条时钟线scl。sda传输数据是大端传输,每次传输8bit,即一字节。支持多主控(multimastering),任何时间点只能有一个主控。总线上每个设备都有自己的一个addr,共7个bit,广播地址全0.
系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datasheet。
1.1i2c位传输
数据传输:scl为高电平时,sda线若保持稳定,那么sda上是在传输数据bit;若sda发生跳变,则用来表示一个会话的开始或结束(后面讲)数据改变:scl为低电平时,sda线才能改变传输的bit
1.2i2c开始和结束信号
开始信号:scl为高电平时,sda由高电平向低电平跳变,开始传送数据。结束信号:scl为高电平时,sda由低电平向高电平跳变,结束传送数据。
篇三:i2c总线协议学习笔记
1.i2c协议
2条双向串行线,一条数据线sda,一条时钟线scl。sda传输数据是大端传输,每次传输8bit,即一字节。支持多主控(multimastering),任何时间点只能有一个主控。总线上每个设备都有自己的一个addr,共7个bit,广播地址全0.
系统中可能有多个同种芯片,为此addr分为固定部分和可编程部份,细节视芯片而定,看datasheet。
1.1i2c位传输
数据传输:scl为高电平时,sda线若保持稳定,那么sda上是在传输数据bit;若sda发生跳变,则用来表示一个会话的开始或结束(后面讲)数据改变:scl为低电平时,sda线才能改变传输的bit
1.2i2c开始和结束信号
开始信号:scl为高电平时,sda由高电平向低电平跳变,开始传送数据。结束信号:scl为高电平时,sda由低电平向高电平跳变,结束传送数据。
1.3i2c应答信号
master每发送完8bit数据后等待slave的ack。即在第9个clock,若从ic发ack,sda会被拉低。
若没有ack,sda会被置高,这会引起master发生RestaRt
或stop流程,如下所示:
1.4i2c写流程
写寄存器的标准流程为:
1.master发起staRt
2.master发送i2caddr(7bit)和w操作0(1bit),等待ack3.slave发送ack
4.master发送regaddr(8bit),等待ack5.slave发送ack
6.master发送data(8bit),即要写入寄存器中的数据,等待ack7.slave发送ack
8.第6步和第7步可以重复多次,即顺序写多个寄存器9.master发起stop
写一个寄存器
写多个寄存器
1.5i2c读流程
master每发送完8bit数据后等待slave的ack。即在第9个clock,若从ic发ack,sda会被拉低。
若没有ack,sda会被置高,这会引起master发生RestaRt
或stop流程,如下所示:
1.4i2c写流程
写寄存器的标准流程为:
1.master发起staRt
2.master发送i2caddr(7bit)和w操作0(1bit),等待ack3.slave发送ack
4.master发送regaddr(8bit),等待ack5.slave发送ack
6.master发送data(8bit),即要写入寄存器中的数据,等待ack7.slave发送ack
8.第6步和第7步可以重复多次,即顺序写多个寄存器9.master发起stop
写一个寄存器
写多个寄存器
1.5i2c读流程
读寄存器的标准流程为:
1.master发送i2caddr(7bit)和w操作1(1bit),等待ack2.slave发送ack
3.master发送regaddr(8bit),等待ack4.slave发送ack5.master发起staRt
6.master发送i2caddr(7bit)和r操作1(1bit),等待ack7.slave发送ack
8.slave发送data(8bit),即寄存器里的值9.master发送ack
10.第8步和第9步可以重复多次,即顺序读多个寄存器
读一个寄存器
读多个寄存器
2.powerpc的i2c实现
mpc8560的ccsR中控制i2c的寄存器共有6个。
2.1i2cadR地址寄存器
cpu也可以是i2c的slave,cpu的i2c地址有i2cadR指定
2.2i2cFdR频率设置寄存器
theserialbitclockfrequencyofsclisequaltotheccbclockdividedbythedivider.
用来设置i2c总线频率
1.master发送i2caddr(7bit)和w操作1(1bit),等待ack2.slave发送ack
3.master发送regaddr(8bit),等待ack4.slave发送ack5.master发起staRt
6.master发送i2caddr(7bit)和r操作1(1bit),等待ack7.slave发送ack
8.slave发送data(8bit),即寄存器里的值9.master发送ack
10.第8步和第9步可以重复多次,即顺序读多个寄存器
读一个寄存器
读多个寄存器
2.powerpc的i2c实现
mpc8560的ccsR中控制i2c的寄存器共有6个。
2.1i2cadR地址寄存器
cpu也可以是i2c的slave,cpu的i2c地址有i2cadR指定
2.2i2cFdR频率设置寄存器
theserialbitclockfrequencyofsclisequaltotheccbclockdividedbythedivider.
用来设置i2c总线频率
2.3i2ccR控制寄存器
men:moduleenable.置1时,i2c模块使能
mien:moduleinterruptenable.置1时,i2c中断使能。msta:master/slavemode.1mastermode,0slavemode.当1->0时,cpu发起stop信号当0->1时,cpu发起staRt信号
mtx:transmit/receivemodeselect.0Receive(i方c总线协议)mode,1transmitmodetxak:transferacknowledge.置1时,cpu在9thclock发送ack拉低sdaRsta:RepeatstaRt.置1时,cpu发送RepeatstaRtbcst:置1,cpu接收广播信息(信息的slaveaddr为7个0)
2.4i2csR状态寄存器
mcF:0bytetransferisinprocess
1bytetransferiscompleted
maas:当cpu作为slave时,若i2cdR与会话中slaveaddr匹配,此bit被置1
mbb:0i2cbusidle1i2cbusbusy
mal:若置1,表示仲裁失败
bcstm:若置1,表示接收到广播信息
men:moduleenable.置1时,i2c模块使能
mien:moduleinterruptenable.置1时,i2c中断使能。msta:master/slavemode.1mastermode,0slavemode.当1->0时,cpu发起stop信号当0->1时,cpu发起staRt信号
mtx:transmit/receivemodeselect.0Receive(i方c总线协议)mode,1transmitmodetxak:transferacknowledge.置1时,cpu在9thclock发送ack拉低sdaRsta:RepeatstaRt.置1时,cpu发送RepeatstaRtbcst:置1,cpu接收广播信息(信息的slaveaddr为7个0)
2.4i2csR状态寄存器
mcF:0bytetransferisinprocess
1bytetransferiscompleted
maas:当cpu作为slave时,若i2cdR与会话中slaveaddr匹配,此bit被置1
mbb:0i2cbusidle1i2cbusbusy
mal:若置1,表示仲裁失败
bcstm:若置1,表示接收到广播信息
sRw:whenmaasisset,sRwindicatesthevalueoftheR/wcommandbitofthecallingaddress,whichissentfromthemaster.
0slavereceive,masterwritingtoslave1slavetransmit,masterreadingfromslave
miF:moduleinterrupt.themiFbitissetwhenaninterruptispending,causingaprocessorinterruptrequest(providedi2ccR[mien]isset)
Rxak:若置1,表示收到了ack
2.5i2cdR数据寄存器
这个寄存器储存cpu将要传输的数据。
0slavereceive,masterwritingtoslave1slavetransmit,masterreadingfromslave
miF:moduleinterrupt.themiFbitissetwhenaninterruptispending,causingaprocessorinterruptrequest(providedi2ccR[mien]isset)
Rxak:若置1,表示收到了ack
2.5i2cdR数据寄存器
这个寄存器储存cpu将要传输的数据。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论