首页 / 专利库 / 电脑编程 / 别名 / 具有多设备消息传输的总线通信

具有多设备消息传输的总线通信

阅读:845发布:2020-05-08

专利汇可以提供具有多设备消息传输的总线通信专利检索,专利查询,专利分析的服务。并且描述了用于从与具有公共数据线的通信总线相连的多个从设备读取或者向所述多个从设备写入的方法和系统。所述从设备映射到虚拟设备地址,并且由主设备通过用 信号 通知开始条件和虚拟设备地址来发起通信。映射到所述虚拟设备地址的每个从设备识别与所述虚拟设备地址相关联的从设备中的寄存器,并且在通信内的各个预定时隙中针对其识别出的寄存器或者针对之前分配给从设备的相应虚拟寄存器地址,顺序地对总线执行读或写操作。,下面是具有多设备消息传输的总线通信专利的具体信息内容。

1.一种主设备从与具有公共数据线的通信总线相连的多个从设备读取或者向所述多个从设备写入的方法,其中,每个从设备具有关联的从设备地址,所述方法包括:
向每个从设备提供与任何从设备地址都不同的虚拟设备地址,其中每个从设备能够由所述主设备使用关联的从设备地址或所提供的虚拟设备地址寻址;
由所述主设备通过在数据线上用信号通知通信的开始并接着用信号通知所述虚拟设备地址,来在所述总线上发起通信;
所述从设备检测所述通信的开始以及所述虚拟设备地址,并且作为响应,识别与所述虚拟设备地址相关联的从设备中的寄存器,并且
每个从设备在通信内的相应预定时隙中针对其识别出的寄存器,在所述数据线上顺序地执行总线读/写操作;以及
由所述主设备通过用信号通知所述通信的结束来终止所述通信。
2.根据权利要求1所述的方法,其中,向每个从设备提供所述虚拟设备地址包括:所述主设备向所述从设备中的指定寄存器写入所述虚拟设备地址。
3.根据权利要求2所述的方法,其中,写入所述虚拟设备地址还包括:写入相应虚拟寄存器地址,其中,所述相应虚拟寄存器地址被映射到所述识别出的寄存器。
4.根据权利要求1所述的方法,其中,每个从设备存储针对所述虚拟设备地址的相应虚拟寄存器地址与所述从设备中的识别出的寄存器之间的关联,并且其中,识别包括读取所述关联以识别所述寄存器。
5.根据权利要求1所述的方法,其中,每个从设备包含别名数据,所述别名数据将所述从设备中的从设备寄存器地址映射到相应虚拟设备寄存器地址。
6.根据权利要求1所述的方法,其中,发起还包括:所述主设备在所述数据线上在所述虚拟设备地址之后用信号通知虚拟设备寄存器地址。
7.根据权利要求6所述的方法,其中,每个从设备包含别名数据,所述别名数据将所述从设备中的从设备寄存器地址映射到相应虚拟设备寄存器地址,并且其中识别与所述虚拟设备地址相关联的从设备中的寄存器包括:所述从设备之一确定所述数据线上的所述虚拟设备寄存器地址对应于映射到所述从设备的从设备寄存器地址的相应虚拟设备寄存器地址。
8.根据权利要求7所述的方法,其中,所述虚拟设备寄存器地址是顺序的,并且其中每个从设备顺序地执行总线读/写操作包括:从由所述主设备在所述数据线上用信号通知的虚拟设备寄存器地址开始,按照虚拟设备寄存器地址的顺序的顺序来执行所述总线读/写操作。
9.根据权利要求8所述的方法,其中,当所述主设备在每个读操作之后输出确认符号时,所述总线读操作继续所述顺序,直到所述主设备输出不确认和停止符号为止。
10.根据权利要求8所述的方法,其中,当相应从设备在每个写操作之后输出确认符号时,所述总线写操作继续所述顺序,直到所述主设备输出停止符号为止。
11.根据权利要求1所述的方法,其中,每个识别出的寄存器与相应虚拟设备寄存器地址相关联,所述虚拟设备寄存器地址是顺序的,并且其中所述顺序包括:与顺序的虚拟设备寄存器地址依次相对应的从设备寄存器的预定顺序。
12.根据权利要求1所述的方法,其中,提供包括:向每个从设备提供多于一个虚拟设备地址,并且其中每个虚拟设备地址与从设备寄存器的顺序相关联,并且其中所述方法还包括:所述主设备在所述虚拟设备地址之间进行选择以开始读操作和写操作的相应顺序。
13.根据权利要求1所述的方法,其中,在没有在各个读/写总线操作之间的开始符号或重复的开始符号的情况下,执行所述读/写总线操作的顺序。
14.根据权利要求1所述的方法,其中,从从设备读取的每个数据分组在来自于作为所述数据分组的源的所述从设备的确认比特之后或之前,以唯一地确定所述从设备是否正在参与通信顺序。
15.一种总线通信系统,包括:
主设备;
多个从设备,每个从设备具有关联的从设备地址,并且存储了与任何从设备地址都不同的虚拟设备地址,其中每个从设备能够由所述主设备使用关联的从设备地址或所存储的虚拟设备地址寻址;以及
通信总线,具有将所述主设备和所述多个从设备互连的公共数据线,
其中,所述主设备通过在数据线上用信号通知通信的开始并接着用信号通知所述虚拟设备地址,来在总线上发起通信,
其中,所述从设备检测所述通信的开始以及所述虚拟设备地址,并且作为响应,识别与所述虚拟设备地址相关联的从设备中的寄存器,并且在通信内的相应预定时隙中针对其识别出的寄存器,在所述数据线上顺序地执行总线读/写操作,以及其中,所述主设备通过用信号通知所述通信的结束来终止所述通信。
16.根据权利要求15所述的系统,其中,每个从设备在所述从设备中的指定寄存器中存储所述虚拟设备地址,以保持所述虚拟设备地址。
17.根据权利要求16所述的系统,其中,每个从设备存储相应虚拟寄存器地址,并且其中,在每个从设备中,所述相应虚拟寄存器地址被映射到所述识别出的寄存器。
18.根据权利要求16所述的系统,其中,每个从设备存储针对所述虚拟设备地址的相应虚拟寄存器地址与所述从设备中的识别出的寄存器之间的关联,并且其中,识别包括读取所述关联以识别所述寄存器。
19.根据权利要求15所述的系统,其中,每个从设备包含别名数据,所述别名数据将所述从设备中的从设备寄存器地址映射到相应虚拟设备寄存器地址。
20.根据权利要求15所述的系统,其中,所述主设备还用于:在所述数据线上在所述虚拟设备地址之后用信号通知虚拟设备寄存器地址。
21.根据权利要求20所述的系统,其中,每个从设备包含别名数据,所述别名数据将所述从设备中的从设备寄存器地址映射到相应虚拟设备寄存器地址,并且其中所述从设备之一确定所述数据线上的所述虚拟设备寄存器地址对应于映射到与所述从设备的从设备寄存器地址的相应虚拟设备寄存器地址。
22.根据权利要求21所述的系统,其中,所述虚拟设备寄存器地址是顺序的,并且其中每个从设备通过以下操作来顺序地执行总线读/写操作:从由所述主设备在所述数据线上用信号通知的虚拟设备寄存器地址开始,按照虚拟设备寄存器地址的顺序的顺序来执行所述总线读/写操作。
23.根据权利要求22所述的系统,其中,当所述主设备在每个读操作之后输出确认符号时,所述总线读操作继续所述顺序,直到所述主设备输出不确认和停止符号为止。
24.根据权利要求22所述的系统,其中,当所述从设备在每个操作之后输出确认符号时,所述总线写操作继续所述顺序,直到所述主设备输出停止符号为止。
25.根据权利要求15所述的系统,其中,每个识别出的寄存器与相应虚拟设备寄存器地址相关联,所述虚拟设备寄存器地址是顺序的,并且其中所述顺序包括:与顺序的虚拟设备寄存器地址依次相对应的从设备寄存器的预定顺序。
26.根据权利要求15所述的系统,其中,每个从设备还存储多于一个虚拟设备地址,并且其中每个虚拟设备地址与从设备寄存器的顺序相关联,并且其中所述主设备在所述每个虚拟设备地址之间进行选择以开始相应的读顺序或写顺序。
27.根据权利要求15所述的系统,其中,在没有在各个读/写总线操作之间的开始符号或重复的开始符号的情况下,执行所述读/写总线操作的顺序。
28.根据权利要求15所述的系统,其中,对在总线上用信号通知从设备的存在的确认比特之后或之前的每个数据分组执行读总线操作的顺序。
29.一种存储处理器可执行指令的非瞬时处理器可读介质,所述处理器可执行指令在被执行时使一个或多个处理器执行根据权利要求1所述的方法。

说明书全文

具有多设备消息传输的总线通信

技术领域

[0001] 本申请总体涉及一种通信总线,更具体地,涉及一种用于从多个设备获得数据的通信协议。

背景技术

[0002] 存在与总线通信相关(尤其是针对电路板级芯片间通信)的多个通信协议。在这些总线架构的一些中,存在单个公共数据线,并且协议对到数据线的控制和访问进行管理。一个普遍的示例是内置集成电路(I2C)总线通信协议。一些开发工作旨在规定可以被称为I3C的I2C改进版本。
[0003] I2C协议的缺点在于,如果被读取或写入的消息的比特数短,则存在显著的信令开销。当总线上的主设备被配置为周期地或频繁地从多个从设备读取传感器数据或其它少量数据时,协议控制开销成本会压倒被读取或写入的数据的尺寸,导致其传输速率是仅发送原始设备数据且不存在协议所需的任何控制信息的情况的传输速率的3到4倍,这样是低效的。附图说明
[0004] 作为示例,参考示出了本发明的示例实施例的附图,在附图中:
[0005] 图1示意地示出了多设备两线双向通信总线的一个示例;
[0006] 图2A和图2B示出了I2C兼容总线上的分别用于写操作的示例结构和用于读操作的示例结构;
[0007] 图3示出了示例主设备和示例从设备的简化框图
[0008] 图4示意地示出了虚拟设备寄存器和从设备寄存器之间的别名
[0009] 图5以流程图的形式示出了用于在总线上通信的一个示例方法;
[0010] 图6示意地示出了根据本申请一个方面的用于读操作的示例结构;
[0011] 图7示出了用于在具有公共数据线的通信总线上在主设备和多个从设备之间进行通信的示例方法;
[0012] 图8示出了用于在具有公共数据线的通信总线上在主设备和多个从设备之间进行通信的另一示例方法;
[0013] 图9示意地示出了用于虚拟线通信的示例结构;
[0014] 图10以流程图形式示出了用于虚拟线通信的示例方法;
[0015] 图11A和图11B示出了在单个消息中包括多个单独从ACK响应的示例消息结构;以及
[0016] 图11C示出了从设备(而不是主设备)在读期间发送ACK比特的示例消息结构。
[0017] 在不同的附图中已经使用类似的附图标记来表示类似的组件。

具体实施方式

[0018] 在一个方面,本申请描述了一种主设备从与具有一条或多条公共数据线的通信总线相连的多个从设备读取或者向所述多个从设备写入的方法,其中,每个从设备具有关联的从设备地址。所述方法包括:向每个从设备提供与任何从设备地址不同的虚拟设备地址由所述主设备通过在数据线上用信号通知通信的开始并接着用信号通知所述虚拟设备地址,来在所述总线上发起通信;从设备检测所述通信的开始以及所述虚拟设备地址,并且作为响应,识别与所述虚拟设备地址相关联的从设备中的寄存器,并且每个从设备在所述数据线上通信期间的各个预定时隙中,针对其识别出的寄存器顺序地执行总线读/写操作;以及由所述主设备通过用信号通知所述通信的结束来终止所述通信。
[0019] 在另一方面,本申请描述了一种总线通信系统,包括:主设备;多个从设备,每个从设备具有关联的从设备地址,并且存储了与任何从设备地址都不同的虚拟设备地址;通信总线,具有与所述主设备和所述多个从设备互连的一条或多条公共数据线。所述主设备通过在数据线上用信号通知通信的开始并接着用信号通知所述虚拟设备地址,来在总线上发起通信。所述从设备检测所述通信的开始以及所述虚拟设备地址,并且作为响应,识别与所述虚拟设备地址相关联的从设备中的寄存器,并且在所述数据线上通信期间的各个预定时隙中,针对其识别出的寄存器顺序地执行总线读/写操作。所述主设备通过用信号通知所述通信的结束来终止所述通信
[0020] 在又一方面,本申请描述了存储计算机可执行程序指令的非瞬时计算机可读介质,所述计算机可执行程序指令在被执行时将处理器配置为执行所描述的方法。
[0021] 本领域普通技术人员将通过结合附图阅读以下示例的描述,来理解本申请的其他方面和特征。
[0022] 在本申请中,术语“和/或”旨在覆盖列出元素的所有可能组合和子组合,包括列出元素的单独的任意一个、任意子组合或所有元素,而不是必须排除附加元素。
[0023] 在本申请中,短语“…或…中的至少一个”旨在覆盖列出元素的任意一个或多个,包括列出元素的单独的任意一个、任意子组合或所有元素,而不是必须排除任何附加元素,且不是必须要求所有元素。
[0024] 文本使用的术语“寄存器”旨在被广义地解释为可寻址存储器位置。不应将其限制为特定类型的存储器类型或者专用集成电路存储器。尽管在一些情况下,可以使用离散硬件存储器组件来实施寄存器,但是在一些情况下可以将寄存器实施在与处理单元或其它控制集成的存储器中。在此意义上,对从从设备中的寄存器读取或者向所述寄存器写入的指代可以表示可以使用存储器地址来访问的任意存储器的特定位置。在一些实施例中,对寄存器的指代可以表示8比特存储器位置(字节),在其它实施中可以是其它尺寸。
[0025] 本文使用的术语“虚拟设备”旨在被广义地解释为表示可以作为备选设备地址被分配给设备的可编程设备地址,从而使设备能够响应于该备选设备地址。
[0026] 术语“别名数据”旨在被广义地解释为到虚拟设备地址的读取或写入,并且使一个或多个设备将在与虚拟设备通信时被访问的寄存器地址转换为对虚拟设备地址进行响应的单独设备中的相同或其它寄存器地址。尽管结合I2C总线通信协议描述了下文的许多实施例以及利用该协议的后向兼容,但是将清楚的是,一些实施例可以符合和/或与其它总线通信协议(包括由MIPI(移动工业处理器接口联盟)开发的I3C协议传感器总线(SensorWire))后向兼容。
[0027] 在电子设备和系统中,总线通信通常用于设备内或设备间命令和数据信令传输。例如,I2C总线是已经实际上成为控制总线标准的双向2线总线。一条线用于时钟,一条线用于数据。在“I2C-bus specification and user manual”,UM10204,Rev.6,April 4,2014,NXP Semiconductors N.V.中描述了I2C总线(在下文称为I2C),其内容通过引用合并于此。
[0028] I2C及具有类似结构的变体的缺点在于存在显著的信令开销,尤其是在短消息的情况下。例如,I2C结构假设总线上的主设备首先利用开始符号(在I2C的情况下,当时钟信号为高时在数据线上的高到低转变)发起通信。在开始符号之后的是7或10位的从设备地址,其后接着指示读或写命令的比特。这随后被从设备确认,之后,由主设备(在写情况下)或由从设备(在读情况下)将数据置于总线上。每个字节分别被从设备或主设备确认。为了结束通信序列,主设备发送停止符号。
[0029] 在许多商业实施例中,读和写操作还指定了特定从设备中的寄存器地址。这意味着进一步的开销和确认比特,以及在读操作情况下的重新开始符号以及从设备地址的重新发送。该通信协议可以导致需要传输超过26比特的报头数据以从寄存器读取单个信息字节。在这种情况下,由于协议开销,协议相对于传输效率而言是非常低效的。
[0030] 在一些情况下,主设备(例如控制器、处理器或其它这样的集成电路设备)可以对多个传感器设备进行周期性的采样,以实现连续监视。对所选数目的地址的规则轮询可以导致与被读取的数据的量相比的大量传输开销。
[0031] I2C提供了在一个消息内(即,在一个报头/报尾内)读/写从设备中的多个寄存器的能。然而,该机制限制于寄存器都被顺序地寻址且都在同一从设备中的情况。
[0032] I2C还提供用于使用全局地址0000000来向所有设备进行一次写入的机制,但是该机制主要针对重置总线上的从设备。该机制针对广播写操作的益处限制于利用到相同寄存器地址的相同数据来对所有从设备进行更新的情况。除了特殊边情况以外,其不能用于读操作,因为从设备将覆写组合的响应。
[0033] 现在参照图1,其示意地示出了两线双向总线架构10的示例。总线架构10包括连接到数据线14和时钟线16(例如I2C中的SDA线和SCL线)的至少一个主设备12。在该示例中仅示出了一个主设备12。
[0034] 多个从设备20(被示出为20a、20b、20c和20d)附着于总线。从设备20可以包括任意数量的可变复杂度的电子设备。非限制示例包括A/D和D/A转换器、I/O端口、RAM、EEPROM、智能卡调谐电路调制解调器温度传感器、压力传感器、光传感器、加速度计、陀螺仪、磁力计、其它传感器、开关驱动器、时钟等。
[0035] 在一些示例中,数据线14和时钟线16可以通过上拉电阻器22连接到正电压源。在一些实施例中,如果使用特殊通信方案(例如,NRZI(不归零倒相)、DDR(双数据速率,使用两个时钟沿用于传输)或如在MIPI I3C SensorWire总线协议中描述的三符号编码(基于两条数据线发送信息并且使用任意数据改变作为相应时钟改变的指示)),则PMOS晶体管或其它有源器件21可以布置在上拉电阻器和总线之间,以能够停用这些电阻器。这使得总线能够与更早的集电极开路/漏极开路拓扑后向兼容,并且可以与诸如NRZI的更新的技术前向兼容。
[0036] 现在参照图2A和图2B,其示出了分别用于写操作50的示例结构和用于读操作70的示例结构。这些示例操作50、70示出了I2C兼容总线上的通信。在阴影部分中示出了主设备12(图1)的贡献,并且在非阴影部分中示出了从设备20(图1)的贡献。
[0037] 在这两种情况下,应注意的是,由主设备利用开始符号其后接着7比特的从设备地址发起通信。在一些实施例中,I2C从设备地址可以具有10比特,但是通常为7比特的地址。其它总线通信协议可以允许其它长度的地址。
[0038] 消息开始于开始事件(“S”)并且结束于停止事件(“P”)。在寄存器读操作的情况下,通常会发出重复的开始事件(“Sr”)。
[0039] 在从设备地址之后是指定主设备是执行读命令还是写命令的读/写比特。在传统示例中,逻辑零指示写命令,逻辑1指示读命令。在示例中,在针对写操作50和读操作70两者的通信的第一阶段,使用写选择,因为读操作70涉及首先使用写命令其后跟着重新开始来指定特定寄存器,然后执行实际的读操作。
[0040] 被通信寻址的从设备随后利用确认比特(或者不确认比特)来进行响应。从设备通过将数据线拉低来发送确认比特(ACK)。通过将数据线维持为高(这在设备只是不响应或者出现错误的情况下发生)来传输“不确认”或者“NACK”比特。
[0041] 假设通信被所寻址的从设备确认,则主设备发送将被从其读取或者向其写入的寄存器地址。在写操作50的情况下,写操作50之后跟着来自于从设备的ACK比特,并且主设备随后发送将被写入到寄存器的数据。将被写入到寄存器的数据的每个字节被来自于从设备的ACK比特确认。当完成了写操作50时,主设备发送停止符号以用信号通知通信的结束。
[0042] 对于写操作70,在发送了寄存器地址并且从从设备接收到ACK之后,主设备发送重复的开始符号(在结束通信之前重复的发送开始符号),之后再次发送从设备地址。此时,在从设备地址之后是读比特,以用信号通知之前提供的寄存器地址将作为读命令的对象。这被从设备确认,该从设备随后输出与寄存器地址相对应的寄存器内容。主设备随后利用ACK或NACK符号确认寄存器数据。来自于主设备的ACK符号指示从设备应该输出寄存器数据的进一步的字节。当执行多个读取操作时,寄存器数据的进一步的字节是按照寄存器寻址顺序的下一个字节,即,在相同消息中主设备仅可以读取从设备的顺序寻址的寄存器。读取顺序外寄存器地址将需要主设备结束此次通信,并且发起新的通信来读取新的寄存器地址。一旦主设备读取了需要的所有数据,它就发送NACK比特以及随后的停止符号。
[0043] 根据本申请的一个方面,可以由主设备和参与从设备实施合并消息机制,以在一个消息内从多个从设备读取或者向多个从设备写入,从而减少与多设备读/写操作相关联的开销。针对这些参与从设备之中的单独从设备的数据被复用进分配给单独设备的时隙,以形成单个长消息。在一些实施例中,时间复用可以基于预定顺序,或者被选为若干可能预定顺序的集合之一。假设组合的多设备消息使用一般的报头和报尾,则其将看起来像是兼容的总线通信,例如I2C通信。
[0044] 在一些示例实施例中,“虚拟从设备地址”被定义并被传输给参与从设备。在一些情况下,虚拟从寄存器或者多个寄存器可以被定义,并且每个虚拟从寄存器映射到或者别名为相应真实从设备的真实寄存器。通过使用虚拟从设备地址来进行多设备消息传输,该机制与现有的总线通信协议后向兼容。多设备消息传输将看起来像是传统的总线协议消息传输,并且非参与从设备(例如不支持该新功能的经典I2C设备)将忽视多设备消息(因为多设备消息不针对它们)。
[0045] 在下文的示例中,术语“消息”和“通信”可以互换使用,以表示读/写数据的多设备交换。单个消息或通信开始于开始符号,并且结束于停止符号。如果消息或通信使用虚拟设备地址,并且在时间复用顺序中多于一个从设备响应于该虚拟设备地址,则该消息或通信是多设备通信。
[0046] 现在将参照图3,其以框图形式示出了示例主设备112和示例从设备120。示例主设备112和从设备120通过具有数据线14和时钟线16的两线通信总线相连。尽管为了便于示出在图3中仅示出了一个主设备112和一个从设备120,但是将清楚的是,许多实施例的特征在于连接到同一通信总线的多个主设备和/或从设备。
[0047] 主设备112包括处理单元118、存储器116和物理总线接口114。物理总线接口114可以包括用于连接到和操控通信总线的电路。在一些示例中,电路可以包括触发器、缓冲器、毛刺去除电路或既用于正确地在总线上检测电压、符号和/或脉冲沿又用于在总线上断言符号、电压和/或脉冲沿的其它组件。在一些示例中,物理总线接口114允许主设备112在处理单元118的操作控制下拉数据线14和时钟线16中的任意一条或两条,以将其从高DC电压转换为低DC电压或反之亦然。作为示例,主设备可以在运行在1.8V和3.3V电压的系统之间进行转换。
[0048] 处理单元118可以包括用于控制主设备112的操作的一个或多个处理器。在一些示例中,处理单元118可以包括在处理器可执行程序指令的控制下进行操作的微处理器微控制器,其中,所述指令使处理单元118执行经由总线对从设备120进行读取或写入的一个或多个操作。存储器116可以与处理单元118集成或者与其分开。存储器116可以包括多于一个存储器。存储器116可以包括用于存储数据和/或处理器可执行程序指令的易失性和/或非易失性存储器位置。
[0049] 从设备120包括处理单元122、物理总线接口124和寄存器126。在各实施例中,处理单元122可以使用实现控制处理的微处理器、微控制器、现场可编程阵列、EEPROM、专用集成电路、离散逻辑组件或其它这种设备来实现。在许多实施例中,处理单元122包括包含处理器可执行程序指令的集成或离散存储器,当所述指令被执行时使处理器执行特定功能或操作,所述特定功能或操作可以包括用于本文描述的总线通信的功能或操作。
[0050] 寄存器126是能够存储数据的可寻址存储器位置。一般地,寄存器126的至少一些部分能够被主设备112和/或从设备120读取和写入。
[0051] 从设备120可以包括用于实施其意图功能的各种其他组件,例如但不限于用于获得之后被存储在一个或多个寄存器126中的数据的各个传感器(未示出)。
[0052] 现在将参照图4,其以框图形式示出了从设备120(图3)的寄存器126的示例实施例以及到“虚拟”设备的寄存器136的映射。在该示例中,每个字节大小的数据位置具有一个地址。虚拟设备寄存器地址是例如地址M、M+1、M+2等。从设备将数据存储在一个或多个寄存器中,所述一个或多个寄存器可以被主设备读取或者由主设备写入。例如,寄存器126示出了从设备1寄存器1、从设备2寄存器2等。
[0053] 在存储器中的另一指定位置中,从设备可以存储一个或多个虚拟设备寄存器地址与一个或多个从设备寄存器之间的对应关系。这可以被称为“别名”数据。别名数据可以由主设备提供。在该示例中,别名数据表明虚拟设备寄存器地址M与从设备1寄存器1相关。寄存器126还可以存储表明虚拟设备寄存器地址M+1映射到从寄存器地址从设备1寄存器2的别名数据。在一些实施例中,与其它从设备相关的别名数据可以或者可以不存储在从设备1中。在一些实施方式中,组合消息可以涉及从一个从设备传输,在其它实施方式中,组合消息可以涉及从多于一个从设备传输。
[0054] 在另一实施例中,从设备存储器可以包含顺序数据150,其定义了将在单个消息中被主设备使用虚拟设备地址从其读取或向其写入的从设备和/或从设备寄存器的一个或多个可选顺序。在一些实施例中,顺序数据150可以定义状态机。将在下文描述涉及预定义顺序的示例实施方式。
[0055] 现在将参照图5,其以流程图形式示出了用于在总线上通信的示例方法200,其中,总线与一个或多个主设备以及多个从设备互连。每个从设备具有其自身的唯一从设备地址。在该实施例中,通信总线是I2C总线。
[0056] 在操作202,具有两个或多个从设备的子集与虚拟设备地址相关联。虚拟设备地址与任何从设备地址都不同。当主设备希望在一次通信中从子集中的每个从设备读取或者向每个从设备写入时,主设备使用虚拟设备地址。在一些实施例中,关联可以通过将虚拟设备地址写入子集中的每个从设备中的指定寄存器来在从设备的子集中配置。在一些实施例中,从设备的子集可以被预编程以虚拟设备地址。
[0057] 在一些实施方式中,操作202还可以包括存储用于一个或多个从设备的一个或多个寄存器的别名数据。在一些情况下,从设备将虚拟设备地址与其存储器中的特定寄存器相关联,而不需要附加别名数据。在其它情况下,从设备可以存储将一个或多个虚拟设备地址寄存器映射到一个或多个真实从设备寄存器的别名数据。
[0058] 在操作204,主设备评估是否需要发起总线上的通信。如果需要,则在操作206,主设备确定是否需要多设备消息。如果不需要,则实施常规I2C通信,如操作208所示。但是如果确定需要多设备消息,则在操作210,主设备选择虚拟设备控制方案。在一些实例中,主设备可以具有可以从中选择的多于一个控制方案。例如,不同虚拟设备地址可以对应于不同(可能是重叠的)从设备子集或从设备子集中的不同寄存器,并且选择可以取决于哪些从设备需要被读取或写入。在另一示例中,不同虚拟设备地址可以对应于读/写的不同顺序和/或用于执行多设备读/写操作的不同状态机。所述不同顺序可以对应于从设备和/或从寄存器的不同子集。
[0059] 在操作212,主设备在总线上发起并执行所选择的通信。主设备随后在操作214确定是否停用总线,如果是,则在操作216停用总线。
[0060] 图6示意地示出了根据本申请一个方面的用于读操作的示例结构250。该示例结构250基于以下实施例中,其中,至少一个从设备包含将从设备寄存器映射到虚拟设备寄存器地址的别名数据。
[0061] 用于通信的示例结构250开始于由发起通信的主设备输出的开始符号。其后是虚拟设备地址和读/写比特。在该示例中,出现写比特,其后是来自于识别出虚拟设备地址的从设备的ACK比特。应注意,在子集中的所有从设备(即,识别出虚拟设备地址的从设备)提供ACK回复。也就是说,子集中的每个从设备将数据线拉低。如果子集中的设备之一不操作,则只要子集中的从设备中的至少一个从设备拉低了数据线,就不能检测到确认虚拟设备地址的失败。
[0062] 在ACK之后,由主设备提供虚拟寄存器地址。虚拟寄存器地址被子集中的从设备接收,该从设备之后查询别名映射数据(或顺序选择逻辑)以确定哪个真实从寄存器映射到虚拟寄存器地址。在虚拟寄存器地址之后,子集中的从设备发送ACK(在该示例中,映射到虚拟设备地址的子集中的所有从设备利用ACK进行响应,而不仅仅是包含与虚拟寄存器地址相对应的真实从寄存器的从设备,从而保持与I2C协议兼容)。
[0063] 在别名数据的情况下,从寄存器映射到虚拟寄存器地址的顺序。以这种方式,通过以最低虚拟寄存器地址开始,主设备可以在单个消息中连续地读取不同从设备/寄存器中的每一个,因为它们被映射到虚拟寄存器地址的顺序集合。当然,假设主设备不需要读取与低处的虚拟寄存器地址相对应的从寄存器(因为重复读操作将从开始点开始且根据地址向上递增地读取连续寄存器),主设备可以选择除数字上最低的地址以外的虚拟寄存器地址开始。
[0064] 仍然参照图6,在来自于从设备子集的ACK之后,主设备发送重复的开始符号,其后再次跟着虚拟设备地址以及读比特。它被子集中的从设备确认,该从设备之后按照根据别名数据的顺序,开始从别名的从设备寄存器提供数据。具体地,与更早之前在通信中提供的虚拟寄存器地址相对应的从设备寄存器被读取,并且其内容被置于总线上。如果主设备意图继续按照顺序读取从设备寄存器,则主设备利用ACK进行响应。作为子集的一部分的从设备明白这意味着第一读取的结束,并且递增内部虚拟寄存器地址。别名信息提供了虚拟寄存器地址和特定从设备/从寄存器组合之间的映射。该从设备之后向总线输出相应的寄存器数据。读取顺序继续,直到主设备发送NACK(使数据总线保持为高)并且随后利用停止符号终止消息。
[0065] 在一个实施例中,该结构可以被修改为解决所有从设备向虚拟设备地址发送ACK,从而阻止主设备知道从设备之一是否丧失能力的实际问题。在该示例实施例中,该结构在传输的开始或结束附近提供一个或多个字节,其中,每个从设备按照预定义顺序发送ACK,从而用信号通知每个设备激活且可用。以这种方式,主设备可以确定是否所有设备都对消息作出响应。参照图11A,其示出了消息的一个示例结构252,在所述消息中,从设备提供了确认的单独顺序。在另一实施例中,主设备可以发出组合消息,但是当该消息仅针对单个设备时,此时ACK条件可以是唯一的。
[0066] 在其它实施例中,来自于每个单独设备的响应中的比特(例如每个响应中的第一个比特或最后一个比特)将表明该设备是否确认了虚拟设备地址。图11B示出了具有这种特征的消息的示例结构254。相比于将组合的ACK响应添加到报头中,该结构可以更简单地实现。在一些实施例中,读顺序中的主ACK比特可以被从ACK比特所替代。
[0067] 在另一实施例中,如图11C中所示,在读命令期间,在从一从设备执行了读取之后,ACK比特的驱动器可以是该从设备而不是主设备。这在使用有限预编程顺序来控制读取的情况下仍然可以用于消息的结束,因为从设备将知道最后的设备何时进行了响应或者最后的寄存器何时被读取。因此,不需要主设备发送NACK,从而禁用设备发送任何更多的数据。此外,在一般情况下,从设备将需要来自于主设备的NACK,以停止发送寄存器数据并且保证主设备能够发送停止(“P”)符号。在该实施例中,可以从在读取顺序中涉及的每个设备获得唯一ACK值,而不需要向读取顺序添加额外比特。在一些情况下,,为了后向兼容,最后的ACK时隙可以用信号通知为NACK。
[0068] 现在参照图7,其示出了用于在具有公共数据线的通信总线上在一个或多个主设备和多个从设备之间进行通信的一个示例方法300。方法300使用结合图6描述的多设备通信结构250。也就是说,方法300使用别名数据来将虚拟设备寄存器映射到对应的从设备寄存器。
[0069] 如操作302中所示,虚拟设备地址V被存储在从设备的子集中。在一个实施例中,子集包括总线上的所有从设备,但是在其它实施例中,子集包括少于总线上的所有从设备的一个或多个从设备。作为子集一部分的每个从设备被配置为对其自身的从设备地址(S1、S2、…、SN)和虚拟设备地址(V)进行响应。别名数据被存储在子集中的每个从设备内。在一些实施例中,只有与特定从设备本地的从设备寄存器相关的别名数据被存储在该从设备中。在该实施例中,别名数据将一系列顺序虚拟设备地址映射到从设备地址。作为示例,别名数据可以指定:
[0070]
[0071] 在操作304,主设备利用开始符号其后跟着虚拟设备地址V在总线上发起通信。主设备之后指示读或写,从对应于虚拟设备地址的从设备接收ACK,并且指示第一虚拟寄存器地址。在许多实施例中,虚拟寄存器地址可以是虚拟寄存器地址的顺序中的第一地址(例如,在以上示例中是0000110)。其后再次跟着来自从设备的ACK。
[0072] 操作306和308反映出,如果主设备正在执行读操作,则主设备将发送重复的开始符号,并接着发送虚拟设备地址,如使用I2C协议的典型实施。
[0073] 在操作310,主设备执行多设备读或写操作。操作310首先包括参照操作304的针对虚拟寄存器地址执行读/写,如操作312所示。如果主设备正在执行读操作,则在操作312,具有映射到虚拟寄存器地址的从寄存器的从设备在该时隙将来自于该寄存器的数据输出到总线上。如果主设备正在执行写操作,则在操作312,主设备在该时隙将要被写入的数据放置到总线上,并且相应的从设备将该数据写入映射到该虚拟寄存器地址的从寄存器。在一些实施例中,在操作310期间仅寻址单个设备,其优点在于,可以在仍然从该单个设备获得唯一ACK响应的同时快速地执行从多个独立寄存器位置的读或写。
[0074] 在操作314,主设备确定多设备读/写操作是否完成。如果没有完成,则在操作316,虚拟寄存器地址在主设备和从设备中自动递增,主设备发送ACK(在读的情况下),并且重复操作312,但是针对递增的虚拟设备地址,其别名数据可以映射到不同从设备和不同从设备寄存器。
[0075] 当完成了多设备读操作时,主设备向总线输出NACK和停止符号以用信号通知消息的结束。类似地,在多设备写操作结束时,最后的从设备将发送ACK并且用信号通知写顺序的结束。
[0076] 在另一示例实施例中,虚拟设备地址可以与从设备/寄存器的预定义顺序相关联,从而当主设备从虚拟设备地址读取或者向虚拟设备地址写入时,其被理解为按照预定义时间复用顺序调用与关联的从设备/寄存器相关的一系列关联顺序读/写操作。在该实施例中,单个消息可以包括混合在一起的从多个设备读的操作和向多个设备写的操作两者。
[0077] 在另一示例实施例中,顺序可以具有与顺序的每个阶段/步骤相关联的虚拟设备寄存器,即,相应虚拟设备寄存器可以映射或别名到要在顺序的每个步骤中被读取或写入的从设备寄存器。因此,主设备可以通过指定与顺序的中间步骤/阶段相对应的虚拟设备寄存器来从顺序的一部分读取或者向顺序的一部分写入。多设备读/写操作之后将继续从该步骤/阶段继续进行顺序的剩余部分。在一些实施例中,可以忽略I2C读/写比特,并且可以通过适当地初始化从设备来确定读或写操作,从而实现在单个消息中的读和写操作的组合。
[0078] 在另一示例实施例中,可以针对总线上的设备预定义多于一个预定义顺序。两个或更多顺序可以涉及不同从设备、不同顺序的相同从设备、不同从设备寄存器、不同顺序的相同从设备寄存器或者它们的任意重叠组合。每个顺序具有关联虚拟设备地址,使得主设备可以通过使用特定顺序的关联虚拟设备地址来选择和发起针对该顺序的读/写操作。
[0079] 针对一顺序的顺序读/写操作的实施包括向包括在该顺序中的从设备子集中的每个从设备提供相应的虚拟设备地址。每个从设备还存储数据或信息,该数据或信息指示从设备要对读/写操作进行响应的时隙或顺序。例如,在一个实施例中,每个从设备可以被分配指示其将进行响应的时隙的序数,并且从设备随后均对针对被寻址到虚拟设备地址的通信中的时隙的数目进行计数,以确定它们将在哪个时隙中进行响应。
[0080] 现在参照图8,其以流程图形式示出了用于在具有公共数据线的通信总线上在主设备和多个从设备之间进行通信的示例方法400。所述方法涉及指定与从设备和/或从设备寄存器的预定义顺序相对应的虚拟设备地址。
[0081] 如操作402所示,针对至少一个顺序,关联虚拟设备地址V存储在所述顺序所涉及的从设备的子集中。在一些实例中,顺序可以包括与单独从设备寄存器相关的指定的虚拟设备寄存器,作为用于指定顺序的开始点而不是顺序的第一设备/寄存器的机制。指示从设备要在哪个顺序或时序中进行响应的数据也被存储在子集中的每个从设备中。在一些实施例中,顺序数据还指示要在该时隙中被读取或被写入的特定从设备本地的特定从设备寄存器。
[0082] 在操作404,主设备利用开始符号其后跟着虚拟设备地址V在总线上发起通信。主设备之后指示读或写,并且从对应于虚拟设备地址的从设备接收ACK。
[0083] 在一些实施例中,主设备之后还可以指示第一虚拟寄存器地址,以指定顺序中的开始点而不是第一寄存器/设备。
[0084] 将清楚的是,在一些实施例中,虚拟设备地址可以与涉及两个或更多顺序的顺序读/写操作相关联,并且在通信中指定的虚拟设备寄存器可以指示哪个顺序正在被主设备调用。也就是说,每个顺序可以与虚拟设备寄存器地址相关联,并且虚拟设备地址仅用信号通知顺序读/写操作要被执行。
[0085] 在一些实施例中,在跟着虚拟从设备地址的顺序中发送的第一值将指示要读取寄存器的哪个顺序,从而使多个顺序能够被发起,从而使单个虚拟设备地址发起若干顺序。
[0086] 如操作406和408所示,如果在已经指定了虚拟设备寄存器地址的情况下主设备正在执行读操作,则主设备可以发送重复的开始符号,并接着发送虚拟设备地址。如果没有指定虚拟设备寄存器地址,则主设备可以发起读操作,而不必要求发送重复的开始符号。
[0087] 在操作410,主设备执行多设备读或写操作。操作410首先包括针对所选顺序中的第一从设备/寄存器(或在一些实施例中,针对与关联于在操作404中参考的虚拟寄存器地址的顺序的阶段相对应的从设备/寄存器)执行读/写操作。随后在通信的各个时隙中按照由所选顺序预定义的顺序依次执行每个读/写操作。
[0088] 如操作412或414所示,在顺序中涉及的从设备监视总线上的通信以识别它们应该在何时进行响应。在一些实施例中,这可以包括维持时隙的计数,并且将计数与指示分配给该从设备/寄存器的时隙的存储的数据进行比较。
[0089] 在操作410执行顺序读或写时,主设备确定多设备读/写操作是否完成(其可以或者可以不对应于顺序的结束,例如如果主设备不意图读/写整个顺序)。如果多设备读/写操作完成,则主设备向总线输出停止符号以结束消息。
[0090] 可以清楚的是,本发明方法与现有的I2C协议后向兼容,同时扩展了对设备和寄存器寻址的方式。这样实现了在许多使用情况下的传输效率的提高。后向兼容确保现有设备可以与增强设备一样附着于相同总线,并且可以使用现有测试设备(例如总线协议分析器),而不需要对总线扩展操作的测试、调试和验证操作进行更新。
[0091] 在一些实施例中,向从设备写入或从从设备读取的信息量可以是单个比特。字长为单个比特那么短的数据分组可以用于控制继电器、致动器或用于从开关读取控制控制值。在其它情况下,单个比特可以用作虚拟“线”,从而使用两条线来连接多个实体以传达多条信息。作为示例,经常使用多条线来进行控制。这样增加了线的数目以及系统的物理大小,并且对连接两个或更多设备所需要的I/O引脚的可用数目提出了要求。通过使用单个比特作为信息承载容器,值可以被视为来自于在两个或更多设备之间的虚拟线的样本,从而简化了这种系统的编程和物理布局。在许多情况下,由于板的尺寸更小且需要的端子数目更少,这种系统的成本将显著降低。在一些情况下,同时地执行一个值与另一个值的更新或读取是重要的,从而经常需要使用多条线。然而,如果接收到的消息存储在缓冲器中,则可以例如在消息的结束同时更新所有的值。类似地,如果采样的值被存储在缓冲器中,则可以同时对若干值进行采样,并且避免在采样事件之间的任何偏移。应注意,有线OR、NRZI和类似信令传输方案不排除同时的多设备信令传输。因此,单个比特承载信息可以真实地表示同时来自多个设备的信令,从而解决与多个驱动器相关联的任何问题。在该方面,虚拟线用作信息的真实隧道。作为示例,多个设备通常被合并在公共中断信令线上。该线可以在之后被移除,并且作为新的信令方案的一部分,从而节省成本和空间。
[0092] 图9示出了如上所述的基于虚拟线的消息的示例结构500。图10以流程图形式示出了如上所述的使用虚拟线协议在具有公共数据线的通信总线上在主设备和多个从设备之间进行通信的示例处理550。示例处理550的特征在于读/写操作的循环560,其中,每条虚拟线映射到相应从设备中的相应寄存器位置。
[0093] 将清楚的是,根据本申请的处理和系统可以在多个计算设备中实现,包括但不限于服务器、合适编程的通用计算机和移动设备。处理可以通过软件来实现,该软件包含用于将处理器或多个处理器配置为执行本文所述功能的指令。软件指令可以存储在任何合适的非瞬时计算机可读存储器上,包括CD、RAM、ROM、闪存等。
[0094] 将理解的是,可以使用标准计算机编程技术和语言来实现本文描述的设备以及实现所描述的方法/处理的模、例程、进程、线程或其他软件组件。本申请不限于特定处理器、计算机语言、计算机编程惯例、数据结构、其他这种实现细节。本领域技术人员将认识到,可以将所描述的处理实现为存储在易失性或非易失性存储器中的计算机可执行代码的一部分、专用集成芯片(ASIC)的一部分等。
[0095] 可以对所述实施例进行某种调整和修改。因此,上文讨论的实施例被视为是示意性的而不是限制性的。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈