I2c从设备中的多个i/o组的同时控制的制作方法

文档序号:7638374阅读:167来源:国知局

专利名称::I2c从设备中的多个i/o组的同时控制的制作方法
技术领域
:本发明概括而言涉及通信设备和方法,并具体涉及使用相同逻辑值对I2C从设备中的多个I/O组同时进行编程的方法和装置。
背景技术
:菲利浦公司开发的集成电路间(I2C)总线允许集成电路通过简单的双向2线总线(正电源和地)彼此直接通信。设备与总线上两个线中的每一个连接,一个是用于数据通信的串行数据线(SDA),另一个是用于设备间数据通信的控制和同步的串行时钟线(SCL)。每个设备与其他设备中的每一个并行连接,每一条总线,SDA和SCL,用作总线上所有线的线与(wired-AND)。将每个设备的输出配置为集电极开路/漏极开路设备,并且当总线处于静止状态时,一个或多个上拉电阻器保持总线上的'软'逻辑高值。当设备需要访问总线时,通过导通状态下位于地电势的集电极开路/漏极开路设备,设备将总线拉至逻辑低值。与I2C总线连接的每个设备可由地址来识别,并且可作为发送方或接收方、或作为两者而操作。使用主-从通信协议实现数据传送。主设备是启动数据传送并产生允许该传送的时钟信号的设备;被寻址的任何设备为该传送的从设备。可通过主设备启动数据传送,将数据发送到从设备(此处称作写),或者向从设备请求数据(此处称作读)。例如,诸如显示屏的输出设备通常不能启动数据传送,因而将其配置成仅以从设备而操作。另一方面,微处理器通常被配置成根据情况需要而作为主设备或从设备而操作。在静止状态下,SDA和SCL总线都处于逻辑高状态(此处称作高,或逻辑状态l)。主设备通过断言(assert)SDA线上转变成逻辑低状态(此处称作低,或逻辑状态O)来启动数据传送,同时SCL线为高;将其称作START条件。之后,主设备来回切换(toggle)SCL线,以控制数据传送的同步;当SCL时钟为低时,SDA线上发生数据值的改变,并且只有当SCL时钟为高时才认为SDA线的状态有效。可断言多个START,以实现同一传送对话期内的一系列数据传送。通常,每次数据传送都需要来自被寻址的数据传送接收方的应答。为了终止该数据传送,当SCL时钟为高时,主机断言SDA线上的由低到高的转变;将其称作STOP条件。之后,任何设备都可以作为主设备,通过断言使SDA线上发生低到高的转换来控制总线,如上所述。注意,为了易于描述,此处所使用的术语"断言"用于实现或试图实现特定的逻辑状态。在转变到逻辑高状态的示例中,通常通过断言设备将总线从强制下拉状态中释放而提供。断言逻辑高状态允许总线上的上述上拉设备使总线处于逻辑高状态,除非另一设备也迫使下拉状态。I2C数据传送的一般格式包括构成I2C总线的SDA线和SCL线上的信号。START条件(S)对应于当SCL线为高时,SDA线上的信号从高到低的转变。在START之后,主机发送额定为7位的地址,之后发送读/写非(read/write-not)指示符。在发送地址和数据传送方向(R/W-)之后,主机释放SDA线,允许其升高到逻辑高电平。如果从设备识别出其地址,则从设备通过将总线拉低而发送应答信号(ACK)。因此,主机释放SDA线时不存在低信号表示未应答(NAK)。如果通过SDA上的低电平使地址得到应答,则发送设备发送数据。如果数据传送的方向相对于主机是"读",则从设备为发送设备;如果该方向相对于主机是"写",则主设备为发送设备。发送设备释放对SDA线的控制,接收设备通过断言SDA线上的逻辑低值而对数据接收进行应答。如果数据得到应答,则发送法发送附加的数据。持续这一过程直到全部数据都得到传输,或者直至所传输的数据项没有得到应答为止。随后,主设备可重新断言START信号,并重复上述过程,或者可断言STOP信号(P),终止这个数据传送对话。上述接口协议可通过多种方法来实现。为了使I2C接口的编程或设计的开发时间最短,己经公开了多种通用接口方案。美国新墨西哥州立大学(UniversityofNewMexico)AmritaDeshpande的硕士论文"DESIGNOFABEHAVIORAL(REGISTERTRANSFERLEVEL,RTL)MODELOFTHEINTER-INTEGRATEDCIRCUITORI2C-BUSMASTER-SLAVEINTERFACE"(1999)披露了一种包含在I2C设备中的I2C主设备接口和从设备接口,该文章在此引作参考。通过提供得到验证的I2C接口,系统设计人员无需致力于I2C规范和协议的细节。该论文中主设备和从设备接口两者都基于状态机。在美国专利编号6,799,233中进一步描述了基于状态机的系统和方法,该专利在此引作参考。
发明内容本发明的多个方面涉及使用串行总线,按照解决和克服上述问题的方式,用相同逻辑值对I2C从设备中的多个工/0组同时进行编程的方法和装置。根据一个示例性实施例,本发明涉及一种使用用于实现通信协议的I2C串行数据传送总线的通信系统,所述工2C串行数据传送总线具有串行数据线和时钟线。该通信系统包括具有两个或更多个接口端口寄存器的从设备,每个接口端口寄存器具有两个或更多个位,在第一配置中,每个接口端口寄存器被配置为把根据通信协议在数据传送总线上接收到的数据加载到其中,在第二配置中,每个接口端口寄存器被配置为将单一逻辑值加载到多个位中。将可编程配置寄存器配置为根据数据传送总线上的通信协议进行编程,以选择两个或更多个接口端口寄存器,以便在第二配置中将单一逻辑值加载到所选接口端口寄存器的两个或更多个位中。根据另一示例性实施例,本发明涉及一种方法,包括根据数据传送总线上的通信协议对从设备中的配置寄存器进行编程,以便从两个或更多个可选接口端口寄存器中选择至少两个接口端口寄存器。选择逻辑值,并将该逻辑值并发地加载到所选择的至少两个接口端口寄存器的每一个中。本发明的上述概括描述无意于描述本发明的每个实施例或每种实施方式。参照下面结合附图进行的详细描述和权利要求,本发明的优点,效果以及对本发明更完全的理解将变得明显且可以理解。考虑到下面结合附图对本发明多个实施例的详细描述,可以更充分地理解本发明,在附图中图1为根据本发明的实施例,使用相同逻辑值对I2C从设备中的多个I/O组同时进行编程的数据通信系统的框图2为根据本发明的实施例,使用相同逻辑值对I2C从设备中的多个I/O组同时进行编程的数据通信系统的数据流示意图3为根据本发明的实施例,使用相同逻辑值对I2C从设备中的多个I/0组同时进行编程的系统的框图;以及图4为根据本发明的实施例,使用相同逻辑值对I2C从设备中的多个1/0组同时进行编程的方法的流程图。具体实施例方式尽管本发明存在多种修改和备选形式,但附图中示例性地示出了其具体形式,下面将对此进行详细描述。然而,应该理解,本发明并不限于所描述的特定实施例。相反,本发明将涵盖由所附权利要求定义的本发明范围内的所有修改、等效和备选。本发明一般可用于使用相同逻辑值对I2C从设备中的多个I/O组同时进行编程的方法和装置。本发明已被发现特别有益于集成电路间(I2C)串行数据通信总线,不过也有益于其他总线和通信协议,如系统管理总线(SMBus)体系结构和/或协议,或其他串行数据通信系统。为了说明而非限制的目的,将在具有控制与从设备的通信的主设备的I2C总线的上下文中描述本发明。在I2C总线结构上,主设备控制与I2C从设备的通信。I2C从设备可应用于多个应用领域中,从蜂窝电话,PDA和智能电话(SmartPhone)到LCDTV,医疗设备,游戏及其他应用。12C从设备的一个具体应用是作为通用输入/输出(GPI0)设备。在这种设备中,存在多个可用作输入或输出的多功能管脚。当用作输入时,这些管脚通常指示被监测的特定信号的状态。I2C从设备的一种具体应用是作为通用输入/输出(GP10)。在这种设备中,存在多个可用作输入或输出的多功能管脚。当被配置为输出时,这些设备可以用于例如对多个发光二级管(LED)进行驱动的系统中。典型地,将这些输出分为组(bank),并通过I2C总线单独地进行编程。根据一个示例性实施例,使用于实现通信协议的、具有串行数据线和时钟线的串行数据传送总线的通信系统,包括并发地将逻辑值可编程地加载到并行从设备的寄存器中。该通信系统包括两个或更多个输出驱动器组,其输出驻留在相关的输出端口寄存器中的数据。每个从设备接收串行数据,并将其加载到输出端口寄存器中。使用通信协议对每个从设备中的可编程寄存器进行编程,以选择一个或更多个从设备配置。至少两个输出端口寄存器并行地耦合。一种可选从设备配置使输出端口寄存器并行地加载,另一种可选从设备配置使输出端口寄存器一次一个地加载来自I2C总线的串行数据。在一个示例性实施例中,本发明包括通过I2C总线对配置寄存器进行编程,从而将逻辑值可编程地加载到并行从设备的寄存器中。例如,表1示出了根据本发明在从设备中可提供的可编程配置寄存器的示例。表l示出了被编程到该寄存器中的8位字。表l:配置寄存器<table><row><column>位</column><column>BSEL</column><column>X</column><column>X</column><column>B4</column><column>B3</column><column>B2</column><column>B1</column><column>B0</column></row><row><column>缺省</column><column>1</column><column>0</column><column>0</column><column>0</column><column>0</column><column>0</column><column>0</column><column>0</column></row><table>该寄存器允许所有的输出端口寄存器组或所选择的组加载相同的数据。位B0到B4分别控制应用于组0至组4的逻辑值。Bx=0:相应的组X中的所有输出加载O。Bx=l:相应的组X中的所有输出加载1。位5和6是为其他控制功能所预留的,并且在本示例中加载0。BSEL为只允许加载某些组,不允许加载其他组的过滤位。BSEL=0:当Bx=0时,组X中的所有输出加载O。当Bx=1时,组X中的所有输出加载来自其输出端口寄存器的值。BSEL=0:当Bx=l时,组X中的所有输出加载1。当Bx=0时,组X中的所有输出加载来自其输出端口寄存器的值。使用串行总线、同时将多个V0组可编程地加载相同逻辑值的从设备,可以被配置为通用输入/输出(GPIO)设备,或其他从设备。通信系统可符合I2C,SMBus,和/或其他串行通信规范。图1为根据本发明的实施例,使用相同逻辑值对I2C从设备中的多个I/O组同时进行编程的数据通信系统的框图。将SDA线110和SCL线120设置成I2C数据总线125。主设备130和从设备140与I2C数据总线125相连。主设备130与I2C数据总线125电连接,使用时钟连接134和数据连接132分别与SCL线120和SDA线110电连接。从设备140与I2C数据总线125电连接,使用时钟连接144和数据连接142分别与SCL线120和SDA线110电连接。主设备130寻址152从设备140,并且将从设备编程154为以特定配置而操作,例如一次一个地或并行地加载寄存器。从设备140通过诸如在指定从设备140的输出端口寄存器的配置的寄存器中放置某个字来接收162程序154。然后,从设备对通过编程162所选择的输出端口寄存器同时加载166单一逻辑值(例如逻辑0或逻辑1),例如上面参照图l所描述的。例如,可以将从设备配置为具有20个I/0管脚、用于驱动5个七段显示器的GPIO设备。可以将20个管脚分成5个由4个管脚组成的组,每个组可以与输出端口寄存器相关联,该输出端口寄存器用于包含对与输出端口相耦合的七段显示器进行驱动的BCD数据字。可使用配置寄存器表明用单一逻辑值对5个组中的哪些组进行更新,而其他组等待将来的加载。按照此种方式,可以以减小的通过总线传输的数据的带宽将所有被指定的输出端口寄存器复位成逻辑O或逻辑1,从而对七段显示器进行复位。图2为根据本发明实施例,使用相同逻辑值对I2C从设备中的多个1/0组同时进行编程的数据通信系统的串行数据流200的示意图。图2中所示的串行数据流200符合12C通信协议。在I2C总线上,由主设备发送的START条件222之后为从设备地址202。从设备地址202之后为READ/WRITE位210,随后为来自从设备的ACKNOWLEDGE信号212。图2中将READ/WRITE信号210表示成逻辑0,表明主设备对从设备进行写入。主设备发送第一数据字节204,第二数据字节206和第三数据字节208,每个数据字节204,206,208后面是来自从设备的各个ACKNOWLEDGE214,216,218。在示例性实施例中,可使用数据字节204对从设备中的配置寄存器进行编程,诸如前面所描述的,以使24位输出加载逻辑1。在这个示例性实施例中,不需要数据字节206,208来更新所有的24位,因为数据字节204可用于同时加载所有的24位。在另一示意性实施例中,可以将数据字节204,206,208连续发送给三个8位输出端口寄存器,每个输出端口寄存器与从设备中的串行数据总线并行连接,从而更新24位需要所有三个字节。图3为根据本发明的实施例,使用相同逻辑值对I2C从设备中的多个I/O组同时进行编程的系统300的框图。从设备320连接到I2C总线310上。图3中将从设备320表示成GPI0设备。从设备320可包括输入电路360,以引导和/或控制来自I2C总线310的数据的组合和流动。图3中将输入电路360表示成把来自I2C总线310的数据引导到配置寄存器370中。输入电路360还耦合至输出端口寄存器331-338。输入电路360并行耦合至输出端口寄存器331-338,从而相同的数据对于每一个输出端口寄存器331-338并发地可用。例如,可使用诸如12C总线的串行总线,使用并行数据总线或使用另一种逻辑流方案,将输入电路360耦合至输出端口寄存器331-338。在一个具体示例中,可以将输出端口寄存器331-338配置为4位寄存器,每个输出端口寄存器331-338并行连接至构成4位数据总线的4条数据线。在另一具体示例中,可以将输出端口寄存器33卜338配置为4位寄存器,每一个由两个输出端口寄存器组成的组(331,332),(333,334),(335,336)和(337,338)与构成I2C总线结构的2条线(加上地)并行连接。从设备320可包含任意数量或配置的输出端口寄存器和/或输出端口驱动器。图3中所示的输出端口寄存器331-338分别耦合至输出端口驱动器341-348,而输出端口驱动器341-348分别耦合至七段显示器351-358。在这种设置中,根据本发明,可一次一个地或并行地加载输出端口寄存器331-338,以驱动七段显示器351-358。将配置寄存器370配置为使用I2C总线310通信协议进行编程,以选择一个或更多个从设备配置。输出端口寄存器331-338被配置为接收由输入电路360所提供的数据,其中,根据配置寄存器370所选择的从设备配置,输出端口寄存器331-338中的每一个寄存器可以与输出端口寄存器331-338中另外的寄存器并行地者一次一个地加载单一逻辑值。图4为根据本发明的实施例,使用相同逻辑值对I2C从设备中的多个I/O组同时进行编程的方法400的流程图。方法400涉及诸如GPIO设备的从设备,根据可编程配置寄存器所选择的从设备配置,一次一个地或者与至少两个输出端口寄存器组中另外的寄存器组并行地,更新从设备中的所述至少两个输出端口寄存器组。该方法包括诸如通过使用从设备中的配置寄存器把从设备编程410为特定配置。可使用12C通信协议执行所述的编程,以指定对从设备的输出端口寄存器是相继更新还是并行更新。如果配置415针对串行加载,则使用诸如I2C总线的串行数据传送总线接收420串行数据。根据编程410加载430输出端口寄存器,每一个寄存器相对于其他寄存器一次一个地更新。如果配置415针对并行加载,则将编程410所表示的单一逻辑值同时加载到所有被选择的寄存器中440。使用GPIO设备作为实现方法400的从设备,仅仅是为了说明的目的,而非进行限制。可使用硬件,固件,软件或者它们的组合来实现此处所描述的使用相同逻辑值对I2C从设备中的多个I/O组同时进行编程的多个实施例。本发明所使用的主设备功能可以存在于所述的I2C主设备中,或备选地可存在于与串行数据通信系统100连接的独立或联网的计算机中。图1中所示的串行数据通信系统100是一种示例结构,它可结合所述通信系统,计算机或其他计算机实现的设备使用,以执行本发明的操作。图1中所示的适于执行根据本发明的编程的示例性主设备130和/或从设备140,通常包括与随机存取存储器(RAM)和/或只读存储器(ROM)的某些变体相耦合的中央处理器(CPU)。R.OM也可以是其他种类的用于存储程序的存储介质,诸如可编程ROM(PROM),可擦除PROM(EPROM)等等。处理器可通过输入/输出(I/O)电路和/或其他总线(bussing)与其他内部和外部部件进行通信,以提供控制信号,通信信号等。主设备130和/或从设备140还可以包括一个或多个数据存储设备,包括硬盘和软盘驱动器,CD-R0M驱动器,以及能够读和/或存储信息的其他硬件,诸如DVD等。在一个实施例中,实现根据本发明的以相同逻辑值对I2C从设备中的多个I/O组同时进行编程的软件,可以被存储并分发到CD-ROM,磁盘或其他能够以便携式存储信息的介质上。这些存储介质可以被插入诸如CD-ROM驱动器、磁盘驱动器等的设备中,并且被读取。也可以通过数据信号将该软件传输给计算装置,例如通过诸如互联网的网络而电下载。另外,如前面所描述的,可以将实现本发明相关功能的软件备选地存储到计算设备的内部存储器/存储器中,例如存储在ROM中。所产生的具有计算机可读程序代码的任何程序,都可以被包含在一个或多个计算机可用介质中,诸如存储器设备或传输设备,从而得到根据本发明的计算机程序产品或制品。由此,此处使用的"计算机可读介质","制品","计算机程序产品"或其他类似语言意在包含永久,临时或暂时存在于诸如任何存储器设备或任何传输设备的计算机可用介质上的计算机程序。说明书中所披露的每个特征(包括任何所附的权利要求,摘要和附图),都可以被具有相同、等效或类似作用的备选特征所取代,除非另有说明。因此,除非另有说明,否则所披露的每个特征仅是等效或类似特征的一般系列的一个示例。不应认为本发明局限于上面所述的特定示例。本发明可采用的多种变型,等效过程以及多种结构都落入本发明的范围之内。例如,可使用类似构成的在公共总线(诸如SMBus或其他总线配置)上的设备之间进行通信的单向或双向接口来实现根据本发明使用相同逻辑值对I2C从设备中的多个I/O组同时进行编程的实施例。这些变体都被认为是如所附权利要求中清楚地提出的所要求保护的发明的一部分。权利要求1.一种在使用用于实现通信协议的、具有串行数据线和时钟线的串行数据传送总线(125)的通信系统(100)中的从设备,所述从设备包括多个接口端口寄存器(331-338),每个接口端口寄存器包括多个位,每个接口端口寄存器被配置为在第一配置(415)中把根据通信协议在数据传送总线上接收到的数据加载到其中,在第二配置(415)下将单一逻辑值加载到所述多个位中;以及可编程配置寄存器(370),被配置为根据数据传送总线上的通信协议而编程(410),以选择多个接口端口寄存器中的两个或更多个,以便在第二配置中将单一逻辑值加载到所选择的接口端口寄存器的多个位中。2.如权利要求l所述的设备,其中,所述配置寄存器被配置为8位寄存器,其中,l位用于选择单一逻辑值,而5位用于选择期望用于加载所述单一逻辑值的接口端口寄存器。3.如权利要求1所述的设备,其中,所述从设备(140)被配置为通用输入/输出设备。4.如权利要求1所述的设备,其中,所述从设备被配置为符合SMBus串行通信协议。全文摘要根据一个示例性实施例,使用用于实现通信协议的、具有串行数据线(110)和时钟线(120)的串行数据传送总线的通信系统(100,300),包括将逻辑值可编程地加载到并行从设备的寄存器(331-338)中。该通信系统包括具有两个或更多个寄存器的从设备(320),每个寄存器具有两个或更多个位,在第一配置中,每个接口端口寄存器被配置为把根据通信协议在数据传送总线上接收到的数据加载到其中,在第二配置中,每个接口端口寄存器被配置为将单一逻辑值加载到多个位中。将可编程配置寄存器配置为根据数据传送总线上的通信协议进行编程,以选择两个或更多个寄存器,以便在第二配置中将单一逻辑值加载到所选寄存器的两个或更多个位中。文档编号H04L12/40GK101208913SQ200680023187公开日2008年6月25日申请日期2006年5月1日优先权日2005年4月29日发明者保罗·博加德斯,斯蒂芬·布洛佐斯,让-马克·伊拉扎巴尔,阿姆里塔·德什潘德,阿尔玛·安德森申请人:皇家飞利浦电子股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1