掌桥专利:专业的专利平台
掌桥专利
首页

一种I2C从设备及其静态地址的自动修改方法

文献发布时间:2024-04-18 19:58:21


一种I2C从设备及其静态地址的自动修改方法

【技术领域】

本发明涉及数字IC技术领域,尤其涉及一种I2C从设备及其静态地址的自动修改方法。

【背景技术】

I2C(Inter-Integrated Circuit,即集成电路总线)是一种简单、双向二线制同步串行总线,它只需要两根线即可在连接于总线上的器件之间传送信息。假设总线上挂载两个完全相同的I2C slave设备(即I2C从设备),I2C mater(即I2C主设备)想要分别与它们通信的话,它们相应的静态地址要求是不一样的。那么在出厂的时候就要求它们各自的静态地址的某些bit是需要通过otp等可编程存储器来控制。这样用户在通信前就需要额外地进行地址初始化操作。

因此,有必要提出一种I2C从设备及其静态地址的自动修改方法。

【发明内容】

本发明的目的之一在于提供一种I2C从设备及其静态地址的自动修改方法,其可以自动修改I2C从设备的静态地址,这样用户在通信前就不需要额外地进行地址初始化操作。

根据本发明的一个方面,本发明提供一种I2C从设备,其包括:串行时钟线引脚pad_scl,其通过串行时钟线与I2C主设备的串行时钟线引脚相连,或通过串行数据线与所述I2C主设备的串行数据线引脚相连;串行数据线引脚pad_sda,其通过串行数据线与所述I2C主设备的串行数据线引脚相连,或通过串行时钟线与所述I2C主设备的串行时钟线引脚相连;内部串行时钟线scl_in;内部串行数据线sda_in;切换模块,其与所述串行时钟线引脚pad_scl、串行数据线引脚pad_sda、内部串行时钟线scl_in和内部串行数据线sda_in相连,所述切换模块能够工作在默认状态或切换状态,在默认状态下,所述串行时钟线引脚pad_scl通过所述切换模块与所述内部串行时钟线scl_in相连,所述串行数据线引脚pad_sda通过所述切换模块与内部串行数据线sda_in相连;在切换状态下,所述串行时钟线引脚pad_scl通过所述切换模块与所述内部串行数据线sda_in相连,所述串行数据线引脚pad_sda通过所述切换模块与所述内部串行时钟线scl_in相连,控制模块,其第一检测端1与所述内部串行时钟线scl_in相连,其第二检测端2与所述内部串行数据线sda_in相连,其输出端输出控制信号给所述切换模块的控制端,所述控制模块被配置的在与所述I2C主设备发起通信时检测所述内部串行时钟线scl_in和所述内部串行数据线sda_in哪个最先拉低,若检测到所述内部串行数据线sda_in最先拉低,则所述控制模块维持所述切换模块工作在默认状态,使所述I2C从设备维持当前的静态地址;若检测到所述内部串行时钟线scl_in最先拉低,则所述控制模块控制所述切换模块工作在切换状态,并使所述I2C从设备当前的静态地址的至少1位取反以修改静态地址。

根据本发明的另一个方面,本发明提供一种I2C从设备的静态地址的自动修改方法,其包括:提供如本发明所述的I2C从设备;将所述串行时钟线引脚pad_scl通过串行时钟线与I2C主设备的串行时钟线引脚相连,或通过串行数据线与所述I2C主设备的串行数据线引脚相连;将所述串行数据线引脚pad_sda通过串行数据线与所述I2C主设备的串行数据线引脚相连,或通过串行时钟线与所述I2C主设备的串行时钟线引脚相连;在与所述I2C主设备发起通信时,所述控制模块检测所述内部串行时钟线scl_in和所述内部串行数据线sda_in哪个最先拉低;若检测到所述内部串行数据线sda_in最先拉低,则所述控制模块维持所述切换模块工作在默认状态,并使所述I2C从设备维持当前的静态地址;若检测到所述内部串行时钟线scl_in最先拉低,则所述控制模块控制所述切换模块工作在切换状态,并使所述I2C从设备当前的静态地址的至少1位取反以修改静态地址。

根据本发明的另一个方面,本发明提供一种I2C从设备的静态地址的自动修改方法,其包括:提供第一I2C从设备和第二I2C从设备,所述第一I2C从设备和第二I2C从设备为如本发明所述的I2C从设备,且所述第一I2C从设备和第二I2C从设备的静态地址相同;将所述第一I2C从设备的串行数据线引脚pad_sda通过串行数据线SDA与I2C主设备的串行数据线引脚相连,将所述第一I2C从设备的串行时钟线引脚pad_scl通过串行时钟线SCL与所述I2C主设备的串行时钟线引脚相连;将所述第二I2C从设备的串行数据线引脚pad_sda通过串行时钟线SCL与所述I2C主设备的串行时钟线引脚相连,将所述第二I2C从设备的串行时钟线引脚pad_scl通过串行数据线SDA与所述I2C主设备的串行数据线引脚相连;在所述第一I2C从设备与所述I2C主设备发起通信时,所述第一I2C从设备的控制模块检测到串行数据线引脚pad_sda最先拉低,则所述第一I2C从设备的控制模块维持所述第一I2C从设备的切换模块工作在默认状态,使所述第一I2C从设备维持当前的静态地址;在所述第二I2C从设备与所述I2C主设备发起通信时,所述第二I2C从设备的控制模块检测到串行时钟线引脚pad_scl最先拉低,则所述第二I2C从设备的控制模块控制所述第二I2C从设备的切换模块工作在切换状态,并使所述第二I2C从设备当前的静态地址的至少1位取反以修改静态地址。

与现有技术相比,本发明通过将I2C从设备与串行数据线和串行时钟线反接,从而自动修改I2C从设备的静态地址,这样用户在通信前就不需要额外地进行地址初始化操作。

【附图说明】

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其它的附图。其中:

图1为本发明在一个实施例中的可自动修改静态地址的I2C从设备的电路连接示意图;

图2为本发明在一个实施例中的I2C从设备的静态地址的自动修改方法的流程图;

图3为本发明在一个实施例中如图1所示的第一I2C从设备和第二I2C从设备与I2C主设备的电路连接示意图;

图4为本发明在一个实施例中如图3所示的I2C从设备的静态地址的自动修改方法的流程图;

图5为本发明在一个实施例中如图3所示的第一I2C从设备正接时各个信号的波形示意图;

图6为本发明在一个实施例中如图3所示的第二I2C从设备反接时各个信号的波形示意图。

【具体实施方式】

为使本发明的上述目的、特征和优点能够更加明显易懂,下面结合附图和具体实施方式对本发明作进一步详细的说明。

此处所称的“一个实施例”或“实施例”是指可包含于本发明至少一个实现方式中的特定特征、结构或特性。在本说明书中不同地方出现的“在一个实施例中”并非均指同一个实施例,也不是单独的或选择性的与其他实施例互相排斥的实施例。除非特别说明,本文中的连接、相连、相接的表示电性连接的词均表示直接或间接电性相连。

请参考图1所示,其为本发明在一个实施例中的可自动修改静态地址的I2C从设备的电路连接示意图。图1所示的可自动修改静态地址的I2C从设备包括串行时钟线引脚pad_scl、串行数据线引脚pad_sda、内部串行时钟线scl_in、内部串行数据线sda_in、切换模块110和控制模块120。

其中,串行时钟线引脚pad_scl通过串行时钟线与I2C主设备(未图示)的串行时钟线引脚相连,或通过串行数据线与I2C主设备(未图示)的串行数据线引脚相连。串行数据线引脚pad_sda通过串行数据线与I2C主设备(未图示)的串行数据线引脚相连,或通过串行时钟线与I2C主设备(未图示)的串行时钟线引脚相连。切换模块110与串行时钟线引脚pad_scl、串行数据线引脚pad_sda、内部串行时钟线scl_in和内部串行数据线sda_in相连,切换模块110能够工作在默认状态或切换状态,在默认状态下,串行时钟线引脚pad_scl通过切换模块110与内部串行时钟线scl_in相连,串行数据线引脚pad_sda通过切换模块110与内部串行数据线sda_in相连;在切换状态下,串行时钟线引脚pad_scl通过切换模块110与内部串行数据线sda_in相连,串行数据线引脚pad_sda通过切换模块110与内部串行时钟线scl_in相连。

控制模块120的第一检测端1与内部串行时钟线scl_in相连,其第二检测端2与内部串行数据线sda_in相连,其输出端输出控制信号给切换模块110的控制端。控制模块120被配置的在与I2C主设备(未图示)发起通信时检测内部串行时钟线scl_in和内部串行数据线sda_in哪个最先拉低,若检测到内部串行数据线sda_in最先拉低,意味着I2C从设备与串行时钟线和串行数据线正接(即I2C从设备的串行时钟线引脚pad_scl通过串行时钟线与I2C主设备的串行时钟线引脚相连;I2C从设备的串行数据线引脚pad_sda通过串行数据线与I2C主设备的串行数据线引脚相连),则控制模块120维持切换模块110工作在默认状态,使I2C从设备维持当前的静态地址130;若检测到内部串行时钟线scl_in最先拉低,意味着I2C从设备与串行时钟线和串行数据线反接(即I2C从设备的串行时钟线引脚pad_scl通过串行数据线与I2C主设备的串行数据线引脚相连;I2C从设备的串行数据线引脚pad_sda通过串行时钟线与I2C主设备的串行时钟线引脚相连),则控制模块120控制切换模块110工作在切换状态,并使I2C从设备当前的静态地址的至少1位取反以修改静态地址。在一个具体的实施例中,将I2C从设备当前的静态地址的最高位或任意多位取反,以修改静态地址。

在图1所示的具体实施例中,控制模块120用于产生并输出第一控制信号exchange和第二控制信号no_exchange给切换模块110的控制端,其中,若检测到内部串行数据线sda_in最先拉低,则控制模块120使得第二控制信号no_exchange由默认值跳变为有效值,其可以维持切换模块110工作在默认状态,并使I2C从设备维持当前的静态地址;若检测到内部串行时钟线scl_in最先拉低,则控制模块120使得第一控制信号exchange由默认值跳变为有效值,其控制切换模块110工作在切换状态,并使I2C从设备当前的静态地址的至少1位取反以修改静态地址。

在图1所示的具体实施例中,第一控制信号exchange是内部串行时钟线scl_in的时钟域,默认值为0,有效值为1;第二控制信号no_exchange是内部串行数据线sda_in的时钟域,默认值为0,有效值为1。其中,第一控制信号exchange和第二控制信号no_exchange互为屏蔽,换言之,不存在第一控制信号exchange和第二控制信号no_exchange同时为1的情况,即第一控制信号exchange和第二控制信号no_exchange不能同时为有效值。

需要特别说明的是,第一控制信号exchange为1(或有效值)后,只能被复位才会清零;第二控制信号no_exchange为1(或有效值)后,只能被复位才会清零。

请参考图2所示,其为本发明在一个实施例中的I2C从设备的静态地址的自动修改方法的流程图。图2所示的I2C从设备的静态地址的自动修改方法包括如下步骤。

步骤210、提供如图1所示的I2C从设备。

步骤220、将I2C从设备的串行时钟线引脚pad_scl通过串行时钟线与I2C主设备(未图示)的串行时钟线引脚相连,或通过串行数据线与I2C主设备(未图示)的串行数据线引脚相连。

步骤230、将I2C从设备的串行数据线引脚pad_sda通过串行数据线与I2C主设备(未图示)的串行数据线引脚相连,或通过串行时钟线与I2C主设备(未图示)的串行时钟线引脚相连。

步骤240、在I2C从设备与I2C主设备(未图示)发起通信时,控制模块120检测内部串行时钟线scl_in和内部串行数据线sda_in哪个最先拉低。

步骤250、若检测到内部串行数据线sda_in最先拉低,意味着I2C从设备与串行时钟线和串行数据线正接(即I2C从设备的串行时钟线引脚pad_scl通过串行时钟线与I2C主设备的串行时钟线引脚相连;I2C从设备的串行数据线引脚pad_sda通过串行数据线与I2C主设备的串行数据线引脚相连),则控制模块120维持切换模块110工作在默认状态,并使I2C从设备维持当前的静态地址。

步骤260、若检测到内部串行时钟线scl_in最先拉低,意味着I2C从设备与串行时钟线和串行数据线反接(即I2C从设备的串行时钟线引脚pad_scl通过串行数据线与I2C主设备的串行数据线引脚相连;I2C从设备的串行数据线引脚pad_sda通过串行时钟线与I2C主设备的串行时钟线引脚相连),则控制模块120控制切换模块110工作在切换状态,并使I2C从设备当前的静态地址的至少1位取反以修改静态地址。

综上可知,若两个如图1所示的I2C从设备的静态地址相同,其中,一个I2C从设备可通过与串行时钟线和串行数据线反接的方式将静态地址自动修改,从而使两个如图1所示的I2C从设备相区别,具体请参见下文所述。

请参考图3所示,其为本发明在一个实施例中如图1所示的第一I2C从设备和第二I2C从设备与I2C主设备的电路连接示意图。在图3所示的实施例中,第一I2C从设备300和第二I2C从设备400的电路结构与图1所示的I2C从设备的电路结构完全相同,且第一I2C从设备300和第二I2C从设备400的静态地址也相同,I2C主设备500想要分别与它们通信的话,第一I2C从设备300和第二I2C从设备400中的一个的静态地址需要修改。

其中,第一I2C从设备300和包括串行时钟线引脚pad_scl、串行数据线引脚pad_sda、内部串行时钟线scl_in、内部串行数据线sda_in、切换模块310、控制模块320和静态地址330。第二I2C从设备400和包括串行时钟线引脚pad_scl、串行数据线引脚pad_sda、内部串行时钟线scl_in、内部串行数据线sda_in、切换模块410、控制模块420和静态地址430。

在图3所示的实施例中,将第一I2C从设备300与串行时钟线SCL和串行数据线SDA正接:第一I2C从设备300的串行数据线引脚pad_sda通过串行数据线SDA与I2C主设备500的串行数据线引脚相连,第一I2C从设备300的串行时钟线引脚pad_scl通过串行时钟线SCL与I2C主设备500的串行时钟线引脚相连。将第二I2C从设备400与串行时钟线SCL和串行数据线SDA反接:第二I2C从设备400的串行数据线引脚pad_sda通过串行时钟线SCL与I2C主设备500的串行时钟线引脚相连,第二I2C从设备400的串行时钟线引脚pad_scl通过串行数据线SDA与I2C主设备500的串行数据线引脚相连。

请参考图4所示,其为本发明在一个实施例中如图3所示的I2C从设备的静态地址的自动修改方法的流程图。图4所示的I2C从设备的静态地址的自动修改方法包括如下步骤。

步骤610、提供第一I2C从设备300和第二I2C从设备400,其中,第一I2C从设备300和第二I2C从设备400的电路结构与图1所示的I2C从设备的电路结构完全相同,且第一I2C从设备300和第二I2C从设备400的静态地址也相同。

步骤620、将第一I2C从设备300与串行时钟线SCL和串行数据线SDA正接,即将第一I2C从设备300的串行数据线引脚pad_sda通过串行数据线SDA与I2C主设备500的串行数据线引脚相连,将第一I2C从设备300的串行时钟线引脚pad_scl通过串行时钟线SCL与I2C主设备500的串行时钟线引脚相连。

步骤630、将第二I2C从设备400与串行时钟线SCL和串行数据线SDA反接,即将第二I2C从设备400的串行数据线引脚pad_sda通过串行时钟线SCL与I2C主设备500的串行时钟线引脚相连,将第二I2C从设备400的串行时钟线引脚pad_scl通过串行数据线SDA与I2C主设备500的串行数据线引脚相连。

步骤640、在第一I2C从设备400与I2C主设备500发起通信时,控制模块320检测到串行数据线引脚pad_sda最先拉低,则控制模块320维持切换模块310工作在默认状态,使第一I2C从设备300维持当前的静态地址。

步骤650、在第二I2C从设备400与I2C主设备500发起通信时,控制模块420检测到串行时钟线引脚pad_scl最先拉低,则控制模块420控制切换模块410工作在切换状态,并使第二I2C从设备400当前的静态地址的至少1位取反以修改静态地址。

请参考图5所示,其为本发明在一个实施例中如图3所示的第一I2C从设备正接时各个信号的波形示意图;请参考图6所示,其为本发明在一个实施例中如图3所示的第二I2C从设备反接时各个信号的波形示意图。

综上所述,本发明提供一种I2C从设备及其静态地址的自动修改方法,当静态地址完全相同的两个I2C从设备与I2C连接时,将其中一个正接,另一个反接,正接的I2C从设备的静态地址保持不变,反接的I2C从设备的静态地址最高位或任意多位取反,以修改静态地址,从而使这两个I2C从设备相区别,这样用户在通信前就不需要额外地进行地址初始化操作。

在本发明中,“连接”、“相连”、“连”、“接”等表示电性连接的词语,如无特别说明,则表示直接或间接的电性连接。

以上所述仅为本发明的较佳实施方式,本发明的保护范围并不以上述实施方式为限,但凡本领域普通技术人员根据本发明揭示内容所作的等效修饰或变化,皆应纳入权利要求书中记载的保护范围内。

相关技术
  • 一种静态资源自动化采集方法、系统、设备及存储介质
  • 一种IPv6地址访问IPv4资源的方法、设备、系统及介质
  • 一种使用静态网络地址的终端设备的自动升级方法
  • 一种使用静态网络地址的终端设备的自动升级方法
技术分类

06120116482086