CN108280041B - 一种内部集成电路主机的通信方法和装置 - Google Patents

一种内部集成电路主机的通信方法和装置 Download PDF

Info

Publication number
CN108280041B
CN108280041B CN201711485809.8A CN201711485809A CN108280041B CN 108280041 B CN108280041 B CN 108280041B CN 201711485809 A CN201711485809 A CN 201711485809A CN 108280041 B CN108280041 B CN 108280041B
Authority
CN
China
Prior art keywords
host
data
receiving
sent
sending
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN201711485809.8A
Other languages
English (en)
Other versions
CN108280041A (zh
Inventor
张鸿禹
李杨
黄钟
肖萍萍
朱明�
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Wuhan Institute Of Ship Communication (china Shipbuilding Industry Corp No 722 Institute)
Original Assignee
Wuhan Institute Of Ship Communication (china Shipbuilding Industry Corp No 722 Institute)
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Wuhan Institute Of Ship Communication (china Shipbuilding Industry Corp No 722 Institute) filed Critical Wuhan Institute Of Ship Communication (china Shipbuilding Industry Corp No 722 Institute)
Priority to CN201711485809.8A priority Critical patent/CN108280041B/zh
Publication of CN108280041A publication Critical patent/CN108280041A/zh
Application granted granted Critical
Publication of CN108280041B publication Critical patent/CN108280041B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F13/00Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F13/38Information transfer, e.g. on bus
    • G06F13/42Bus transfer protocol, e.g. handshake; Synchronisation
    • G06F13/4282Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
    • G06F13/4291Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2213/00Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
    • G06F2213/0016Inter-integrated circuit (I2C)

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Communication Control (AREA)
  • Information Transfer Systems (AREA)

Abstract

本发明公开了一种内部集成电路主机的通信方法和装置,属于通信技术领域。方法包括:接收第一I2C主机依次发送的起始位、第二I2C主机的地址和写指令;当第一I2C主机获得存储器的使用权时,接收第一I2C主机以字节为单位发送的数据,将数据保存在存储器内;接收第一I2C主机发送的结束位,向第二I2C主机发送中断信号;接收第二I2C主机依次发送的起始位、设定地址和读指令;以字节为单位向第二I2C主机发送数据;接收第二I2C主机发送的结束位,第一I2C主机失去存储器的使用权。本发明可实现一个I2C主机将数据写入另一个I2C主机。

Description

一种内部集成电路主机的通信方法和装置
技术领域
本发明涉及通信技术领域,特别涉及一种内部集成电路主机的通信方法和装置。
背景技术
内部集成电路(英文:Inter Integrated Circuit,简称:I2C)总线是一种简单的双向二线制同步串行总线,包括串行数据(英文:Serial Data,简称:SDA)线和串行时钟(英文:Serial Clock,简称:SCL)线两根信号线。所有接入I2C总线的设备的SDA线都接到I2C总线的SDA线上,同时所有接入I2C总线的设备的SCL线都接到I2C总线的SCL线上。
接入I2C总线的设备包括至少一个I2C主机和至少一个I2C从机。I2C主机是配置在主模式下的器件,可初始化发送、产生时钟信号和终止发送,即控制I2C总线的数据传输;而I2C从机是配置在从模式下的器件,在I2C总线传输数据时被I2C主机寻址。具体地,在I2C总线传输数据时,I2C主机通过寻址的方式访问I2C从机,被寻址的I2C从机进行应答,进而利用I2C总线将I2C主机的数据写入I2C从机中,或者将I2C从机的数据读取到I2C主机中,实现I2C主机和I2C从机之间的通信。
在实现本发明的过程中,发明人发现现有技术至少存在以下问题:
为了避免冲突,I2C总线同一时刻只能由一个配置在主模式下的器件(即I2C主机)控制。如果接入I2C总线的两个器件都配置在主模式下,则两个器件之间将无法进行相互通信。
发明内容
为了解决现有技术两个I2C主机之间无法实现相互通信的问题,本发明实施例提供了一种内部集成电路主机的通信方法和装置。所述技术方案如下:
一方面,本发明实施例提供了一种内部集成电路I2C主机的通信方法,所述通信方法包括:
接收第一I2C主机依次发送的起始位、第二I2C主机的地址和写指令,并向所述第一I2C主机发送确认消息;
当所述第一I2C主机获得存储器的使用权时,接收所述第一I2C主机以字节为单位发送的数据,将所述数据保存在所述存储器内,并在每次接收到一个字节的所述数据之后,向所述第一I2C主机发送确认消息;
接收所述第一I2C主机发送的结束位,向所述第二I2C主机发送中断信号;
接收所述第二I2C主机根据所述中断信号依次发送的起始位、设定地址和读指令,并向所述第二I2C主机发送确认消息;
以字节为单位向所述第二I2C主机发送所述数据,并接收所述第二I2C主机在每次接收到一个字节的所述数据之后发送的确认消息;
接收所述第二I2C主机发送的结束位,所述第一I2C主机失去所述存储器的使用权。
可选地,所述通信方法还包括:
在接收到所述第一I2C主机发送的第二I2C主机的地址和写指令之后,将所述第一I2C主机的时钟线信号设置为低电平,以使所述第一I2C主机暂停发送所述数据;
确定所述存储器的使用权;
当所述第一I2C主机获得所述存储器的使用权时,释放所述第一I2C主机的时钟线信号,以接收所述第一I2C主机发送的数据。
可选地,所述通信方法还包括:
在所述第一I2C主机获得所述存储器的使用权的情况下,接收所述第二I2C主机依次发送的起始位、I2C主机的地址和写指令,并向所述第二I2C主机发送确认消息;
将所述第二I2C主机的数据线信号在设定时长内设置为低电平,以使所述第二I2C主机放弃将数据写入所述I2C主机。
可选地,所述通信方法还包括:
在所述第一I2C主机获得所述存储器的使用权的情况下,接收第三I2C主机依次发送的起始位、I2C主机的地址和写指令,并向所述第三I2C主机发送确认消息,所述第三I2C主机为除所述第一I2C主机和所述第二I2C主机之外的I2C主机;
将所述第三I2C主机的时钟线信号设置为低电平,以使所述第三I2C主机暂停发送数据。
可选地,所述通信方法还包括:
接收第四I2C主机依次发送的起始位、地址位和读指令,并向所述第四I2C主机发送确认消息;
当所述地址位为所述设定地址且所述第四I2C主机为除所述第二I2C主机之外的I2C主机时,或者当所述地址位为I2C主机的地址时,以字节为单位向所述第四I2C主机发送无效数据,并接收所述第四I2C主机在每次接收到一个字节的所述无效数据之后发送的确认消息;
接收所述第四I2C主机发送的结束位,停止发送所述无效数据。
另一方面,本发明实施例提供了一种内部集成电路主机I2C主机的通信装置,所述通信装置包括:
第一通信单元,用于接收第一I2C主机依次发送的起始位、第二I2C主机的地址和写指令,并向所述第一I2C主机发送确认消息;当所述第一I2C主机获得存储器的使用权时,接收所述第一I2C主机以字节为单位发送的数据,并在每次接收到一个字节的所述数据之后,向所述第一I2C主机发送确认消息;接收所述第一I2C主机发送的结束位;
处理单元,用于在接收到所述第一I2C主机发送的数据之后,将所述数据保存在所述存储器内;在接收到所述第一I2C主机发送的结束位之后,向所述第二I2C主机发送中断信号;
第二通信单元,用于接收所述第二I2C主机根据所述中断信号依次发送的起始位、设定地址和读指令,并向所述第二I2C主机发送确认消息;以字节为单位向所述第二I2C主机发送所述数据,并接收所述第二I2C主机在每次接收到一个字节的所述数据之后发送的确认消息;接收所述第二I2C主机发送的结束位,所述第一I2C主机失去所述存储器的使用权。
可选地,所述第一通信单元还用于,
在接收到所述第一I2C主机发送的第二I2C主机的地址和写指令之后,将所述第一I2C主机的时钟线信号设置为低电平,以使所述第一I2C主机暂停发送所述数据;
确定所述存储器的使用权;
当所述第一I2C主机获得所述存储器的使用权时,释放所述第一I2C主机的时钟线信号,以接收所述第一I2C主机发送的数据。
可选地,所述第二通信单元还用于,
在所述第一I2C主机获得所述存储器的使用权的情况下,接收所述第二I2C主机依次发送的起始位、I2C主机的地址和写指令,并向所述第二I2C主机发送确认消息;
将所述第二I2C主机的数据线信号在设定时长内设置为低电平,以使所述第二I2C主机放弃将数据写入所述I2C主机。
可选地,所述通信装置还包括:
第三通信单元,用于在所述第一I2C主机获得所述存储器的使用权的情况下,接收第三I2C主机依次发送的起始位、I2C主机的地址和写指令,并向所述第三I2C主机发送确认消息,所述第三I2C主机为除所述第一I2C主机和所述第二I2C主机之外的I2C主机;将所述第三I2C主机的时钟线信号设置为低电平,以使所述第三I2C主机暂停发送数据。
可选地,所述通信方法还包括:
第四通信单元,用于接收第四I2C主机依次发送的起始位、地址位和读指令,并向所述第四I2C主机发送确认消息;当所述地址位为所述设定地址且所述第四I2C主机为除所述第二I2C主机之外的I2C主机时,或者当所述地址位为I2C主机的地址时,以字节为单位向所述第四I2C主机发送无效数据,并接收所述第四I2C主机在每次接收到一个字节的所述无效数据之后发送的确认消息;接收所述第四I2C主机发送的结束位,停止发送所述无效数据。
本发明实施例提供的技术方案带来的有益效果是:
通过在各个I2C主机和I2C总线之间增设通信装置,通信装置先与一个I2C主机按照I2C协议进行交互,将这个I2C主机写入另一个I2C主机的数据先存储在通信装置中,再使被写入数据的I2C主机按照I2C协议从通信装置中读取出数据,在遵循现有I2C协议的基础上实现了一个I2C主机将数据写入另一个I2C主机。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的I2C主机的通信方法的应用场景图;
图2是本发明实施例提供的一种I2C主机的通信方法的信息交互图;
图3是本发明实施例提供的数据读写过程中I2C总线的时序图;
图4是本发明实施例提供的传输数据格式的示意图;
图5是本发明实施例提供的另一种I2C主机的通信方法的信息交互图;
图6是本发明实施例提供的又一种I2C主机的通信方法的信息交互图;
图7是本发明实施例提供的又一种I2C主机的通信方法的信息交互图;
图8是本发明实施例提供的一种I2C主机的通信装置的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。
图1为本发明实施例提供的内部集成电路(英文:Inter Integrated Circuit,简称:I2C)主机的通信方法的应用场景图,参见图1,N个I2C主机(图1中分别为I2C主机11、I2C主机12、……、I2C主机1N)和M个I2C从机(图1中分别为I2C从机21、I2C从机22、……、I2C从机2M)接入I2C总线,N≥2且N为整数,M为正整数。I2C总线包括SCL(Serial Clock,串行时钟)线(图1中用细线表示)和SDA(Serial Data,串行数据)线(图1中用粗线表示)两根信号线,N个I2C主机和M个I2C从机的SCL线(图1中也用细线表示)分别接入I2C总线的SCL线,N个I2C主机和M个I2C从机的SDA线(图1中也用粗线表示)分别接入I2C总线的SDA线。
为了实现两个I2C主机之间的通信,如图1所示,本发明增设了一个通信装置30,通信装置30串联在N个I2C主机和I2C总线之间。具体地,通信装置30可以包括调度器31、调度器状态寄存器32、发送设备寄存器33、接收设备寄存器34、存储器35、I2C主控制器36、以及与接入I2C总线的I2C主机一一对应的I2C从控制器371、372、……、37N。其中,调度器31分别与调度器状态寄存器32、发送设备寄存器33、接收设备寄存器34、存储器35、I2C主控制器36、以及各个I2C从控制器37连接,I2C主控制器36与所有I2C从机接入的I2C总线连接,每个I2C从控制器37与对应的I2C主机连接(各个部分的具体作用请见下文)。
具体地,以图1所示的场景为例,I2C主控制器36与M个I2C从机(包括I2C从机21、I2C从机22、……、I2C从机2M)接入的I2C总线的SCL线和SDA线连接,一个I2C从控制器37与I2C主机11的SCL线和SDA线连接,另一个I2C从控制器37与I2C主机12的SCL线和SDA线连接,……,又一个I2C从控制器37与I2C主机1N的SCL线和SDA线连接。
在具体实现时,通信装置可以采用FPGA(Field Programmable Gate Array,现场可编程门阵列)实现。另外,N个I2C主机可以为微控制器,M个I2C从机可以为微控制器外围设备,如存储器、输入/输出(英文:Input/Output,简称:I/O)接口等。
需要说明的是,图1中I2C主机和I2C从机的数目仅为举例,本发明并不限制于此。
本发明实施例提供了一种I2C主机的通信方法,图2为本实施例提供的I2C主机的通信方法的信息交互图,适用于利用在图1所示的应用场景中利用通信装置完成两个I2C主机之间写数据的过程。参见图2,该通信方法包括:
步骤201:第一I2C主机依次发送起始位、第二I2C主机的地址和写指令。
在本实施例中,第一I2C主机和第二I2C主机可以为图1所示的应用场景中任意两个I2C主机,例如第一I2C主机为I2C主机11,第二I2C主机为I2C主机12。
起始位为在SCL线信号高电平时,SDA线信号从高电平向低电平切换;第二I2C主机的地址为在起始位之后,SDA线信号在SCL线信号交替出现高电平和低电平时发送的第一个字节数据(包括8位)中的前7位数据;写指令为在起始位之后,SDA线信号在SCL线信号交替出现高电平和低电平时发送的第一个字节数据中的最后1位数据。
在其它实施例中,地址也可以为10位数据,此时在起始位之后,SDA线信号在SCL线信号交替出现高电平和低电平时发送的第一个字节数据(包括8位)中的前5位数据表示10位地址的模式,第二I2C主机的地址第一个字节数据(包括8位)中的第6位数据至第7位数据、以及第二个字节数据。本实施例以7位数据的地址为例进行说明。
图3为数据读写过程中I2C总线的时序图,参见图3,I2C总线协议规定,I2C总线空闲时,SCL线信号和SDA线信号均为高电平。如果I2C主机要进行数据读写,则保持SCL线信号为高电平,将SDA线信号从高电平向低电平切换。这个切换的过程是数据读写的起始条件(也称为起始位),I2C总线在起始条件发生之后处于忙碌状态。
相应地,如果I2C主机完成数据读写,则保持SCL线信号为高电平,将SDA线信号从低电平向高电平切换。这个切换过程是数据读写的停止条件(也称为结束位),I2C总线在停止条件发生之后回到空闲状态。
而在起始条件发生和停止条件发生之间,即在起始条件发生之后,并且在停止条件发生之前,SCL线信号会一直按照固定的频率交替出现高电平和低电平,同时SDA线信号参照SCL线信号的变化情况进行数据的传输,完成数据读写。具体地,SDA线信号在SCL线信号出现低电平时进行高电平和低电平的切换,而在SCL线信号出现高电平时,SDA线信号会保持高电平或者低电平不变。
同时在传输数据时,传输数据的总量可以不受限制,但是每次传输的数据必须以字节为单位,即每次传输8位数据,并且在每个字节的数据之后会有一个响应位。而所有字节的数据中首先传输的1个字节数据中,前7位数据表示与I2C主机进行数据读写的设备的地址,最后1位数据表示数据读写的方向。例如,0表示I2C主机将数据写入设备中,此时前7位数据表示I2C主机将数据写入的设备的地址;1表示I2C主机从设备中读取数据,此时前7位数据表示I2C主机读取数据所在设备的地址。
在具体实现时,I2C总线协议已规定,为所有接入I2C总线的I2C从机分配地址,以便I2C主机与I2C从机之间进行数据读写。而为了实现两个I2C主机之间的通信,相应也会为所有I2C主机分配地址,如从1~n。在所有I2C主机分配好地址之后,第一I2C主机即可按照I2C总线协议依次起始位、第二I2C主机的地址和写指令,以将数据写入第二I2C主机。
由于在图1所示的应用场景中,通信装置串联在各个I2C主机和与所有I2C从机接入的I2C总线之间,因此第一I2C主机依次发送的起始位、第二I2C主机的地址和写指令,只是通过第一I2C主机的SCL线和SDA线发送给通信装置,而不会发送到第二I2C主机。以第一I2C主机为I2C主机11,第二I2C主机为I2C主机12为例,步骤201实际上是I2C主机11通过I2C主机11的SCL线和SDA线,依次发送起始位、第二I2C主机的地址和写指令到通信装置30,而不是I2C主机12。但是对于I2C主机11来说,步骤201与I2C总线协议中读写数据的操作是一致的(详见前文所述),因此I2C主机11(即将数据写入另一个I2C主机的I2C主机)只需要按照I2C总线协议进行操作即可,并不需要进行改变。
步骤202:通信装置向第一I2C主机发送确认消息。
在本实施例中,确认(英文:Acknowledgement,简称:ACK)消息为SDA线上传输1个字节数据之后的第1位数据为低电平。
I2C总线协议规定,如前所述,在传输数据时,每次传输的数据必须以字节为单位,即每次传输8位数据,并且在每个字节的数据之后会有一个响应位。确认消息是设备接收到8位数据之后在响应位上传输的,响应位上有确认消息(一般为低电平)则表示数据传输成功,响应位上没有确认消息(一般为高电平)则表示数据传输失败。
通信装置在接收到第一I2C主机依次发送的起始位、第二I2C主机的地址和写指令之后,按照I2C总线协议向第一I2C主机发送确认消息,这样第一I2C主机在接收到确认消息之后,会认为已经成功与第二I2C主机建立通信,可以继续按照I2C总线协议发送数据。
步骤203:通信装置将第一I2C主机的SCL信号设置为低电平,以使第一I2C主机暂停发送数据。
I2C总线协议规定,在传输数据时,如果设备需要去处理其它事物,如中断程序,则可以将SCL线信号保持低电平,使I2C主机进入等待状态,此时I2C主机将暂停进行数据的传输,等到SCL线信号恢复到高电平时,I2C主机会继续传输数据。
通信装置在向第一I2C主机发送确认消息之后,将第一I2C主机的时钟线信号设置为低电平,使第一I2C主机认为第二I2C主机需要去处理其它事物,从而暂停发送数据。
步骤204:通信装置确定存储器的使用权。
如图1所示,通信装置包括调度器、调度器状态寄存器、发送设备寄存器、接收设备寄存器、存储器、I2C主控制器以及与I2C主机一一对应的I2C从控制器。其中,I2C从控制器用于与对应的I2C主机进行通信,I2C主控制器用于与各个I2C从机进行通信,存储器用于存储一个I2C主机写入另一个I2C主机的数据,调度器用于在各个I2C从控制器和I2C主控制器之间建立连接、以及分配存储器的使用权,调度器状态寄存器用于存储表示存储器的使用权已被分配的标志位,发送设备寄存器用于存储获得存储器的使用权的I2C主机的地址,接收设备寄存器用于存储获得存储器使用权的I2C主机将数据写入的I2C主机的地址。
因此上述步骤201~步骤204实际上都是由与第一I2C主机对应的I2C从控制器执行的。而在具体执行步骤204时,I2C从控制器向调度器申请存储器的使用权,此时调度器可以根据调度器状态寄存器是否存在标志位,确定是否将存储器的使用权分配给第一I2C主机:
当调度器状态寄存器中没有标志位时,调度器将存储器的使用权分配给第一I2C主机,此时第一I2C主机获得存储器的使用权;
当调度器状态寄存器中存在标志位时,调度器不将存储器的使用权分配给第一I2C主机,此时第一I2C主机没有获得存储器的使用权。
容易知道,如果此时第一I2C主机获得存储器的使用权,则调度器状态寄存器中会设置标志位,同时发送设备寄存器中会存储第一I2C主机的地址,接收设备寄存器中会存储第二I2C主机的地址。
需要说明的是,当调度器状态寄存器中的状态位表示存储器的使用权没有分配出去时,如果在第一I2C主机依次发送起始位、第二I2C主机的地址和写指令时,同时还有至少一个I2C主机发送起始位、I2C主机的地址和写指令时,则调度器可以按照预定规则(如I2C主机的地址大小)将存储器的使用权依次分配给各个I2C主机,例如I2C主机11和I2C主机12同时依次发送起始位、I2C主机的地址和写指令,I2C主机11的地址为1,I2C主机12的地址为2,则调度器将存储器的使用权先分配给I2C主机11,等I2C主机11使用完之后,再将存储器的使用权分配给I2C主机12。
步骤205:当第一I2C主机获得存储器的使用权时,释放第一I2C主机的SCL信号。
在本实施例中,释放第一I2C主机的SCL信号是指SCL线信号在保持为低电平之后恢复为高电平。如前所述,此时I2C主机不再处于等待状态,可以使SCL线信号再次按照固定的频率交替出现高电平和低电平,同时SDA线信号参照SCL线信号的变化情况进行数据的传输。
在具体实现时,当第一I2C主机没有得到存储器的使用权时,第一I2C主机的时钟线信号会一直为低电平,直到第一I2C主机获得存储器的使用权。
同样地,在第一I2C主机获得存储器的使用权的情况下,如果其它I2C主机也要将数据写入另一个I2C主机,则其SCL信号通常会一直为低电平,暂停发送数据,直到获得存储器的使用权。
具体地,该通信方法还可以包括:
第三I2C主机依次发送起始位、I2C主机的地址和写指令;
通信装置向第三I2C主机发送确认消息;
通信装置将第三I2C主机的SCL信号设置为低电平,以使第三I2C主机暂停发送数据。
在上述实现方式中,第三I2C主机为除第一I2C主机和第二I2C主机之外的I2C主机。
但是如果是第二I2C主机也要将数据写入另一个I2C主机,此时将第二I2C主机的SCL信号设置为低电平,会造成第二I2C主机无法读取第一I2C主机写入的数据,存储器的使用权一直分配在第一I2C主机上,无法分配给第二I2C主机;而第二I2C主机分配不到存储器的使用权,第二I2C主机的SCL信号会保持低电平不变,第二I2C主机一直也无法读取第一I2C主机写入的数据,系统陷入死循环。所以此时会尽快结束第二I2C主机将数据写入另一个I2C主机。
具体地,该通信方法还可以包括:
第二I2C主机依次发送起始位、I2C主机的地址和写指令;
通信装置向第二I2C主机发送确认消息;
将第二I2C主机的数据线信号在设定时长内设置为低电平,以使第二I2C主机放弃将数据写入I2C主机。
I2C总线协议规定有仲裁机制,如果至少两个I2C主机同时传输数据,当其它I2C主机发送低电平时,发送高电平的I2C主机将放弃发送数据。上述实现方式中,将第二I2C主机的数据线信号在设定时长内设置为低电平,第二I2C主机会以为有其它I2C主机也在发送数据,进而根据仲裁机制主动放弃将数据写入I2C主机,从而释放第二I2C主机的SCL线和SDA线,以将第一I2C主机的数据写入第二I2C主机,避免陷入死循环。
在具体实现时,通信装置中的从控制器在接收到对应的I2C主机依次发送的起始位、I2C主机的地址和写指令之后,先回复确认消息,确认消息发送之后,会立即将SCL信号设置为低电平,以免I2C主机在接收到确认消息之后继续发送数据。然后调度器再去判断I2C主机是否为被写入数据的I2C主机,具体可以将依次发送的起始位、I2C主机的地址和写指令的I2C主机的地址,与接收设备寄存器中存储的I2C主机的地址进行对比即可确定。当两个地址不同时,说明这个I2C主机不是被写入数据的I2C主机,此时将SCL信号继续保持为低电平即可;当两个地址相同时,说明这个I2C主机是被写入数据的I2C主机,此时再去利用仲裁机制使这个I2C主机放弃将数据写入另一个I2C主机。也就是说,在通信装置向第二I2C主机发送确认消息之后,该通信方法还包括:
将第二I2C主机的SCL线设置为低电平;
确定第二I2C主机的地址是否与接收设备寄存器中的地址相同;
当两个地址相同时,释放第二I2C主机的SCL线。
步骤206:第一I2C主机以字节为单位发送数据。
如步骤201所述,第一I2C主机按照I2C总线协议发送数据,以为数据写入第二I2C主机,而数据实际上是发送到通信装置。
步骤207:通信装置在每次接收到一个字节的数据之后,向第一I2C主机发送确认消息,并将数据保存在存储器内。
如步骤202所述,通信装置按照I2C总线协议在每次接收到一个字节的数据之后,向第一I2C主机发送确认消息,这样第一I2C主机在接收到确认消息只有,会认为数据已成功传输到第二I2C主机。
步骤208:第一I2C主机在完成数据发送之后发送结束位。
在本实施例中,结束位为在SCL线信号为高电平时,SDA线信号从低电平向高电平切换。
步骤209:通信装置向第二I2C主机发送中断信号。
在实际应用中,I2C主机为微处理器,微处理器上设有具有中断功能的IO接口。在本实施例中,通信装置分别与各个I2C主机具有中断功能的IO接口连接,通信装置在接收到第一I2C主机发送的结束位之后,会通过具有中断功能的IO接口向第二I2C主机发送中断信号。第二I2C主机在接收到中断信号之后,会根据中断信号以设定地址读取数据(详见下文)。
步骤210:第二I2C主机根据中断信号依次发送的起始位、设定地址和读指令。
在本实施例中,设定地址为预先存储在I2C主机中的固定地址,如7’b1111111,用于在接收到中断信号时以这个地址读取数据。
I2C总线协议规定,I2C主机在起始位之后发送的地址位用于表示I2C主机访问设备的地址,由于当一个I2C主机将数据写入另一个I2C主机时,被写入数据的I2C主机并不知道去读取哪个I2C主机的数据,因此本实施例通过中断信号告知被写入数据的I2C主机去读取通信装置的存储器中的数据,同时利用设定地址使被写入数据的I2C主机可以按照I2C总线协议去读取数据,解决了上述问题。
步骤211:通信装置向第二I2C主机发送确认消息,并以字节为单位向第二I2C主机发送数据。
步骤212:第二I2C主机在每次接收到一个字节的数据之后,发送确认消息,并在数据接收完成之后,发送结束位。
在具体实现时,I2C主机在读取数据时,为了在数据读取完成之后告知发送数据的设备停止发送数据,会在接收到最后一个字节的数据之后发送一个不同的确认消息(一般为高电平)。而除最后一个字节的数据之后发送的确认消息之外,其它的确认消息一般都为低电平。
通信装置在接收到结束位之后,会收回存储器的使用权,即第一I2C主机失去存储器的使用权。具体地,调度器状态寄存器、发送设备寄存器和发送设备寄存器会一起清空。此时如果有SCL信号设置为低电平的I2C主机,则可以将存储器的使用权分配给其中一个I2C主机,分配到存储器的使用权的I2C主机可以按照上述第一I2C主机的实现方式将数据写入另一个I2C主机。
在具体实现时,除了第二I2C主机之外,可能还有其它I2C主机依次发送起始位、设定地址和读指令,但是第一I2C主机并没有要将数据写入其它I2C主机,因此通信装置在接收到I2C主机依次发送的起始位、设定地址和读指令,还需要判断依次发送的起始位、设定地址和读指令的I2C主机是否为被写入数据的I2C主机。具体地,可以将依次发送的起始位、设定地址和读指令的I2C主机的地址,与接收设备寄存器中存储的I2C主机的地址进行对比。当两个地址相同时,说明这个I2C主机是被写入数据的I2C主机,可以将存储器中的数据发送给I2C主机;当两个地址不同时,说明这个I2C主机不是被写入数据的I2C主机,不能将存储器中的数据发送给I2C主机,此时应该尽快结束这个I2C主机的数据读取。
可选地,该通信方法还可以包括:
第四I2C主机依次发送起始位、设定地址和读指令;
通信装置向第四I2C主机发送确认消息;
通信装置以字节为单位向第四I2C主机发送无效数据;
第四I2C主机在每次接收到一个字节的无效数据之后发送确认消息,并在数据接收完成之后,发送结束位;
通信装置根据结束位停止发送无效数据。
在上述实现方式中,第四I2C主机为除第二I2C主机之外的I2C主机。
在本实施例中,无效数据可以为在设定位置的固定数据,即在数据中设置无效标志位。
图4为传输数据格式的示意图,参见图4,在具体实现时,可以将传输的第1位~第7位数据规定为设备的地址,传输的第8位数据规定为数据读写的方向,传输的第9位~第24位数据规定为预留位,传输的第25位~第32位数据规定为帧的有效标志位,传输的第33位数据到之后传输的所有数据均为具体的数据。如果将传输的第25位~第32位数据写成设定数据,则可以实现无效数据的发送。
本发明实施例通过在各个I2C主机和I2C总线之间增设通信装置,通信装置先与一个I2C主机按照I2C协议进行交互,将这个I2C主机写入另一个I2C主机的数据先存储在通信装置中,再向被写入数据的I2C主机发送中断信号,使被写入数据的I2C主机按照I2C协议从通信装置中读取出数据,在遵循现有I2C协议的基础上实现了一个I2C主机将数据写入另一个I2C主机。
本发明实施例提供的I2C主机的通信方法,除了适用于利用在图1所示的应用场景中利用通信装置完成两个I2C主机之间写数据的过程之外,还可以适用于在图1所示的应用场景中利用通信装置完成两个I2C主机之间读数据的过程。图5为本实施例提供的I2C主机的通信方法的信息交互图,参见图5,除了图2所示的步骤之外,该通信方法还可以包括:
步骤301:第五I2C主机依次发送起始位、I2C主机的地址和读指令。
在本实施例中,第五I2C主机可以为图1所示的应用场景中的任意一个I2C主机,因此第五I2C主机也可以为第一I2C主机、第二I2C主机、第三I2C主机、第四I2C主机中的任意一个。
由于实际应用中不存在一个I2C主机从另一个I2C主机读取数据的情况,因此此时应该属于I2C主机的误操作,但是如果不处理又会造成I2C主机的SCL线和SDA线被占用,本实施例按照I2C协议传输无效数据,可以尽快结束这个误操作,释放I2C总线资源(详见下文)。
步骤302:通信装置发送确认消息,并以字节为单位向第五I2C主机发送无效数据。
步骤303:第五I2C主机在每次接收到一个字节的数据之后,发送确认消息,并在数据接收完成之后,发送结束位。
步骤304:通信装置根据结束位,停止发送无效数据。
步骤305:第五I2C主机确定接收到的数据是否为无效数据。
具体地,该步骤305可以包括:
将接收到的数据中设定位置的数据与预设的数据进行对比;
当接收到的数据中设定位置的数据与预设的数据相同时,确定接收到的数据为无效数据;
当接收到的数据中设定位置的数据与预设的数据不同时,确定接收到的数据不是无效数据。
以图4所示的数据格式为例,如果传输的第25位~第32位数据与设定的无效数据相同,则确定接收到的数据为无效数据;反之,确定接收到的数据不是无效数据。
步骤306:第五I2C主机在确定接收到的数据为无效数据之后,删除接收到的数据。
本发明实施例通过在接收到I2C主机发送的I2C主机的地址和读指令之后,按照I2C协议以字节为单位向I2C主机发送无效数据,使得I2C主机的数据读取尽快完成,从而避免由于I2C主机误读取另一个I2C主机的数据而长时间占用I2C总线资源,保障设备的正常运行。
本发明实施例提供的I2C主机的通信方法,除了适用于利用在图1所示的应用场景中利用通信装置完成两个I2C主机之间写数据的过程之外,还可以适用于在图1所示的应用场景中利用通信装置完成一个I2C主机将数据写入一个I2C从机的过程。图6为本实施例提供的I2C主机的通信方法的信息交互图,参加图6,除了图2所示的步骤之外,该通信方法还可以包括:
步骤401:第六I2C主机依次发送起始位、第一I2C从机的地址和写指令。
在本实施例中,第六I2C主机可以为图1所示的应用场景中的任意一个I2C主机,因此第六I2C主机也可以为第一I2C主机、第二I2C主机、第三I2C主机、第四I2C主机中的任意一个。第一I2C从机可以为图1所示的应用场景中的任意一个I2C从机。
步骤402:通信装置将第六I2C主机依次发送的起始位、第一I2C从机的地址和写指令转发给第一I2C从机。
在具体实现时,通信装置中与第六I2C主机对应的从控制器在接收到第六I2C主机依次发送的起始位、第一I2C从机的地址和写指令之后,将第六I2C主机依次发送的起始位、第一I2C从机的地址和写指令转发给调度器,调度器又将第六I2C主机依次发送的起始位、第一I2C从机的地址和写指令转发给主控制器,主控制器将第六I2C主机依次发送的起始位、第一I2C从机的地址和写指令转发到在所有I2C从机接入的I2C总线上。
步骤403:第一I2C从机发送确认消息。
步骤404:通信装置将第一I2C从机发送的确认消息转发给第六I2C主机。
在具体实现时,通信装置按照与步骤402相反的流程进行转发即可。具体地,通信装置中的从控制器在接收到第一I2C从机发送的确认消息之后,将第一I2C从机发送的确认消息转发给调度器,调度器将第一I2C从机发送的确认消息转发给与第六I2C主机对应的从控制器,从控制器将第一I2C从机发送的确认消息转发给第六I2C主机。
步骤405:第六I2C主机以字节为单位发送数据。
步骤406:通信装置将第六I2C主机发送的数据以字节为单位转发给第一I2C从机。
步骤407:第一I2C从机在每次接收到一个字节的数据之后,发送确认消息。
步骤408:通信装置在每次接收到第一I2C从机发送的确认消息之后,将确认消息转发给第六I2C主机。
步骤409:第六I2C主机在完成数据发送之后,发送结束位。
步骤410:通信装置将第六I2C主机发送的结束位转发给第一I2C从机。
本发明实施例通过通信装置的转发,利用现有I2C协议实现I2C主机和I2C从机之间的数据读写,不会由于实现两个I2C主机之间的通信而破坏I2C主机和I2C从机之间的通信。
本发明实施例提供的I2C主机的通信方法,除了适用于利用在图1所示的应用场景中利用通信装置完成两个I2C主机之间写数据的过程之外,还可以适用于在图1所示的应用场景中利用通信装置完成一个I2C主机从一个I2C从机读取数据的过程。图7为本实施例提供的I2C主机的通信方法的信息交互图,参见图7,除了图2所示的步骤之外,该通信方法还可以包括:
步骤501:第七I2C主机依次发送起始位、第二I2C从机的地址和读指令。
在本实施例中,第七I2C主机可以为图1所示的应用场景中的任意一个I2C主机,因此第七I2C主机也可以为第一I2C主机、第二I2C主机、第三I2C主机、第四I2C主机中的任意一个。第二I2C从机可以为图1所示的应用场景中的任意一个I2C从机。
步骤502:通信装置将第七I2C主机依次发送的起始位、第二I2C从机的地址和读指令转发给第二I2C从机。
步骤503:第二I2C从机发送确认消息,并以字节为单位发送数据。
步骤504:通信装置将第二I2C从机发送的确认消息转发给第七I2C从机,并将第二I2C从机发送的数据以字节为单位转发给第七I2C主机。
步骤505:第七I2C主机在每次接收到一个字节的数据之后,发送确认消息,并在数据接收完成之后,发送结束位。
步骤506:通信装置在每次接收到第七I2C主机发送的确认消息之后,将确认消息转发给第二I2C从机,并在接收到第七I2C主机发送的结束位之后,将结束位转发给第二I2C从机。
步骤507:第二I2C从机根据第七I2C主机发送的结束位,停止发送数据。
本发明实施例通过通信装置的转发,利用现有I2C协议实现I2C主机和I2C从机之间的数据读写,不会由于实现两个I2C主机之间的通信而破坏I2C主机和I2C从机之间的通信。
本发明实施例提供了一种I2C主机的通信装置,适用于上述实施例提供的通信方法。图8为本实施例提供的I2C主机的通信装置的结构示意图,参见图8,该通信装置包括:
第一通信单元601,用于接收第一I2C主机依次发送的起始位、第二I2C主机的地址和写指令,并向第一I2C主机发送确认消息;当第一I2C主机获得存储器的使用权时,接收第一I2C主机以字节为单位发送的数据,并在每次接收到一个字节的数据之后,向第一I2C主机发送确认消息;接收第一I2C主机发送的结束位;
处理单元602,用于在接收到第一I2C主机发送的数据之后,将数据保存在存储器内;在接收到第一I2C主机发送的结束位之后,向第二I2C主机发送中断信号;
第二通信单元603,用于接收第二I2C主机根据中断信号依次发送的起始位、设定地址和读指令,并向第二I2C主机发送确认消息;以字节为单位向第二I2C主机发送数据,并接收第二I2C主机在每次接收到一个字节的数据之后发送的确认消息;接收第二I2C主机发送的结束位,第一I2C主机失去存储器的使用权。
可选地,第一通信单元601还可以用于,
在接收到第一I2C主机发送的第二I2C主机的地址和写指令之后,将第一I2C主机的时钟线信号设置为低电平,以使第一I2C主机暂停发送数据;
确定存储器的使用权;
当第一I2C主机获得存储器的使用权时,释放第一I2C主机的时钟线信号,以接收第一I2C主机发送的数据。
可选地,第二通信单元603还可以用于,
在第一I2C主机获得存储器的使用权的情况下,接收第二I2C主机依次发送的起始位、I2C主机的地址和写指令,并向第二I2C主机发送确认消息;
将第二I2C主机的数据线信号在设定时长内设置为低电平,以使第二I2C主机放弃将数据写入I2C主机。
可选地,该通信装置还可以包括:
第三通信单元,用于在第一I2C主机获得存储器的使用权的情况下,接收第三I2C主机依次发送的起始位、I2C主机的地址和写指令,并向第三I2C主机发送确认消息,第三I2C主机为除第一I2C主机和第二I2C主机之外的I2C主机;将第三I2C主机的时钟线信号设置为低电平,以使第三I2C主机暂停发送数据。
具体地,第三通信单元与第一通信单元、第二通信单元不能为同一个通信单元。
可选地,该通信装置还可以包括:
第四通信单元,用于接收第四I2C主机依次发送的起始位、设定地址和读指令,并向第四I2C主机发送确认消息,第四I2C主机为除第二I2C主机之外的I2C主机;以字节为单位向第四I2C主机发送无效数据,并接收第四I2C主机在每次接收到一个字节的无效数据之后发送的确认消息;接收第四I2C主机发送的结束位,停止发送无效数据。
具体地,第四通信单元与第二通信单元不能为同一个通信单元。
可选地,该通信装置还可以包括:
第五通信单元,用于接收第五I2C主机依次发送的起始位、I2C主机的地址和读指令,并向第五I2C主机发送确认消息;以字节为单位向第五I2C主机发送无效数据,并接收第五I2C主机在每次接收到一个字节的无效数据之后发送的确认消息;接收第五I2C主机发送的结束位,停止发送无效数据。
具体地,第五通信单元与第一通信单元、第二通信单元、第三通信单元和第四通信单元中的任意一个可以为同一个通信单元。
可选地,该通信装置还可以包括:
第六通信单元,用于接收第六I2C主机依次发送的起始位、第一I2C从机的地址和写指令;
从机通信单元,用于将第六I2C主机依次发送的起始位、第一I2C从机的地址和写指令转发给第一I2C从机,并接收第一I2C从机发送的确认消息;
第六通信单元还用于,将第一I2C从机发送的确认消息转发给第六I2C主机,并接收第六I2C主机以字节为单位发送的数据;
从机通信单元还用于,将第六I2C主机发送的数据以字节为单位转发给第一I2C从机,并接收第一I2C从机在每次接收到一个字节的数据之后发送的确认消息;
第六通信单元还用于,在每次接收到第一I2C从机发送的确认消息之后,将确认消息转发给第六I2C主机,并接收第六I2C主机在完成数据发送之后发送的结束位;
从机通信单元还用于,将第六I2C主机发送的结束位转发给第一I2C从机。
具体地,第六通信单元与第一通信单元、第二通信单元、第三通信单元和第四通信单元中的任意一个可以为同一个通信单元。
可选地,该通信装置还可以包括:
第七通信单元,用于接收第七I2C主机依次发送的起始位、第二I2C从机的地址和读指令;
从机通信单元,用于将第七I2C主机依次发送的起始位、第二I2C从机的地址和读指令转发给第二I2C从机,并接收第二I2C从机发送的确认消息和以字节为单位发送的数据;
第七通信单元还用于,将第二I2C从机发送的确认消息转发给第二I2C从机,并将第二I2C从机发送的数据以字节为单位转发给第七I2C主机,并接收在每次接收到一个字节的数据之后发送的确认消息,在数据接收完成之后发送的结束位;
从机通信单元还用于,在每次接收到第七I2C主机发送的确认消息之后,将确认消息转发给第二I2C从机,并在接收到第七I2C主机发送的结束位之后,将结束位转发给第二I2C从机。
具体地,第七通信单元与第一通信单元、第二通信单元、第三通信单元和第四通信单元中的任意一个可以为同一个通信单元。
在具体实现时,第一通信单元可以采用与第一I2C主机对应的从控制器实现,第二通信单元可以采用与第二I2C主机对应的从控制器实现,……,第七通信单元可以采用与第七I2C主机对应的从控制器实现,从机通信模块可以采用主控制器实现,处理单元可以采用调度器实现。
需要说明的是:上述实施例提供的I2C主机的通信装置在实现I2C主机通信时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的I2C主机的通信装置与I2C主机的通信方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种内部集成电路I2C主机的通信方法,其特征在于,所述通信方法包括:
接收第一I2C主机依次发送的起始位、第二I2C主机的地址和写指令,并向所述第一I2C主机发送确认消息;
当所述第一I2C主机获得存储器的使用权时,接收所述第一I2C主机以字节为单位发送的数据,将所述数据保存在所述存储器内,并在每次接收到一个字节的所述数据之后,向所述第一I2C主机发送确认消息;
接收所述第一I2C主机发送的结束位,向所述第二I2C主机发送中断信号;
接收所述第二I2C主机根据所述中断信号依次发送的起始位、设定地址和读指令,并向所述第二I2C主机发送确认消息;
以字节为单位向所述第二I2C主机发送所述数据,并接收所述第二I2C主机在每次接收到一个字节的所述数据之后发送的确认消息;
接收所述第二I2C主机发送的结束位,所述第一I2C主机失去所述存储器的使用权。
2.根据权利要求1所述的通信方法,其特征在于,所述通信方法还包括:
在接收到所述第一I2C主机发送的第二I2C主机的地址和写指令之后,将所述第一I2C主机的时钟线信号设置为低电平,以使所述第一I2C主机暂停发送所述数据;
确定所述存储器的使用权;
当所述第一I2C主机获得所述存储器的使用权时,释放所述第一I2C主机的时钟线信号,以接收所述第一I2C主机发送的数据。
3.根据权利要求1或2所述的通信方法,其特征在于,所述通信方法还包括:
在所述第一I2C主机获得所述存储器的使用权的情况下,接收所述第二I2C主机依次发送的起始位、I2C主机的地址和写指令,并向所述第二I2C主机发送确认消息;
将所述第二I2C主机的数据线信号在设定时长内设置为低电平,以使所述第二I2C主机放弃将数据写入所述I2C主机。
4.根据权利要求1或2所述的通信方法,其特征在于,所述通信方法还包括:
在所述第一I2C主机获得所述存储器的使用权的情况下,接收第三I2C主机依次发送的起始位、I2C主机的地址和写指令,并向所述第三I2C主机发送确认消息,所述第三I2C主机为除所述第一I2C主机和所述第二I2C主机之外的I2C主机;
将所述第三I2C主机的时钟线信号设置为低电平,以使所述第三I2C主机暂停发送数据。
5.根据权利要求1或2所述的通信方法,其特征在于,所述通信方法还包括:
接收第四I2C主机依次发送的起始位、地址位和读指令,并向所述第四I2C主机发送确认消息;
当所述地址位为所述设定地址且所述第四I2C主机为除所述第二I2C主机之外的I2C主机时,以字节为单位向所述第四I2C主机发送无效数据,并接收所述第四I2C主机在每次接收到一个字节的所述无效数据之后发送的确认消息;
接收所述第四I2C主机发送的结束位,停止发送所述无效数据。
6.一种内部集成电路主机I2C主机的通信装置,其特征在于,所述通信装置包括:
第一通信单元,用于接收第一I2C主机依次发送的起始位、第二I2C主机的地址和写指令,并向所述第一I2C主机发送确认消息;当所述第一I2C主机获得存储器的使用权时,接收所述第一I2C主机以字节为单位发送的数据,并在每次接收到一个字节的所述数据之后,向所述第一I2C主机发送确认消息;接收所述第一I2C主机发送的结束位;
处理单元,用于在接收到所述第一I2C主机发送的数据之后,将所述数据保存在所述存储器内;在接收到所述第一I2C主机发送的结束位之后,向所述第二I2C主机发送中断信号;
第二通信单元,用于接收所述第二I2C主机根据所述中断信号依次发送的起始位、设定地址和读指令,并向所述第二I2C主机发送确认消息;以字节为单位向所述第二I2C主机发送所述数据,并接收所述第二I2C主机在每次接收到一个字节的所述数据之后发送的确认消息;接收所述第二I2C主机发送的结束位,所述第一I2C主机失去所述存储器的使用权。
7.根据权利要求6所述的通信装置,其特征在于,所述第一通信单元还用于,
在接收到所述第一I2C主机发送的第二I2C主机的地址和写指令之后,将所述第一I2C主机的时钟线信号设置为低电平,以使所述第一I2C主机暂停发送所述数据;
确定所述存储器的使用权;
当所述第一I2C主机获得所述存储器的使用权时,释放所述第一I2C主机的时钟线信号,以接收所述第一I2C主机发送的数据。
8.根据权利要求6或7所述的通信装置,其特征在于,所述第二通信单元还用于,
在所述第一I2C主机获得所述存储器的使用权的情况下,接收所述第二I2C主机依次发送的起始位、I2C主机的地址和写指令,并向所述第二I2C主机发送确认消息;
将所述第二I2C主机的数据线信号在设定时长内设置为低电平,以使所述第二I2C主机放弃将数据写入所述I2C主机。
9.根据权利要求6或7所述的通信装置,其特征在于,所述通信装置还包括:
第三通信单元,用于在所述第一I2C主机获得所述存储器的使用权的情况下,接收第三I2C主机依次发送的起始位、I2C主机的地址和写指令,并向所述第三I2C主机发送确认消息,所述第三I2C主机为除所述第一I2C主机和所述第二I2C主机之外的I2C主机;将所述第三I2C主机的时钟线信号设置为低电平,以使所述第三I2C主机暂停发送数据。
10.根据权利要求6或7所述的通信装置,其特征在于,所述通信方法还包括:
第四通信单元,用于接收第四I2C主机依次发送的起始位、地址位和读指令,并向所述第四I2C主机发送确认消息;当所述地址位为所述设定地址且所述第四I2C主机为除所述第二I2C主机之外的I2C主机时,以字节为单位向所述第四I2C主机发送无效数据,并接收所述第四I2C主机在每次接收到一个字节的所述无效数据之后发送的确认消息;接收所述第四I2C主机发送的结束位,停止发送所述无效数据。
CN201711485809.8A 2017-12-29 2017-12-29 一种内部集成电路主机的通信方法和装置 Active CN108280041B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201711485809.8A CN108280041B (zh) 2017-12-29 2017-12-29 一种内部集成电路主机的通信方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201711485809.8A CN108280041B (zh) 2017-12-29 2017-12-29 一种内部集成电路主机的通信方法和装置

Publications (2)

Publication Number Publication Date
CN108280041A CN108280041A (zh) 2018-07-13
CN108280041B true CN108280041B (zh) 2020-03-10

Family

ID=62802771

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201711485809.8A Active CN108280041B (zh) 2017-12-29 2017-12-29 一种内部集成电路主机的通信方法和装置

Country Status (1)

Country Link
CN (1) CN108280041B (zh)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN110704357B (zh) * 2019-09-29 2021-05-18 歌尔股份有限公司 一种主站与多个从站串行通信的方法及装置
CN111124979B (zh) * 2019-10-31 2021-07-06 苏州浪潮智能科技有限公司 一种基于堆栈结构的i2c多主访问方法和系统
CN112187474B (zh) * 2020-09-27 2024-04-09 三未信安科技股份有限公司 基于iic多主一从通信的密码认证自协商切换系统及方法
FR3120267B1 (fr) * 2021-02-26 2024-03-15 St Microelectronics Rousset Communication sur bus I2C
CN114756500A (zh) * 2021-07-28 2022-07-15 义明科技股份有限公司 主从式系统及其副集成电路
CN113961496A (zh) * 2021-10-22 2022-01-21 上海商汤阡誓科技有限公司 通信电路系统、方法、芯片以及存储介质

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1553346A (zh) * 2003-07-02 2004-12-08 普安科技股份有限公司 冗余外部储存虚拟化计算机系统
CN101937413A (zh) * 2010-10-21 2011-01-05 成都优博创技术有限公司 一种i2c总线的通信方法
CN103617138A (zh) * 2013-12-16 2014-03-05 深圳市兴威帆电子技术有限公司 多主机仲裁方法及多主机通信系统
CN104484302A (zh) * 2014-12-25 2015-04-01 中国电子科技集团公司第四十一研究所 基于usb接口的实现两台主机之间双向通信与控制的系统
CN104834619A (zh) * 2015-04-29 2015-08-12 小鸟科技有限公司 一种i2c总线电路、实现方法以及电子设备
WO2015155242A1 (en) * 2014-04-09 2015-10-15 Nxp B.V. 2-wire differential-end bus transceiver system based on 12c-bus, and associated method for communication of 2-wire differential-end bus
CN105068967A (zh) * 2015-09-14 2015-11-18 上海斐讯数据通信技术有限公司 I2c设备的控制方法、装置及终端
CN105518637A (zh) * 2013-09-09 2016-04-20 高通股份有限公司 用于使多个主控能在单主控总线架构中操作的方法和装置
CN106462526A (zh) * 2014-02-07 2017-02-22 安晟信医疗科技控股公司 用于多主总线协议的方法及装置
CN106681953A (zh) * 2016-12-09 2017-05-17 杰发科技(合肥)有限公司 使用i2c总线与主机连接的从机及其通信方法

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1553346A (zh) * 2003-07-02 2004-12-08 普安科技股份有限公司 冗余外部储存虚拟化计算机系统
CN101937413A (zh) * 2010-10-21 2011-01-05 成都优博创技术有限公司 一种i2c总线的通信方法
CN105518637A (zh) * 2013-09-09 2016-04-20 高通股份有限公司 用于使多个主控能在单主控总线架构中操作的方法和装置
CN103617138A (zh) * 2013-12-16 2014-03-05 深圳市兴威帆电子技术有限公司 多主机仲裁方法及多主机通信系统
CN106462526A (zh) * 2014-02-07 2017-02-22 安晟信医疗科技控股公司 用于多主总线协议的方法及装置
WO2015155242A1 (en) * 2014-04-09 2015-10-15 Nxp B.V. 2-wire differential-end bus transceiver system based on 12c-bus, and associated method for communication of 2-wire differential-end bus
CN104484302A (zh) * 2014-12-25 2015-04-01 中国电子科技集团公司第四十一研究所 基于usb接口的实现两台主机之间双向通信与控制的系统
CN104834619A (zh) * 2015-04-29 2015-08-12 小鸟科技有限公司 一种i2c总线电路、实现方法以及电子设备
CN105068967A (zh) * 2015-09-14 2015-11-18 上海斐讯数据通信技术有限公司 I2c设备的控制方法、装置及终端
CN106681953A (zh) * 2016-12-09 2017-05-17 杰发科技(合肥)有限公司 使用i2c总线与主机连接的从机及其通信方法

Also Published As

Publication number Publication date
CN108280041A (zh) 2018-07-13

Similar Documents

Publication Publication Date Title
CN108280041B (zh) 一种内部集成电路主机的通信方法和装置
JP6629215B2 (ja) マルチマスターバスプロトコルのための方法および装置
EP2397949B1 (en) Flow control for universal serial bus (USB)
CN102023954B (zh) 具有多路i2c总线的装置、处理器、系统主板及工控计算机
CN106959935B (zh) 一种兼容i2c通信与ipmb通信的方法
JP4966695B2 (ja) マルチマスタのチェーン接続された二線シリアルバス装置及びディジタル状態機械
CN107908589B (zh) I3c验证从设备、主从设备的通信验证系统及方法
JP2017500631A (ja) 複数のスレーブデバイス識別子を有するカメラ制御スレーブデバイス
KR101247247B1 (ko) 클락 신호의 출력을 제어할 수 있는 컨트롤러 및 상기 컨트롤러를 구비하는 시스템
CN111552658B (zh) 一种通信方法、通信控制装置及i2c总线系统
KR20160056382A (ko) 세마포어 기능을 갖는 시스템 온 칩 및 그것의 세마포어 구현 방법
CN114253898B (zh) 总线装置及数据读写电路
CN113961496A (zh) 通信电路系统、方法、芯片以及存储介质
KR102554978B1 (ko) 통신 장치, 통신 방법, 프로그램, 및, 통신 시스템
JP5209535B2 (ja) Usbホストコントローラ及びusbホストコントローラの制御方法
US20140229688A1 (en) Storage control device, storage system, and storage control method
CN114185830A (zh) 基于mailbox的多处理器通信方法、设备、系统和存储介质
CN108228520B (zh) 一种面向bmc的i2c控制器的快速传输方法
JP2011090485A (ja) パイプ調停回路、パイプ調停方法
CN113268358B (zh) 数据通信方法、装置和系统及多设备级联系统
CN114641764A (zh) 总线系统及操作总线系统的方法
CN114880270B (zh) Spi设备及其数据传输方法
CN117880364B (zh) 一种数据传输方法、系统以及相关装置
CN101833523B (zh) 数据存取方法
CN110399322B (zh) 一种数据传输方法及乒乓dma架构

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant