I2C总线地址自适应系统及其自适应方法与流程
未命名
08-22
阅读:119
评论:0
i2c总线地址自适应系统及其自适应方法
技术领域
1.本发明涉及通信设备技术领域,尤其涉及i2c总线地址自适应系统及其自适应方法。
背景技术:
2.i2c总线是一种串行通信总线,其接口通用器件的器件地址是由种类型号和寻址码组成的,共7位。如图3所示,在i2c通信过程中,每个设备都必须有一个唯一的不重复地址才能正确实现主从设备之间的通信。
3.但在如果在某些特殊的情况下需访问多个同类型的i2c芯片,现有技术需要在软件上通过增加微控制器上i2c总线端口来实现总线控制切换,但对于一些资源紧张的微控制器来说这个方法往往不太容易实现;当然也可以在硬件上使用i2c多路复用器通过轮询输入的方式交换通信通道。这两种方法都会增加i2c的使用复杂度,使得应用层再访问这些i2c设备时变得复杂。
技术实现要素:
4.本发明解决的技术问题是:解决了使用同一类型i2c器件的地址冲突问题,实现了i2c设备的地址自动适应。
5.本发明的目的是通过以下技术方案来实现的: i2c总线地址自适应系统,包括微控制器,两个分属同类型的从设备,单路scl线和单路sda线;所述从设备包括i2c器件和识别模块;所述微控制器包括scl线和sda线;所述i2c器件均包括scl线和sda线;所述两个分属同类型的从设备与微控制器级联。
6.具体地,所述i2c器件的scl线与所述单路scl线连接,sda线与所述单路sda线连接。
7.具体地,所述i2c器件的scl线与所述单路sda线连接,sda线与所述单路scl线连接。
8.i2c总线地址自适应方法,基于所述的i2c总线地址自适应系统将两个同类型的从设备与微控制器实现连接,当微控制器i2c连接方式为正接时(微控制器的scl线接i2c器件的scl线,微控制器的sda线接i2c器件的sda线),包括以下步骤:步骤一:从设备收到微控制器发送的start信号时,从识别模块优先收到第一个sda的下降沿信号,并根据此下降沿信号及此时刻总线上的scl信号将识别模块中的可能为正常连接的信号位置为高电平(maybenormal = 1);步骤二:当从设备收到微控制器发送的scl下降沿电平来到时,识别模块会根据此下降沿信号和此时刻的总线上的sda信号时将识别模块中的可能为交换连接信号位置为低电平(maybeswapped = 0);步骤三:当从设备收到微控制器发送stop信号时,识别模块优先收到scl上升沿信号,识别模块会根据总线上的sda信号及所述的可能交换连接信号(maybeswapped = 0)一
起去确定是否需要将交换信号置为低电平(isswapped = 0);步骤四:当从设备收到微控制器发送来的sda上升沿信号时,识别模块会根据总线上scl上的数据及所述的可能正常连接信号(maybenormal = 1)确认是否需要将正常信号置为高电平(isnoramal = 1);步骤五:基于低电平isswapped和高电平isnormal两个信号,判定从设备与主设备的scl和sda信号未交换,识别模块直接将微控制器发送来的scl信号接入给从设备的scl,sda信号接入给从设备的sda同时维持从设备的设备地址为a。
9.具体地,当微控制器i2c连接方式为反接时(微控制器的scl线接i2c器件的sda线,微控制器的sda线接i2c器件的scl线),包括以下步骤:步骤1:从设备收到微控制器发送的start信号时,其内部总线交换识别模块会优先接收到微控制器发送过来的scl下降沿,并根据此scl的下降沿信号及此时刻的总线上的sda信号时将识别模块中的可能为反向连接信号置为高电平(maybeswapped = 1);步骤2:从设备中的识别模块第二个会收到微控制器发送过来的sda下降沿信号,并根据此sda的下降沿信号及此时刻总线上的scl信号将识别模块中的可能为正向连接信号置为低电平(maybenormal = 0);步骤3:从设备中收到微控制器发送的stop信号时,其中的识别模块会优先收到sda的上升沿跳变信号,此时识别模块会同时判读总线上scl的数据(sclfrombus)及所述的的可能正常连接信号(maybenormal)确认是否需要将正向连接信号置为低电平(isnoramal = 0);步骤4:从设备中收到微控制器发送的stop信号时,从设备中的识别模块在收到scl的上升沿跳变信号,此时内别模块会根据总线上sda的数据(sdafrombus)以及所述的可能为反向连接信号(maybeswapped)确认是否需要将交换信号置为高电平(isswapped = 1);步骤5:基于高电平isswapped和低电平isnormal信号,判定从设备的scl和sda信号判断为未交换,识别模块将微控制器发送的scl信号接入给从设备的sda中,将sda信号接入给从设备的scl,同时动态切换从设备的设备地址为b。
10.具体地,还包括通信前的步骤:微控制器在与从设备开始通信前,发送一字节的数据给从设备。
11.具体地,所述从设备的i2c地址的自动识别仅需要微控制器后发送一次完整的i2c时序,而在后面的微控制器和从设备发送的i2c通信过程中不需要再次进行i2c总线地址的自动识别。
12.本发明的有益效果:通过直接反向连接i2c器件,并利用微控制器与从设备的第一次通信达到i2c总线地址的自动适应,从而解决了使用同一类型i2c器件的地址冲突问题,而且也无需增加额外的地址自适应芯片或接口,实现了i2c设备的地址自动适应,也便于更好的管理i2c总线上的设备。
附图说明
13.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现
有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图示出的结构获得其他的附图。
14.图1是本发明的实现流程图;图2是本发明微控制器和从机的i2c硬件电路连接结构框图;图3是标准i2c通信示意图;图4是本发明从机设备收到的正向通信连接示意图;图5是本发明从机设备收到的反向通信连接示意图。
实施方式
15.应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。
16.为了对本发明的技术特征、目的和有益效果有更加清楚的理解,现对本发明的技术方案精选以下详细说明。显然,所描述的实施案例是本发明一部分实施例,而不是全部实施例,不能理解为对本发明可实施范围的限定。基于本发明的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的其他所有实施例,都属于本发明的保护范围。
实施例
17.本实施例中,如图2所示, i2c总线地址自适应系统,包括微控制器,两个分属同类型的从设备,单路scl线和单路sda线;所述从设备包括i2c器件和识别模块;所述微控制器包括scl线和sda线;所述i2c器件均包括scl线和sda线;所述两个分属同类型的从设备与微控制器级联。
18.具体地,所述i2c器件的scl线与所述单路scl线连接,sda线与所述单路sda线连接。
19.具体地,所述i2c器件的scl线与所述单路sda线连接,sda线与所述单路scl线连接。
20.如图1所示,i2c总线地址自适应方法,基于所述的i2c总线地址自适应系统将两个同类型的从设备与微控制器实现连接,如图4所示,当微控制器i2c连接方式为正接时(微控制器的scl线接i2c器件的scl线,微控制器的sda线接i2c器件的sda线),包括以下步骤:步骤一:从设备收到微控制器发送的start信号时,从识别模块优先收到第一个sda的下降沿信号,并根据此下降沿信号及此时刻总线上的scl信号将识别模块中的可能为正常连接的信号位置为高电平(maybenormal = 1);步骤二:当从设备收到微控制器发送的scl下降沿电平来到时,识别模块会根据此下降沿信号和此时刻的总线上的sda信号时将识别模块中的可能为交换连接信号位置为低电平(maybeswapped = 0);步骤三:当从设备收到微控制器发送stop信号时,识别模块优先收到scl上升沿信号,识别模块会根据总线上的sda信号及所述的可能交换连接信号(maybeswapped = 0)一起去确定是否需要将交换信号置为低电平(isswapped = 0);步骤四:当从设备收到微控制器发送来的sda上升沿信号时,识别模块会根据总线上scl上的数据及所述的可能正常连接信号(maybenormal = 1)确认是否需要将正常信号
置为高电平(isnoramal = 1);步骤五:基于低电平isswapped和高电平isnormal两个信号,判定从设备与主设备的scl和sda信号未交换,识别模块直接将微控制器发送来的scl信号接入给从设备的scl,sda信号接入给从设备的sda同时维持从设备的设备地址为a。
21.如图5所示,具体地,当微控制器i2c连接方式为反接时(微控制器的scl线接i2c器件的sda线,微控制器的sda线接i2c器件的scl线),包括以下步骤:步骤1:从设备收到微控制器发送的start信号时,其内部总线交换识别模块会优先接收到微控制器发送过来的scl下降沿,并根据此scl的下降沿信号及此时刻的总线上的sda信号时将识别模块中的可能为反向连接信号置为高电平(maybeswapped = 1);步骤2:从设备中的识别模块第二个会收到微控制器发送过来的sda下降沿信号,并根据此sda的下降沿信号及此时刻总线上的scl信号将识别模块中的可能为正向连接信号置为低电平(maybenormal = 0);步骤3:从设备中收到微控制器发送的stop信号时,其中的识别模块会优先收到sda的上升沿跳变信号,此时识别模块会同时判读总线上scl的数据(sclfrombus)及所述的的可能正常连接信号(maybenormal)确认是否需要将正向连接信号置为低电平(isnoramal = 0);步骤4:从设备中收到微控制器发送的stop信号时,从设备中的识别模块在收到scl的上升沿跳变信号,此时内别模块会根据总线上sda的数据(sdafrombus)以及所述的可能为反向连接信号(maybeswapped)确认是否需要将交换信号置为高电平(isswapped = 1);步骤5:基于高电平isswapped和低电平isnormal信号,判定从设备的scl和sda信号判断为未交换,识别模块将微控制器发送的scl信号接入给从设备的sda中,将sda信号接入给从设备的scl,同时动态切换从设备的设备地址为b。
22.具体地,还包括通信前的步骤:微控制器在与从设备开始通信前,发送一字节的数据给从设备。
23.具体地,所述从设备的i2c地址的自动识别仅需要微控制器后发送一次完整的i2c时序,而在后面的微控制器和从设备发送的i2c通信过程中不需要再次进行i2c总线地址的自动识别。
24.以上显示和描述了本发明的基本原理、主要特征和本发明的优点。本行业的技术人员应该了解,本发明不受上述实施例的限制,上述实施例和说明书中描述的只是说明本发明的原理,在不脱离本发明精神和范围的前提下,本发明还会有各种变化和改进,这些变化和改进都落入要求保护的本发明范围内。本发明要求保护的范围由所附的权利要求书及其等效物界定。
25.需要说明的是,对于前述的各个方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本技术并不受所描述的动作顺序的限制,因为依据本技术,某一些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和单元并不一定是本技术所必须的。
26.在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详细描述
的部分,可以参见其他实施例的相关描述。
27.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、rom、ram等。
28.以上所揭露的仅为本发明较佳实施例而已,当然不能以此来限定本发明之权利范围,因此依本发明权利要求所作的等同变化,仍属本发明所涵盖的范围。
技术特征:
1. i2c总线地址自适应系统,其特征在于,包括微控制器,两个分属同类型的从设备,单路scl线和单路sda线;所述从设备包括i2c器件和识别模块;所述微控制器包括scl线和sda线;所述i2c器件均包括scl线和sda线;所述两个分属同类型的从设备与微控制器级联。2.根据权利要求1所述的i2c总线地址自适应系统,其特征在于,所述i2c器件的scl线与所述单路scl线连接,sda线与所述单路sda线连接。3.根据权利要求1所述的i2c总线地址自适应系统,其特征在于,所述i2c器件的scl线与所述单路sda线连接,sda线与所述单路scl线连接。4.i2c总线地址自适应方法,基于权利要求1-3所述的i2c总线地址自适应系统将两个同类型的从设备与微控制器实现连接,其特征在于,当微控制器i2c连接方式为正接时(微控制器的scl线接i2c器件的scl线,微控制器的sda线接i2c器件的sda线),包括以下步骤:步骤一:从设备收到微控制器发送的start信号时,从识别模块优先收到第一个sda的下降沿信号,并根据此下降沿信号及此时刻总线上的scl信号将识别模块中的可能为正常连接的信号位置为高电平(maybenormal = 1);步骤二:当从设备收到微控制器发送的scl下降沿电平来到时,识别模块会根据此下降沿信号和此时刻的总线上的sda信号时将识别模块中的可能为交换连接信号位置为低电平(maybeswapped = 0);步骤三:当从设备收到微控制器发送stop信号时,识别模块优先收到scl上升沿信号,识别模块会根据总线上的sda信号及所述的可能交换连接信号(maybeswapped = 0)一起去确定是否需要将交换信号置为低电平(isswapped = 0);步骤四:当从设备收到微控制器发送来的sda上升沿信号时,识别模块会根据总线上scl上的数据及所述的可能正常连接信号(maybenormal = 1)确认是否需要将正常信号置为高电平(isnoramal = 1);步骤五:基于低电平isswapped和高电平isnormal两个信号,判定从设备与主设备的scl和sda信号未交换,识别模块直接将微控制器发送来的scl信号接入给从设备的scl,sda信号接入给从设备的sda同时维持从设备的设备地址为a。5.根据权利要求4所述的i2c总线地址自适应方法,其特征在于,当微控制器i2c连接方式为反接时(微控制器的scl线接i2c器件的sda线,微控制器的sda线接i2c器件的scl线),包括以下步骤:步骤1:从设备收到微控制器发送的start信号时,其内部总线交换识别模块会优先接收到微控制器发送过来的scl下降沿,并根据此scl的下降沿信号及此时刻的总线上的sda信号时将识别模块中的可能为反向连接信号置为高电平(maybeswapped = 1);步骤2:从设备中的识别模块第二个会收到微控制器发送过来的sda下降沿信号,并根据此sda的下降沿信号及此时刻总线上的scl信号将识别模块中的可能为正向连接信号置为低电平(maybenormal = 0);步骤3:从设备中收到微控制器发送的stop信号时,其中的识别模块会优先收到sda的上升沿跳变信号,此时识别模块会同时判读总线上scl的数据(sclfrombus)及所述的的可能正常连接信号(maybenormal)确认是否需要将正向连接信号置为低电平(isnoramal = 0);步骤4:从设备中收到微控制器发送的stop信号时,从设备中的识别模块在收到scl的
上升沿跳变信号,此时内别模块会根据总线上sda的数据(sdafrombus)以及所述的可能为反向连接信号(maybeswapped)确认是否需要将交换信号置为高电平(isswapped = 1);步骤5:基于高电平isswapped和低电平isnormal信号,判定从设备的scl和sda信号判断为未交换,识别模块将微控制器发送的scl信号接入给从设备的sda中,将sda信号接入给从设备的scl,同时动态切换从设备的设备地址为b。6.根据权利要求5所述的i2c总线地址自适应方法,其特征在于,还包括通信前的步骤:微控制器在与从设备开始通信前,发送一字节的数据给从设备。7.根据权利要求6所述的i2c总线地址自适应方法,其特征在于,所述从设备的i2c地址的自动识别仅需要微控制器后发送一次完整的i2c时序,而在后面的微控制器和从设备发送的i2c通信过程中不需要再次进行i2c总线地址的自动识别。
技术总结
本发明公开了I2C总线地址自适应系统及其自适应方法,其中系统包括微控制器,分属给同一从设备的两个I2C器件,单路SCL线和单路SDA线;所述微控制器包括SCL线和SDA线;所述I2C器件均包括SCL线和SDA线。其中方法包括微控制器I2C连接方式为正接和微控制器I2C连接方式为反接两种方法。本发明通过直接反向连接I2C器件,并利用微控制器与从设备的第一次通信达到I2C总线地址的自动适应,从而解决了使用同一类型I2C器件的地址冲突问题,而且也无需增加额外的地址自适应芯片或接口,实现了I2C设备的地址自动适应,也便于更好的管理I2C总线上的设备。的设备。的设备。
技术研发人员:胡勇 滕鑫莉
受保护的技术使用者:成都维客昕微电子有限公司
技术研发日:2023.06.08
技术公布日:2023/8/21
版权声明
本文仅代表作者观点,不代表航家之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
航空之家 https://www.aerohome.com.cn/
飞机超市 https://mall.aerohome.com.cn/
航空资讯 https://news.aerohome.com.cn/
