i方c总线协议

竭诚为您提供优质文档/双击可除
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为低电平时,
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),等待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
  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总线定义
  --------------------------------------------------------------------------------
  i2c(inter-integratedcircuit)总线是一种由philips公司开发的两线式串行总线,用于连接微控制器及其外围设备。i2c总线产生于在80年代,最初为音频和视频设备开发,如今主要在服务器管理中使用,其中包括单个组件状态的通信。例如管理员可对各个组件进行查询,以管理系统的配置或掌握组件的功能状态,如电源和系统风扇。可随时监控内存、硬盘、网络、系统温度等多个参数,增加了系统的安全性,方便了管理。
  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接口。带有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为高电平、然后发出停止
条件。
  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
  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博客,转载请标明出处:/subkiller/archive/20xx/09/01/4508441.aspx
  篇三:i2c总线协议学习笔记
5460a  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读流程
  读寄存器的标准流程为:
  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,表示接收到广播信息
  sRw:whenmaasisset,sRwindicatesthevalueoftheR/wcommandbitofthecallingaddress,whichissentfromthemaster.
  0slavereceive,masterwritingtoslave1slavetransmit,masterreadingfromslave
  miF:moduleinterrupt.themiFbitissetwhenaninterruptispending,causingaprocessorinterruptrequest(providedi2ccR[mien]isset)
  Rxak:若置1,表示收到了ack
  2.5i2cdR数据寄存器
  这个寄存器储存cpu将要传输的数据。
 

本文发布于:2024-09-23 12:34:21,感谢您对本站的认可!

本文链接:https://www.17tex.com/tex/3/99409.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:总线   信号   芯片   控制   接口   寄存器
留言与评论(共有 0 条评论)
   
验证码:
Copyright ©2019-2024 Comsenz Inc.Powered by © 易纺专利技术学习网 豫ICP备2022007602号 豫公网安备41160202000603 站长QQ:729038198 关于我们 投诉建议