CN117220835A - 一种基于内部集成电路的通信方法及装置 - Google Patents

一种基于内部集成电路的通信方法及装置 Download PDF

Info

Publication number
CN117220835A
CN117220835A CN202311181349.5A CN202311181349A CN117220835A CN 117220835 A CN117220835 A CN 117220835A CN 202311181349 A CN202311181349 A CN 202311181349A CN 117220835 A CN117220835 A CN 117220835A
Authority
CN
China
Prior art keywords
data
field
state
indicating
data transmission
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.)
Pending
Application number
CN202311181349.5A
Other languages
English (en)
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.)
Huawei Technologies Co Ltd
Original Assignee
Huawei Technologies Co Ltd
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 Huawei Technologies Co Ltd filed Critical Huawei Technologies Co Ltd
Priority to CN202311181349.5A priority Critical patent/CN117220835A/zh
Publication of CN117220835A publication Critical patent/CN117220835A/zh
Pending legal-status Critical Current

Links

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
    • 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/40Bus structure
    • G06F13/4004Coupling between buses
    • G06F13/4027Coupling between buses using bus bridges
    • G06F13/4045Coupling between buses using bus bridges where the bus bridge performs an extender function
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/12Arrangements for detecting or preventing errors in the information received by using return channel
    • H04L1/16Arrangements for detecting or preventing errors in the information received by using return channel in which the return channel carries supervisory signals, e.g. repetition request signals
    • H04L1/1607Details of the supervisory signal
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L45/00Routing or path finding of packets in data switching networks
    • H04L45/74Address processing for routing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/22Parsing or analysis of headers
    • 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)
  • General Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Security & Cryptography (AREA)
  • Computer Hardware Design (AREA)
  • Communication Control (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

本申请公开了一种基于内部集成电路的通信方法及装置。在将I2C信号封装进数据包进行透传时,将I2C状态通过数据包的包头中的第一字段来指示,数据包可以没有负载部分,或者数据包有负载部分但负载部分则用于承载Slave地址、读/写标志或I2C数据。由于I2C状态在数据包的包头中指示,因而可以与Slave地址、读/写标志或I2C数据等封装在一个数据包中,换而言之,I2C状态可以不用单独占用一个数据包。本申请可以实现减少传输所需带宽,提高传输效率的技术效果。

Description

一种基于内部集成电路的通信方法及装置
本申请是分案申请,原申请的申请号是202080104981.8,原申请日是2020年9月17日,原申请的全部内容通过引用结合在本申请中。
技术领域
本申请涉及通信技术领域,尤其涉及一种基于内部集成电路(Inter IntegratedCircuit,I2C)的通信方法及装置。
背景技术
内部集成电路(Inter Integrated Circuit,I2C)总线是一种在印制电路板(Printed Circuit Board,PCB)上走线的近距离传输的低速串行总线,用于连接微控制器及其外围设备,传输I2C信号。
I2C总线可以应用到多种可能的场景中,比如可以应用于车内网传输场景。但一些车内网场景中,外围设备与微控制器之间的传输距离比较远,例如摄像头(即外围设备)安装在挡风玻璃上、后保险杠上或门柱上,而微控制器安装在车内,因此需要把I2C信号封装在支持远距离传输的数据包里透传。如何减少I2C信号在透传时所需的带宽,提高传输效率,是本申请所要解决的问题。
发明内容
本申请提供一种基于I2C的通信方法及装置,可以减少I2C信号传输所需的带宽,提高传输效率。
第一方面,提供一种基于I2C的通信方法,该方法可以应用于支持I2C通信的设备,以该方法应用于第一设备为例,方法包括:第一设备生成数据包;其中,数据包中包括包头部分和负载部分,包头部分包括第一字段,第一字段用于指示I2C状态,该I2C状态包括数据传输开始、数据传输延续、数据传输结束、ACK或者NACK中的任一种;负载的长度大于或等于0比特,负载长度为0时,表示数据包没有负载;第一设备向第二设备发送数据包。
本申请实施例中,由于I2C状态通过数据包的包头中的第一字段来指示,所以不必占用负载部分来承载I2C状态,进而使得数据传输开始、数据传输延续、ACK或者NACK等状态可以不用单独封装据包,而是与Slave地址、读/写标志或I2C数据等封装在一个数据包中,所以可以节省传输带宽,提高传输效率。
在一种可能的实施方式中,第一字段的取值包括以下几种取值中的一种或多种:第一值,用于指示I2C状态为数据传输开始;第二值,用于指示I2C状态为数据传输延续;第三值,用于指示I2C状态为数据传输结束;第四值,用于指示I2C状态为ACK;第五值,用于指示I2C状态为NACK。
当然,以上仅为举例而非限定,在具体实施时,第一字段的取值可以更多或者更少。
在一种可能的实施方式中,在第一字段指示I2C状态为数据传输开始的情况下,负载部分中承载有Slave地址、读/写标志。
也即,数据传输开始的指示与Slave地址、读/写标志封装在一个数据包中,可以节省传输带宽,提高传输效率。
在一种可能的实施方式中,在第一字段指示I2C状态为数据传输延续的情况下,负载部分中承载有I2C数据。
这样,第二设备可以根据第一字段确定I2C状态为数据传输延续,进而从数据包的负载中解析出I2C数据,可以提高方案的可靠性。
在一种可能的实施方式中,数据包的包头部分还可以进一步包括第二字段,第二字段用于指示数据包所属流的流ID,流ID与至少一个I2C接口对应。
其中,流ID与I2C接口的对应关系可以是一对一、一对多、多对一或多对多的关系,本申请不做限制。
这样,数据包在传输时,(第一设备或第二设备中的)串行器或解串器可以通过识别流ID来区分I2C接口,将数据包分配至与数据包的流ID相对应的I2C接口上传输,进而可以实现第一设备和第二设备之间支持多个I2C接口的信号同时传输,可以进一步提高传输效率。
在一种可能的实施方式中,数据包的包头部分还可以进一步包括第三字段,第三字段用于指示数据包为基于I2C的数据包。
其中,第三字段可以具体可以通过一个字段实现,也可以通过多个字段实现,这里不做限制。
这样,第二设备可以根据第三字段确定数据包为基于I2C的数据包,进而基于I2C协议接收和处理数据包中的数据,可以进一步提高方案的可靠性。
第二方面,提供一种基于I2C的通信方法,该方法可以应用于支持I2C通信的设备,以该方法应用于第二设备为例,方法包括:第二设备接收来自第一设备的数据包,其中,数据包中包括包头部分和负载部分,包头部分包括第一字段,第一字段用于指示I2C状态,I2C状态包括数据传输开始、数据传输延续、数据传输结束、确认ACK或者未确认NACK中的任一种;负载的长度大于或等于0比特;第二设备根据第一字段确定I2C状态。
在一种可能的实施方式中,第一字段的取值包括以下几种取值中的一种或多种:第一值,用于指示I2C状态为数据传输开始;第二值,用于指示I2C状态为数据传输延续;第三值,用于指示I2C状态为数据传输结束;第四值,用于指示I2C状态为ACK;第五值,用于指示I2C状态为NACK。
当然,以上仅为举例而非限定,在具体实施时,第一字段的取值可以更多或者更少。
在一种可能的实施方式中,第一字段指示I2C状态为数据传输开始,负载部分中承载有从设备Slave地址和读/写标志。相应的,第二设备在确定I2C状态为数据传输开始之后,还可以在至少一个I2C接口上产生一个开始状态,以及将Slave地址、读/写标志通过至少一个I2C接口发送至Slave地址所指向的从设备。
在一种可能的实施方式中,第一字段指示I2C状态为数据传输延续,负载部分中承载有I2C数据。相应的,第二设备在确定I2C状态为数据传输延续之后,还可以将I2C数据通过至少一个I2C接口发送至Slave地址所指向的从设备。
在一种可能的实施方式中,包头部分还包括第二字段,第二字段用于指示数据包所属流的流标识ID,流ID与至少一个I2C接口对应。
其中,流ID与I2C接口的对应关系可以是一对一、一对多、多对一或多对多的关系,本申请不做限制。
在一种可能的实施方式中,包头部分还包括第三字段,第三字段用于指示数据包为基于I2C的数据包。
其中,第三字段可以具体可以通过一个字段实现,也可以通过多个字段实现,这里不做限制。
第三方面,提供一种基于I2C的通信装置,该装置包括用于执行上述第一方面或第一方面任一种可能的实现方式所提供的方法的模块。
示例性的,该装置可以包括:
处理模块,用于生成数据包;其中,数据包中包括包头部分和负载部分,包头部分包括第一字段,第一字段用于指示I2C状态,I2C状态包括数据传输开始、数据传输延续、数据传输结束、确认ACK或者未确认NACK中的任一种;负载的长度大于或等于0比特;
发送模块,用于向第二设备发送数据包。
在一种可能的实施方式中,第一字段的取值包括以下几种取值中的一种或多种:第一值,用于指示I2C状态为数据传输开始;第二值,用于指示I2C状态为数据传输延续;第三值,用于指示I2C状态为数据传输结束;第四值,用于指示I2C状态为ACK;第五值,用于指示I2C状态为NACK。
在一种可能的实施方式中,第一字段指示I2C状态为数据传输开始,负载部分中承载有从设备Slave地址和读/写标志。
在一种可能的实施方式中,第一字段指示I2C状态为数据传输延续,负载部分中承载有I2C数据。
在一种可能的实施方式中,包头部分还包括第二字段,第二字段用于指示数据包所属流的流标识ID,流ID与至少一个I2C接口对应。
在一种可能的实施方式中,包头部分还包括第三字段,第三字段用于指示数据包为基于I2C的数据包。
第四方面,提供一种基于I2C的通信装置,该装置包括用于执行上述第二方面或第二方面任一种可能的实现方式所提供的方法的模块。
示例性的,该装置可以包括:
接收模块,用于接收来自第一设备的数据包,其中,数据包中包括包头部分和负载部分,包头部分包括第一字段,第一字段用于指示I2C状态,I2C状态包括数据传输开始、数据传输延续、数据传输结束、确认ACK或者未确认NACK中的任一种;负载的长度大于或等于0比特;
处理模块,用于根据第一字段确定I2C状态。
在一种可能的实施方式中,第一字段的取值包括以下几种取值中的一种或多种:第一值,用于指示I2C状态为数据传输开始;第二值,用于指示I2C状态为数据传输延续;第三值,用于指示I2C状态为数据传输结束;第四值,用于指示I2C状态为ACK;第五值,用于指示I2C状态为NACK。
在一种可能的实施方式中,第一字段指示I2C状态为数据传输开始,负载部分中承载有从设备Slave地址和读/写标志;处理模块还用于:在至少一个I2C接口上产生一个开始状态;将Slave地址、读/写标志通过至少一个I2C接口发送至Slave地址所指向的从设备。
在一种可能的实施方式中,第一字段指示I2C状态为数据传输延续,负载部分中承载有I2C数据;处理模块还用于:将I2C数据通过至少一个I2C接口发送至Slave地址所指向的从设备。
在一种可能的实施方式中,包头部分还包括第二字段,第二字段用于指示数据包所属流的流标识ID,流ID与至少一个I2C接口对应。
在一种可能的实施方式中,包头部分还包括第三字段,第三字段用于指示数据包为基于I2C的数据包。
第五方面,提供一种装置,包括:至少一个处理器;以及与至少一个处理器通信连接的通信接口;其中,至少一个处理器通过执行存储器存储的指令,使得装置通过通信接口执行如第一方面或第一方面任一种可能的实施方式中所提供的方法。
可选的,存储器位于该装置之外。
可选的,该装置包括存储器,存储器与至少一个处理器相连,存储器存储有可被至少一个处理器执行的指令。
第六方面,提供一种装置,包括:至少一个处理器;以及与至少一个处理器通信连接的通信接口;其中,至少一个处理器通过执行存储器存储的指令,使得装置通过通信接口执行如第二方面或第二方面任一种可能的实施方式中所提供的方法。
可选的,存储器位于该装置之外。
可选的,该装置包括存储器,存储器与至少一个处理器相连,存储器存储有可被至少一个处理器执行的指令。
第七方面,提供一种装置,包括处理器和接口电路;接口电路,用于接收代码指令并传输至处理器;处理器运行代码指令以执行如第一方面或第一方面任一种可能的实施方式中所提供的方法。
第八方面,提供一种装置,包括处理器和接口电路;接口电路,用于接收代码指令并传输至处理器;处理器运行代码指令以执行如第二方面或第二方面任一种可能的实施方式中所提供的方法。
第九方面,提供一种芯片,芯片与存储器耦合,用于读取并执行存储器中存储的程序指令,实现如第一方面或第一方面任一种可能的实施方式中所提供的方法。
第十方面,提供一种芯片,芯片与存储器耦合,用于读取并执行存储器中存储的程序指令,实现如第二方面或第二方面任一种可能的实施方式中所提供的方法。
第十一方面,提供一种计算机可读存储介质,可读存储介质用于存储指令,当指令被执行时,使如第一方面或第一方面任一种可能的实施方式中所提供的方法被实现。
第十二方面,提供一种计算机可读存储介质,可读存储介质用于存储指令,当指令被执行时,使如第二方面或第二方面任一种可能的实施方式中所提供的方法被实现。
第十三方面,提供一种包含指令的计算机程序产品,计算机程序产品中存储有指令,当其在计算机上运行时,使得计算机执行如第一方面或第一方面任一种可能的实施方式中所提供的方法。
第十四方面,提供一种包含指令的计算机程序产品,计算机程序产品中存储有指令,当其在计算机上运行时,使得计算机执行如第二方面或第二方面任一种可能的实施方式中所提供的方法。
第十五方面,提供一种通信系统,包括第一设备和第二设备,第一设备可以执行上述第一方面或第一方面任一种可能的实施方式中相应的功能,第二设备可以执行上述第二方面或第二方面任一种可能的实施方式中相应的功能。
需要说明的是,本申请实施例中“耦合”是指两个部件彼此直接或间接地结合。
上述第二方面至第十五方面中各实施方式的有益效果参见第一方面中对应实施方式的有益效果,这里不再赘述。
附图说明
图1为一种车载摄像头的图像传输系统的示意图;
图2为I2C总线的示意图;
图3为一种可能的I2C时序图;
图4A为一种可能地I2C总线的写数据的流程图;
图4B为一种可能的I2C总线的读数据的流程图;
图5为一种透传I2C信号的封装方法的示意图;
图6A、图6B为另一种透传I2C信号的封装方法的示意图;
图7为本申请实施例提供的一种可能的通信场景示意图;
图8为本申请实施例提供的另一种可能的通信场景示意图;
图9为本申请实施例提供的另一种可能的通信场景示意图;
图10为本申请实施例提供的一种基于I2C的通信方法的流程图;
图11为本申请实施例提供的一种可能的数据包的结构示意图;
图12为第一字段的几种可能的取值的示意图;
图13A为Master向Slave发送I2C数据的示意图;
图13B为Slave向Master发送I2C数据的示意图;
图14为本申请实施例提供的另一种可能的数据包的结构示意图;
图15为本申请实施例提供的另一种可能的数据包的结构示意图;
图16为本申请实施例提供的另一种可能的数据包的结构示意图;
图17为本申请实施例提供的另一种可能的数据包的结构示意图;
图18为本申请实施例提供的另一种可能的数据包的结构示意图;
图19为本申请实施例提供的一种基于I2C的通信装置1900的结构示意图;
图20为本申请实施例提供的另一种基于I2C的通信装置2000的结构示意图;
图21为本申请实施例提供的一种装置2100的结构示意图;
图22为本申请实施例提供的一种装置2200的结构示意图;
图23为本申请实施例提供的一种装置2300的结构示意图;
图24为本申请实施例提供的一种装置2400的结构示意图。
具体实施方式
目前,汽车正在向智能化发展,驾驶辅助系统越来越多的搭载在汽车上,大多数的驾驶辅助系统依赖于摄像头实时地感知汽车周围的环境。
如图1所示,为一种车载摄像头的图像传输系统的示意图,该系统包括摄像头,还包括多域控制器(Multi Domain Controller,MDC)或移动数据中心(Mobile Data Center,MDC)。摄像头与MDC之间可以传输图像信号,例如红绿蓝(Red Green Blue,RGB)数据。摄像头与MDC还可以进行I2C通信,即摄像头与MDC之间还可以传输I2C信号,I2C信号主要用于控制摄像头的拍摄参数,例如控制摄像头像素的量化深度、帧率、感光度、白平衡等。
I2C信号基于I2C总线传输。I2C总线是一种低速串行总线,是一种在印制电路板(Printed Circuit Board,PCB)上走线的近距离传输总线,用于连接微控制器及其外围设备。
如图2所示,为I2C总线的示意图。I2C总线由两根线组成,一根是串行数据线(serial data line,SDA),用于传输数据;一根是串行时钟线(serial clock line,SCL),用于传输时钟信号。所有接到I2C总线上的设备的数据线都连接到I2C总线中的SDA,所有接到I2C总线上的设备的时钟线均连接到I2C总线中的SCL。其中,SCL是单向传输的,由主设备(Master)发送到从设备(Slave),SDA是双向传输,可以由主设备发送到从设备,也可以由从设备发送到主设备。图1中的MDC是主设备,负责控制I2C的行为,摄像头为从设备,从设备用于按照主设备的命令执行相关的操作;或者,图1中的MDC中的处理芯片是主设备,解串器、串行器或传感器为从设备。
应理解,图2中是以一个主设备与一个从设备通信连接为例,在实际应用中一个主设备可以同时与多个从设备通信连接,即一个主设备可以同时控制多个从设备。另外,在本文中,主设备还可以被称为主控设备或主节点等,从设备还可以被称为从节点、外围设备、外围器件、外接器件、外接设备或外设等。在本申请实施例中,如无特殊说明,I2C与I2C含义相同。
主设备通过控制两根线的电平状态(时序)对从设备进行控制。如图3所示,为I2C时序图的一种示例。
主设备与从设备开始通信时,会在I2C总线上生成一个开始信号(或者说开始状态),即SCL处于高电平,SDA由高电平变为低电平。出现开始信号以后,I2C总线被认为“忙”,进而可以进行后续的I2C总线寻址或I2C数据传输等。
在开始状态发生后,主设备与从设备开始数据交互,主设备与从设备每一次交互固定8个比特(bit)的数据,每一次交互完成后,数据的发送端必须要收到接收端反馈的1bit的应答信号后,才能进行下一步操作(如发送下一8bit数据)。应答信号包括确认(ACK)和未确认(NACK)两种类型,由数据接收方发给数据发送方。
在主设备与从设备数据传输的过程中,主设备与从设备第一次交互的8个bit数据用于总线寻址,其中高位7bit指示本次与主设备通信的从设备的地址,低位1bit为读/写(R/W)标识(或者说读写标志位),用于指示本次通信是读数据还是写数据(即数据是由主设备发往从设备,还是由从设备发往主设备)。第一组8bit数据之后的数据,为本次通信需要传输的I2C数据,I2C数据例如摄像头的像素量化深度、帧率、感光度、或白平衡等的拍摄参数。
主设备与从设备数据传输完成后,即主设备与从设备停止通信时,会在I2C总线上生成一个停止信号(或者停止状态),SCL处于高电平,SDA由低电平变为高电平。停止信号过后,I2C总线被认为“空闲”。
如上所述,主设备与从设备之间的I2C通信包括主设备控制从设备向主设备发数据(即读数据流程)、主设备控制从设备接收主设备发送的数据(即写数据流程)。下面分别对读流程和写流程进行举例说明。
参见图4A,I2C总线的一种可能的写流程可以包括如下步骤:
步骤1,主设备发送开始(START,S)信号。
步骤2,主设备发送一个字节(8bit),并等待ACK。其中,该字节的高7位携带从设备的地址,低1位为读写标志位(R/W);读写控标志为1时,表示读命令,读写控制位为0时,表示写命令。图4A中R/W=0,表示写命令。可以替换的,本申请各实施例中,读写控标志为0时,可以表示读命令,读写控制位为1时,表示写命令,本申请对此不作限制。
步骤3,从设备发送ACK,表示接收成功。
步骤4,主设备发送一个字节,并等待ACK。其中,该字节携带要写入从设备的数据。
步骤5,从设备将数据写入存储单元,并发送ACK。
需要说明的是,这里的步骤4和步骤5可以连续进行多次,即主设备将数据顺序写入从设备,图4A是以两次写入为例。
进一步需要说明的是,如果从设备接收数据失败或将数据写入存储单元失败,则需要发送NACK给主设备。图4A是以主设备发送ACK为例。
步骤6,主设备发出结束(STOP,P)信号。
参见图4B,I2C总线的一种可能的读流程可以包括如下步骤:
步骤1,主设备发送开始信号。
步骤2,主设备发送一个字节,并等待ACK。其中,该字节的高7位携带待控制的从设备的地址,低1位为读写标志位(R/W);读写标志位为1时,表示读命令,读写控制位为0时,表示写命令。图4B中R/W=1,表示读命令。
步骤3,从设备发送ACK,表示接收成功。
步骤4,从设备发送一个字节,并等待ACK。其中,该字节携带主设备读取的数据(即从设备发送给主设备的数据)。
步骤5,主设备接收该字节后,发送ACK。
需要说明的是,这里的步骤4和步骤5可以连续进行多次,即主设备顺序从从设备读取数据,图4B是以两次读取为例。
进一步需要说明的是,如果主设备接收数据失败或主设备读数据操作完毕,则需要发送NACK给从设备。如图4B中最后一组8bit数据对应的应答信号为NACK,表示主设备读数据操作完毕。
步骤6,主设备发出结束信号。
在车内网的一些场景中,I2C的主设备与从设备的距离比较远(通常在10m左右),因此需要将I2C信号承载在远距离传输技术的数据包里透传。
以图1所示的车载摄像头为例,MDC端为Master,摄像头端为Slave,车中摄像头一般安装在挡风玻璃上、后保险杠上、门柱上等,而MDC安装在车内,因此摄像头和MDC之间有较远的距离,需要把I2C信号拉远传输。然而摄像头与MDC之间需要传输图像信号,本来就存在一种远距离的高速传输接口,因此可以把I2C信号放在MDC和摄像头之间这根长距离高速传输线上透传。而透传I2C,则需要将I2C信号以一定的规则封装成数据包传输。
如图5所示,为一种透传I2C信号的封装方法的示意图。该方法将I2C两根线SCL和SDA上的电平状态固定承载在数据包中的位置,SCL和SDA上的每一电平状态使用1个比特位,进而将两根线上的电平状态传输到对端。
该方案将I2C两根线上的状态都进行封装传输,但时钟线SCL上的信号无实际意义,无需传输,该方案增加了传输I2C信号的带宽需求。其次,该方案只传输SCL和SDA上的电平状态,Master的串行器或解串器直接将SCL和SDA上的状态映射到I2C接口上,没有解析数据含义,也就无法通过地址区分不同的芯片,因此Master只能固定访问摄像头内的传感器或显示屏,无法访问摄像头内的串行器或解串器。另外,该方案无法区分多个I2C接口,不支持多个I2C接口的信息同时传输。
如图6A、图6B所示,为另一种透传I2C信号的封装方法的示意图。该方案使用图6A所示的数据包封装SDA上传输的I2C数据,每个数据包传输8bit数据。通过包头中的2bit指示负载中承载的是8bit的I2C数据,还是特殊码型,通过特殊码型指示I2C的线路状态和反馈信息,如开始、结束、ACK、NACK等,特殊码型如图6B中所示。
该方案将I2C线路上的开始和结束(SCL和SDA共同决定)编码成一个8bit的特殊码型,将1bit转化成8bit传输,增加了传输的数据量。其次,该方案传输开始、结束、ACK、NACK需单独封装据包,一个数据包最小104bit,增加了对带宽的需求。另外,该方案同样无法区分多个I2C接口,不支持多个I2C接口的信息同时传输。
为了解决上述一个或多个技术问题,本申请实施例提供一种基于I2C的通信方案。该方案只封装SDA上的数据,采用更小的包头开销,能够将I2C的线路状态(如通信开始/通信结束)、反馈信息(如ACK/NACK)等信号与I2C的8bit数据封装在一个数据包中,进而降低封装传输I2C信号对带宽的需求。具体方案将在后文进一步详细介绍。
本申请实施例可以应用于任何需要基于I2C通信的场景。例如,图7、图8以及图9,为本申请适用的三种可能的通信场景。
图7为单目摄像头应用场景,MDC和单目摄像头可以基于I2C通信。MDC中的处理芯片可以作为主设备通过I2C信号控制摄像头,具体可以是控制摄像头中的传感器或串行器(Serializer),还可以控制MDC里的解串器。摄像头中的串行器和MDC中的解串器(Deserializer)为接口电路,串行器和解串器通过链路连接,串行器用于将低速并行信号转化为高速串行信号,解串器用于将高速串行信号转化为低速并行信号。
可以理解的,摄像头中的串行器、传感器可以以一个整体作为从设备,摄像头(串行器、传感器整体)具备一个slave地址,MDC中的处理芯片可以通过I2C信号控制摄像头。
可替换的,摄像头中的串行器或传感器还可以单独作为从设备,即串行器、传感器分别单独具备一个slave地址。其中,串行器可以包括至少一个寄存器,用于存储数据。
另外,MDC里的解串器也可以单独作为一个从设备,单独具备一个slave地址。
图8为多目摄像头应用场景,MDC和多目摄像头可以基于I2C通信。该场景下MDC可以有多个I2C接口,图8中是以两个I2C接口为例,实际还可以包括更多的I2C接口,本申请对多目摄像头中MDC的I2C接口数量不做限制。同一解串器/串行器能同时支持多个I2C接口同时传输。每个I2C接口分别控制不同的传感器,例如图8中的MDC的处理芯片使用I2C接口1控制传感器1,使用I2C接口2用于控制传感器2,或者处理芯片使用I2C接口1控制传感器2,使用I2C接口2用于控制传感器1。这样能提高MDC对传感器的读/写速率。
同上,可以理解的,图8所示的摄像头中的串行器、传感器可以以一个整体作为从设备,摄像头单独具备一个slave地址,MDC中的处理芯片可以通过I2C信号控制摄像头。
可替换的,摄像头中的每个串行器或者每个传感器可以单独作为一个从设备,即每个串行器或每个传感器单独具备一个slave地址。
另外,MDC里的解串器也可以单独作为一个从设备,单独具备一个slave地址。
图9为大屏应用场景,座舱控制器(Cockpit Domain Controller,CDC)和显示器可以基于I2C通信。该场景下CDC中的处理器(主设备)通过I2C控制显示器(从设备),例如控制显示器中的解串器和显示屏,显示屏上的触屏信息也可以通过I2C总线传输到处理器。
同上,可以理解的,显示器中的解串器、显示屏可以以一个整体作为从设备,即显示器具备一个slave地址,CDC中的处理器可以通过I2C信号控制显示器。
可替换的,显示器中的解串器、显示屏可以分别单独作为从设备,即解串器、显示屏分别单独具备一个slave地址。
另外,CDC里的串行器也可以作为处理器的从设备,单独具备一个slave地址。
为了使本申请实施例的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施例的技术方案作进一步地详细描述。
本申请实施例中的术语“系统”和“网络”可被互换使用。“至少一个”是指一个或者多个,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B的情况,其中A,B可以是单数或者复数。字符“/”一般表示前后关联对象是一种“或”的关系。“以下至少一项(个)”或其类似表达,是指的这些项中的任意组合,包括单项(个)或复数项(个)的任意组合,例如a、b或c中的至少一项(个),可以表示:a,或b,或c,或a和b,或b和c,或a和c,或a和b和c。
以及,除非有相反的说明,本申请实施例提及“第一”、“第二”等序数词是用于对多个对象进行区分,不用于限定多个对象的顺序、时序、优先级或者重要程度。例如,第一字段和第二字段,只是为了区分不同的不同,而并不是表示这两种字段的内容、优先级或者重要程度等的不同。
此外,本申请实施例和权利要求书及附图中的术语“包括”和“具有”不是排他的。例如,包括了一系列步骤或模块的过程、方法、系统、产品或设备,不限定于已列出的步骤或模块,还可以包括没有列出的步骤或模块。
如图10所示,本申请实施例提供的一种基于I2C的通信方法,该方法可以应用于图7或图8或图9所示的场景,方法包括:
S1001、第一设备生成数据包;其中,数据包中包括包头部分和负载部分,包头部分包括第一字段,第一字段用于指示I2C状态;负载的长度大于或等于0比特。
如图11所示,为本申请实施例提供的一种可能的数据包的结构示意图,包括包头部分(简写“包头”)、负载部分(简写“负载”)。进一步的,数据包还包括包尾。包头中包括第一字段,包尾中包括循环冗余校验(Cyclic Redundancy Check,CRC)位。其中第一字段的字段长度以3bit为例,但实际还可以是其它值,例如4bit或5bit等,这里不做限制。
I2C状态用于表征I2C总线的通信状态,或者说表征I2C总线上的信号类型,或者说表征I2C总线的SDA和SCL的电平状态。I2C状态包括但不限于以下五种类型:数据传输开始、数据传输延续、数据传输结束、ACK、NACK。应理解,一个数据包对应一种类型。
第一字段取不同的值时,表征不同的I2C状态。例如,第一值,用于指示I2C状态为数据传输开始;第二值,用于指示I2C状态为数据传输延续;第三值,用于指示I2C状态为数据传输结束;第四值,用于指示I2C状态为ACK;第五值,用于指示I2C状态为NACK。当然,第一字段的实际取值不限于五种,实际还可以有更多。
如图12所示,为第一字段的一种可能的取值示例,第一字段的取值范围为0x0~0x7,其中0x0~0x4分别表示上述5种I2C状态,0x5~0x7为预留字段,可以用于指示除了上述5种I2C状态的外的其它I2C状态。
I2C状态为数据传输开始或数据传输结束的情况下,第一设备是Master、第二设备是slave。I2C状态为数据传输延续或数据传输结束或ACK或NACK的情况下,第一设备是Master、第二设备是slave,或者第二设备是Master、第一设备是slave。换而言之,Master生成的数据包中的第一字段可以指示数据传输开始、数据传输结束、数据传输延续、ACK、NACK中的任一种,而Slave生成的数据包中的第一字段可以指示数据传输延续、ACK、NACK中的任一种。
可以理解的,本申请实施例中的Master可以是控制器,例如图7中的MDC、图7中的MDC或图9中的CDC,也可以是控制器中的处理芯片,例如MDC中的处理芯片或CDC中的处理器。本申请实施例中的slave,可以是外围设备或外围器件,例如图7中的摄像头、图7中的摄像头或图9中的显示器,可以是外围设备或外围器件中的芯片,例如摄像头中的传感器或串行器、显示器中的解串器或显示屏等。当然,以上仅为举例,实际应用中不排除其他可能性。
下面对数据传输开始、数据传输延续、数据传输结束、ACK、NACK的定义进行介绍。
(1)数据传输开始:I2C总线上生成一个开始信号(或者开始状态),即SCL处于高电平,SDA由高电平变为低电平,如图3所示的起始条件。在这种情况下,第一设备为Master,例如MDC中的处理芯片,第二设备为Slave,例如MDC中的解串器、摄像头中的解串器或摄像头中的传感器等。
可以理解的,数据包的负载部分可以不携带数据,即负载长度为0,或者称为数据包不包括负载部分。
可选的,数据包的负载部分可以携带数据,即负载长度大于0,或者称为数据包包括负载部分。
一种可能的设计中,负载部分携带有7bit的Slave地址(用于总线寻址)以及1bit的读/写标志(用于指示本次通信是读数据还是写数据),对应的负载长度为8bit。当然,实际负载长度不限于此,例如还可以携带(N×8)bit的I2C数据。
Slave地址用于指示Master所要控制的芯片,例如摄像头中的传感器,或者摄像头中的串行器(进一步可以具体指向串行器中的寄存器)。
(2)数据传输延续:该状态是数据传输开始与数据传输结束中间的状态。I2C状态为数据传输延续时,I2C总线生成I2C数据的信号。
应理解,本申请实施例中的I2C数据,是指数据传输开始之后、数据传输结束之前,第一设备和第二设备在I2C总线上传输的除应答信号(NACK、NCK)之外的其它数据。
在这种情况下,第一设备为Master,例如摄像头中的处理芯片,第二设备为Slave,例如MDC中的解串器、摄像头中的解串器或摄像头中的传感器等,如图13A所示,为Master向Slave发送I2C数据的一种示例;或者,第二设备为Master,例如摄像头中的处理芯片,第一设备为Slave,例如MDC中的解串器、摄像头中的解串器或摄像头中的传感器等,如图13B所示,为Slave向Master发送I2C数据的一种示例。
应理解,在传输I2C数据时,是以8bit为一组进行传输,一组8bit的I2C数据传输完成之后,需要数据发送方等到接收方反馈ACK或NACK之后,再进行下一组I2C数据传输。应理解,在本文接下来的实施例中,除了有特别说明书之外,一个单位的I2C数据(例如一个I2C数据、一组I2C数据或一段I2C数据等),均是指长度为8bit的I2C数据。
(3)数据传输结束:I2C总线上生成一个停止信号(或者停止状态),即SCL处于高电平,SDA由低电平变为高电平,如图3所示的停止条件。I2C总线出现停止信号之后,在下一个开始状态出现之前,I2C总线上不会再有I2C数据传输。在这种情况下,第一设备为Master,例如MDC中的处理芯片,第二设备为Slave,例如MDC中的解串器、摄像头中的解串器或摄像头中的传感器等。数据包的负载部分不携带I2C数据,即负载长度为0。
(4)ACK:表示第一设备正确收到了第二设备发送的I2C数据(8bit),I2C总线上产生一个ACK状态。在这种情况下,第一设备为Master,例如MDC中的处理芯片,第二设备为Slave,例如MDC中的解串器、摄像头中的解串器或摄像头中的传感器等;或者,第二设备为Master,例如MDC中的处理芯片,第一设备为Slave,例如MDC中的解串器、摄像头中的解串器或摄像头中的传感器等,不做限制。
(5)NACK:表示第一设备从第二设备接收I2C数据失败或者无法解析从第二设备接收到的I2C数据的含义或Master(第一设备)停止从Slave(第二设备)读数据,I2C总线上产生一个NACK状态。在这种情况下,第一设备为Master,例如MDC中的处理芯片,第二设备为Slave,例如MDC中的解串器、摄像头中的解串器或摄像头中的传感器等,或者第二设备为Master,例如MDC中的处理芯片,第一设备为Slave,例如MDC中的解串器、摄像头中的解串器或摄像头中的传感器等,不做限制。
可选的,参考图13B,如果第一设备是Slave,第二设备是Master,则Master在对Slave执行读操作的过程中,Slave在向Master发送针对“Slave地址+读/写标志位”的应答信息(ACK或NACK)时,可以将ACK/NACK和读取的第一组I2C数据封装在一个数据包中传输,以节省开销。
S1002、第一设备向第二设备发送数据包,第二设备接收来自第一设备的数据包。
在本申请实施例中,第一设备可以支持一个或多个I2C接口,第二设备可以支持一个或多个I2C接口,第一设备和第二设备之间可以基于一个或多个I2C传输通道传输数据包。
例如,第一设备是MDC中的处理芯片,第二设备是图7中的单目摄像头中的传感器,则第一设备和第二设备之间基于一个I2C传输通道传输数据包,即传感器的I2C接口与处理芯片的I2C接口之间的传输通道。
例如,第一设备是图8中的MDC中的处理芯片,第二设备是图8中的多目摄像头中的串行器或MDC中的解串器,则第一设备和第二设备之间最多可以同时基于两个I2C传输通道传输数据包,例如传感器1的I2C接口与处理芯片的I2C接口1之间的传输通道,以及传感器2的I2C接口与处理芯片的I2C接口2之间的传输通道。
S1003、第二设备根据第一字段确定I2C状态。
第二设备收到数据包之后,解析数据包。
示例性的,若第二设备根据第一字段确定I2C状态为数据传输开始,则第二设备在至少一个I2C接口上产生一个开始状态,即控制SCL处于高电平,SDA由高电平变为低电平。
可选的,第二设备还可以从负载部分获得Slave地址、读/写标志,将Slave地址、读/写标志通过至少一个I2C接口发送至Slave地址所指向的从设备。
例如,第一设备是图8中的MDC的处理芯片,第二设备是图8中的多目摄像头中的串行器(是MDC处理芯片的从设备),Slave地址指向传感器1(MDC处理芯片的从设备),则串行器在收到数据包后,将Slave地址、读/写标志通过传感器1的I2C接口发送到传感器1。
进一步的,如果读/写标志指示读数据,则后续第二设备从将芯片中读取I2C数据发送给第一设备,如果读/写标志指示写数据,则后续第二设备从第一设备接收I2C数据,并将接收到的I2C数据写入芯片。
示例性的,若第二设备根据第一字段确定I2C状态为数据传输延续,则将I2C数据通过至少一个I2C接口发送至Slave地址所指向的从设备。
例如,第一设备是图8中的MDC的处理芯片,第二设备是图8中的多目摄像头中的串行器(是MDC处理芯片的从设备),Slave地址指向传感器2(MDC处理芯片的从设备),则串行器在收到数据包后,将I2C数据通过传感器2的I2C接口发送到传感器2。
示例性的,若第二设备根据第一字段确定I2C状态为数据传输结束,则在至少一个I2C接口上产生一个停止状态,即控制SCL处于高电平,SDA由低电平变为高电平。
示例性的,若第二设备根据第一字段确定I2C状态为ACK,则在至少一个I2C接口上产生一个ACK状态,指示对应的8bit I2C数据接收成功。
示例性的,若第二设备根据第一字段确定I2C状态为NACK,则在至少一个I2C接口上产生一个NACK状态,指示对应的8bit I2C数据接收失败或无法解析8bit I2C数据的含义或Master停止从Slave读数据。
通过上述可知,本申请实施例仅对SDA线上的数据进行封装传输,可以节省传输带宽,提高传输效率;本申请实施例通过在数据包的包头中设置第一字段指示I2C状态,而负载部分用于承载Slave地址、读/写标志或者I2C数据,使得传输开始、ACK、NACK等状态不必单独封装据包,而是与Slave地址、读/写标志或者I2C数据封装在一个数据包中,可进一步节省传输带宽,提高传输效率;另外,本申请实施例在封装数据包时,解析数据的含义,能根据Slave地址区分读写的从设备,可以实现使同一个I2C接口可以控制不同的从设备。
可选的,在本申请实施例中,包头部分还包括第二字段,用于指示数据包所属流的流标识ID,每个流ID与至少一个I2C接口对应。应理解,本文中的流ID是用于区分I2C接口,即流ID相同的数据包在相同的I2C接口上传输。这样,第一设备和第二设备在传输数据包时,第一设备和第二设备中的串行器/解串器就可以通过识别流ID来区分I2C接口,将每个数据包分配至与该数据包的流ID相对应的I2C接口上传输,进而可以实现第一设备和第二设备之间支持多个I2C接口的信号同时传输,进一步提高传输效率。
如图14所示,为本申请实施例提供的另一种可能的数据包的结构示意图,包头中除了用于指示I2C状态的第一字段外,还包括用于指示流ID的第二字段。应理解,图14中第二字段是以2bit为例,但实际不限于此,例如还可以是3bit、4bit、5bit等,具体长度本领域技术人员可以根据I2C接口的数量或者其它规则进行设置。
本申请实施例中,流ID与I2C接口的对应关系可以是一对一的关系,即同一流ID对应的数据包,只能在同一个I2C接口上传输;流ID与I2C接口的对应关系也可以是一对多的关系,即同一流ID对应的数据包,可以在多个不同的I2C接口上传输;流ID与I2C接口的对应关系还可以是多对一的关系,即多个不同流ID的数据包,可以在同一个I2C接口上传输;流ID与I2C接口的对应关系还可以是多对多的关系,即多各不同流ID对应的数据包,可以在多个不同的I2C接口上传输,本申请不做限制。
这里结合图8所示的场景对流ID与I2C接口是一对一的对应关系进行举例:参考图8,设流ID“1”对应I2C接口1,流ID“2”对应I2C接口2。MDC在向多目摄像头的传感器1发送数据包时,可以在数据包的包头中的第二字段上指示流ID为“1”,该数据包传输至多目摄像头的串行器之后,串行器识别到流ID“1”,则将该数据包分发至传感器1;MDC在向多目摄像头的传感器2发送数据包时,可以在数据包的包头中的第二字段上指示流ID为“2”,该数据包传输至多目摄像头的串行器之后,串行器识别到流ID“2”,则将该数据包分发至传感器2。相应的,多目摄像头的传感器1在向MDC发送数据包时,可以在数据包的包头中的第二字段上指示流ID为“1”,该数据包传输至MDC的解串器之后,解串器识别到流ID“1”,则将该数据包通过I2C接口1传输给MDC的处理芯片,进而处理芯片可以识别到该数据包来自传感器1;多目摄像头的传感器2在向MDC发送数据包时,可以在数据包的包头中的第二字段上指示流ID为“2”,该数据包传输至MDC的解串器之后,解串器识别到流ID“2”,则将该数据包通过I2C接口2传输给MDC的处理芯片,进而处理芯片可以识别到该数据包来自传感器2。
可选的,在本申请实施例中,包头部分还包括第三字段,用于指示数据包为基于I2C的数据包。第三字段可以具体可以通过一个字段实现,也可以通过多个字段实现,这里不做限制。
示例性的,参见图15,为本申请实施例提供的另一种可能的数据包的结构示意图,包头中除了用于指示I2C状态的第一字段和用于指示流ID的第二字段之外,还包括第三字段,用于指示数据包封装业务类型。
应理解,图15中第三字段是以4bit为例,但实际不限于此,例如还可以是2bit、3bit、5bit等,具体长度本领域技术人员可以根据第一设备和第二设备之间可能传输的数据包的种类或者其它规则进行设置。
第三字段取第一预设值时,用于指示数据包的封装业务类型为I2C,即该数据包是基于I2C的数据包。如果第三字段取除第一预设值以外的其它值,则可以用于指示其它封装业务类型的数据包,例如通用型之输入输出(General-purpose input/output,GPIO)、串行外设接口(Serial Peripheral Interface、SPI)、异步收发传输器(UniversalAsynchronous Receiver/Transmitter,UART)等。
示例性的,参见图16,为本申请实施例提供的另一种可能的数据包的结构示意图,包头中除了用于指示I2C状态的第一字段和用于指示流ID的第二字段之外,还包括第四字段和第五字段(即第三字段实际包括第四字段和第五字段两个字段),其中第四字段用于指示封装业务类型,第五字段用于指示数据格式。当第四字段取第二预设值时,指示封装业务类型为控制业务,当第五字段取第三预设值时,指示的数据格式为I2C数据。
应理解,图16中第四字段是以4bit为例,第五字段是以6bit为例,但实际不限于此,例如第四字段还可以是2bit、3bit、5bit等,第五字段还可以是4bit、8bit、12bit等。第四字段的具体长度本领域技术人员可以根据第一设备和第二设备支持的封装业务的种类或者其它规则进行设置,第五字段的具体长度本领域技术人员可以根据第一设备和第二设备支持的数据格式的种类或者其它规则进行设置。
当第四字段指示的封装业务类型为控制业务且第五字段指示的数据格式是I2C数据时,该数据包的封装业务类型为I2C,即该数据包为基于I2C的数据包。如果第四字段指示的封装业务类型不是控制业务(例如为数据业务),则该数据包不属于基于I2C的数据包,如果第四字段指示的封装业务类型是控制业务,但第五字段指示的数据格式并不是I2C数据(例如是SPI数据、UART数据或GPIO数据),则该数据包也不是基于I2C的数据包。
可选的,在本申请实施例中,包头中除了第一字段,第二字段以及第三字段外,还可以包括其他字段,例如循环序列号,用于给数据包计数,例如负载长度指示,用于指示负载中的数据的长度,另外还可以包含一些预留字段,可以用于后续拓展。
需要说明的是,本申请上述的各实施方式可以相互结合,形成不同的数据包结构,实现不同的技术效果。例如,图17为本申请实施例提供的另一种可能的数据包的结构示意图,是在图15所示的数据包的包头中进一步增加循环序列号字段和负载长度指示字段的示例。图18为本申请实施例提供的另一种可能的数据包的结构示意图,是在图16所示的数据包的包头中进一步增加循环序列号字段和负载长度指示字段的示例。当然实际应用中还可以有其它组合方式,这里不一一例举。
以上结合附图11~12、图13A、图13B以及图14~图18介绍了本申请实施例提供的方法,以下结合附图19~图22介绍本申请实施例提供的装置。
基于同一技术构思,本申请实施例还提供一种基于I2C的通信装置1900,该装置1900具备实现上述图11~12、图13A、图13B以及图14~图18所示实施例中第一设备的功能,比如,该装置1900包括执行上述图11~12、图13A、图13B以及图14~图18所示实施例中第一设备所执行的步骤所对应的模块或单元或手段(means),所述功能或单元或手段可以通过软件实现,或者通过硬件实现,也可以通过硬件执行相应的软件实现。
例如,参见图19,装置1900可以包括:
处理模块1901,用于生成数据包;其中,数据包中包括包头部分和负载部分,包头部分包括第一字段,第一字段用于指示I2C状态,I2C状态包括数据传输开始、数据传输延续、数据传输结束、确认ACK或者未确认NACK中的任一种;负载的长度大于或等于0比特;
发送模块1902,用于向第二设备发送数据包。
在一种可能的实施方式中,第一字段的取值包括以下几种取值中的一种或多种:第一值,用于指示I2C状态为数据传输开始;第二值,用于指示I2C状态为数据传输延续;第三值,用于指示I2C状态为数据传输结束;第四值,用于指示I2C状态为ACK;第五值,用于指示I2C状态为NACK。
当然,上述五种取值仅为举例而非限定,在具体实施时,第一字段的取值可以更多或者更少。
在一种可能的实施方式中,第一字段指示I2C状态为数据传输开始,负载部分中承载有从设备Slave地址和读/写标志。
在一种可能的实施方式中,第一字段指示I2C状态为数据传输延续,负载部分中承载有I2C数据。
在一种可能的实施方式中,包头部分还包括第二字段,第二字段用于指示数据包所属流的流标识ID,流ID与至少一个I2C接口对应。
其中,流ID与I2C接口的对应关系可以是一对一、一对多、多对一或多对多的关系,本申请不做限制。
在一种可能的实施方式中,包头部分还包括第三字段,第三字段用于指示数据包为基于I2C的数据包。
其中,第三字段可以具体可以通过一个字段实现,也可以通过多个字段实现,这里不做限制。
应理解,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
基于同一技术构思,本申请实施例还提供一种基于I2C的通信装置2000,该装置2000具备实现上述图11~12、图13A、图13B以及图14~图18所示实施例中第二设备的功能,比如,该装置2000包括执行上述图11~12、图13A、图13B以及图14~图18所示实施例中第二设备所执行的步骤所对应的模块或单元或手段(means),所述功能或单元或手段可以通过软件实现,或者通过硬件实现,也可以通过硬件执行相应的软件实现。
示例性的,该装置2000可以包括:
接收模块2001,用于接收来自第一设备的数据包,其中,数据包中包括包头部分和负载部分,包头部分包括第一字段,第一字段用于指示I2C状态,I2C状态包括数据传输开始、数据传输延续、数据传输结束、确认ACK或者未确认NACK中的任一种;负载的长度大于或等于0比特;
处理模块2002,用于根据第一字段确定I2C状态。
在一种可能的实施方式中,第一字段的取值包括以下几种取值中的一种或多种:第一值,用于指示I2C状态为数据传输开始;第二值,用于指示I2C状态为数据传输延续;第三值,用于指示I2C状态为数据传输结束;第四值,用于指示I2C状态为ACK;第五值,用于指示I2C状态为NACK。
当然,上述五种取值仅为举例而非限定,在具体实施时,第一字段的取值可以更多或者更少。
在一种可能的实施方式中,第一字段指示I2C状态为数据传输开始,负载部分中承载有从设备Slave地址和读/写标志;处理模块2002还用于:在至少一个I2C接口上产生一个开始状态;将Slave地址、读/写标志通过至少一个I2C接口发送至Slave地址所指向的从设备。
在一种可能的实施方式中,第一字段指示I2C状态为数据传输延续,负载部分中承载有I2C数据;处理模块2002还用于:将I2C数据通过至少一个I2C接口发送至Slave地址所指向的从设备。
在一种可能的实施方式中,包头部分还包括第二字段,第二字段用于指示数据包所属流的流标识ID,流ID与至少一个I2C接口对应。
其中,流ID与I2C接口的对应关系可以是一对一、一对多、多对一或多对多的关系,本申请不做限制。
在一种可能的实施方式中,包头部分还包括第三字段,第三字段用于指示数据包为基于I2C的数据包。
其中,第三字段可以具体可以通过一个字段实现,也可以通过多个字段实现,这里不做限制。
应理解,上述方法实施例涉及的各步骤的所有相关内容均可以援引到对应功能模块的功能描述,在此不再赘述。
基于同一技术构思,参见图21,本申请实施例还提供一种装置2100,包括:
至少一个处理器2101;以及与至少一个处理器2101通信连接的通信接口2103;至少一个处理器2101通过执行存储器2102存储的指令,使得装置通过通信接口2103执行图11~12、图13A、图13B以及图14~图18所示实施例中第一设备所执行的方法步骤。
应理解,图21中仅示意了一个处理器2101,实际数量还可以是多个。
可选的,存储器2102位于装置2100之外。
可选的,装置2100包括存储器2102,存储器2102与至少一个处理器2101相连,存储器2102存储有可被至少一个处理器2101执行的指令。
应理解,附图21用虚线表示存储器2102对于装置2100是可选的。
其中,处理器2101和存储器2102可以通过接口电路耦合,也可以集成在一起,这里不做限制。
本申请实施例中不限定上述处理器2101、存储器2102以及通信接口2103之间的具体连接介质。本申请实施例在图21中以处理器2101、存储器2102以及通信接口2103之间通过总线2104连接,总线在图21中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图21中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
基于同一技术构思,参见图22,本申请实施例还提供一种装置2200,包括:
至少一个处理器2201;以及与至少一个处理器2201通信连接的通信接口2203;至少一个处理器2201通过执行存储器2202存储的指令,使得装置通过通信接口2203图11~12、图13A、图13B以及图14~图18所示实施例中第二设备所执行的方法步骤。
应理解,图22中仅示意了一个处理器2201,实际数量还可以是多个。
可选的,存储器2202位于装置2200之外。
可选的,装置2200包括存储器2202,存储器2202与至少一个处理器2201相连,存储器2202存储有可被至少一个处理器2201执行的指令。附图22用虚线表示存储器2202对于装置2200是可选的。
其中,处理器2201和存储器2202可以通过接口电路耦合,也可以集成在一起,这里不做限制。
本申请实施例中不限定上述处理器2201、存储器2202以及通信接口2203之间的具体连接介质。本申请实施例在图22中以处理器2201、存储器2202以及通信接口2203之间通过总线2204连接,总线在图22中以粗线表示,其它部件之间的连接方式,仅是进行示意性说明,并不引以为限。总线可以分为地址总线、数据总线、控制总线等。为便于表示,图22中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
应理解,本申请实施例中提及的处理器可以通过硬件实现也可以通过软件实现。当通过硬件实现时,该处理器可以是逻辑电路、集成电路等。当通过软件实现时,该处理器可以是一个通用处理器,通过读取存储器中存储的软件代码来实现。
示例性的,处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
应理解,本申请实施例中提及的存储器可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(Read-Only Memory,ROM)、可编程只读存储器(Programmable ROM,PROM)、可擦除可编程只读存储器(Erasable PROM,EPROM)、电可擦除可编程只读存储器(Electrically EPROM,EEPROM)或闪存。易失性存储器可以是随机存取存储器(Random Access Memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(Static RAM,SRAM)、动态随机存取存储器(Dynamic RAM,DRAM)、同步动态随机存取存储器(Synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(Double Data EateSDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(Enhanced SDRAM,ESDRAM)、同步连接动态随机存取存储器(Synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(DirectRambus RAM,DR RAM)。
需要说明的是,当处理器为通用处理器、DSP、ASIC、FPGA或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件时,存储器(存储模块)可以集成在处理器中。
应注意,本文描述的存储器旨在包括但不限于这些和任意其它适合类型的存储器。
基于同一技术构思,参见图23,本申请实施例还提供一种装置2300,包括处理器2301和接口电路2302;接口电路2302,用于接收代码指令并传输至处理器2301;处理器2301运行代码指令可以执行图11~12、图13A、图13B以及图14~图18所示实施例中第一设备所执行的方法。
基于同一技术构思,参见图24,本申请实施例还提供一种装置2400,包括处理器2401和接口电路2402;接口电路2402,用于接收代码指令并传输至处理器2401;处理器2401运行代码指令可以执行图11~12、图13A、图13B以及图14~图18所示实施例中第二设备所执行的方法。
基于同一技术构思,本申请实施例还提供一种芯片,芯片与存储器耦合,用于读取并执行存储器中存储的程序指令,实现如图11~12、图13A、图13B以及图14~图18所示实施例中第一设备所执行的方法。
基于同一技术构思,本申请实施例还提供一种芯片,芯片与存储器耦合,用于读取并执行存储器中存储的程序指令,实现如图11~12、图13A、图13B以及图14~图18所示实施例中第二设备所执行的方法。
基于同一技术构思,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质用于存储指令,当指令被执行时,使如图11~12、图13A、图13B以及图14~图18所示实施例中第一设备所执行的方法被实现。
基于同一技术构思,本申请实施例还提供一种计算机可读存储介质,计算机可读存储介质用于存储指令,当指令被执行时,使如图11~12、图13A、图13B以及图14~图18所示实施例中第二设备所执行的方法被实现。
基于同一技术构思,本申请实施例还提供一种包含指令的计算机程序产品,计算机程序产品中存储有指令,当其在计算机上运行时,使得计算机执行图11~12、图13A、图13B以及图14~图18所示实施例中第一设备所执行的方法。
基于同一技术构思,本申请实施例还提供一种包含指令的计算机程序产品,计算机程序产品中存储有指令,当其在计算机上运行时,使得计算机执行图11~12、图13A、图13B以及图14~图18所示实施例中第二设备所执行的方法。
本领域内的技术人员应明白,本申请的实施例可提供为方法、装置、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请是参照根据本申请的方法、装置、系统、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
显然,本领域的技术人员可以对本申请进行各种改动和变型而不脱离本申请的保护范围。这样,倘若本申请的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。

Claims (20)

1.一种通信装置,其特征在于,所述通信装置包括:
至少一个处理器;以及与所述至少一个处理器通信连接的通信接口;
所述至少一个处理器,用于生成数据包;其中,所述数据包中包括包头和负载,所述包头包括第一字段,所述第一字段用于指示I2C状态,所述I2C状态包括数据传输开始、数据传输延续、数据传输结束、确认ACK或者未确认NACK中的任一种;所述负载的长度大于或等于0比特;
所述通信接口,用于向第二设备发送所述数据包。
2.如权利要求1所述的通信装置,其特征在于,所述第一字段的取值包括以下几种取值中的一种或多种:
第一值,用于指示所述I2C状态为所述数据传输开始;
第二值,用于指示所述I2C状态为所述数据传输延续;
第三值,用于指示所述I2C状态为所述数据传输结束;
第四值,用于指示所述I2C状态为所述ACK;
第五值,用于指示所述I2C状态为所述NACK。
3.如权利要求1或2所述的通信装置,其特征在于,所述第一字段指示所述I2C状态为所述数据传输开始,所述负载中承载有从设备Slave地址和读/写标志。
4.如权利要求3所述的通信装置,其特征在于,所述Slave地址通过7bit指示,所述读/写标志通过1bit指示。
5.如权利要求1或2所述的通信装置,其特征在于,所述第一字段指示所述I2C状态为所述数据传输延续,所述负载中承载有I2C数据。
6.如权利要求1-5中任一项所述的通信装置,其特征在于,所述包头包括第二字段,所述第二字段用于识别I2C接口。
7.如权利要求6所述的通信装置,其特征在于,所述第二字段用于指示所述数据包所属流的流标识ID,所述流ID与至少一个I2C接口对应。
8.如权利要求1-7中任一项所述的通信装置,其特征在于,所述包头还包括第三字段,所述第三字段用于指示所述数据包为基于所述I2C的数据包。
9.如权利要求8所述的通信装置,其特征在于,所述第三字段包括第四字段和第五字段,其中,所述第四字段通过第二预设值指示所述数据包的封装业务类型为控制业务,所述第五字段通过第三预设值指示所述数据包的数据格式为I2C数据。
10.一种通信装置,其特征在于,所述通信装置包括:
至少一个处理器;以及与所述至少一个处理器通信连接的通信接口;
所述通信接口,用于接收来自第一设备的数据包,其中,所述数据包中包括包头和负载,所述包头包括第一字段,所述第一字段用于指示I2C状态,所述I2C状态包括数据传输开始、数据传输延续、数据传输结束、确认ACK或者未确认NACK中的任一种;所述负载的长度大于或等于0比特;
所述至少一个处理器,用于根据所述第一字段确定所述I2C状态。
11.如权利要求10所述的通信装置,其特征在于,所述第一字段的取值包括以下几种取值中的一种或多种:
第一值,用于指示所述I2C状态为所述数据传输开始;
第二值,用于指示所述I2C状态为所述数据传输延续;
第三值,用于指示所述I2C状态为所述数据传输结束;
第四值,用于指示所述I2C状态为所述ACK;
第五值,用于指示所述I2C状态为所述NACK。
12.如权利要求10或11所述的通信装置,其特征在于,所述第一字段指示所述I2C状态为所述数据传输开始,所述负载中承载有从设备Slave地址和读/写标志;
所述处理模块还用于:
在至少一个I2C接口上产生一个开始状态;
将所述Slave地址、读/写标志通过所述至少一个I2C接口发送至对应于所述Slave地址的从设备。
13.如权利要求12所述的通信装置,其特征在于,所述Slave地址通过7bit指示,所述读/写标志通过1bit指示。
14.如权利要求10或11所述的通信装置,其特征在于,所述第一字段指示所述I2C状态为所述数据传输延续,所述负载中承载有I2C数据;
所述处理模块还用于:
将所述I2C数据通过至少一个I2C接口发送至对应于Slave地址的从设备。
15.如权利要求10-14中任一项所述的通信方法,其特征在于,所述包头包括第二字段,所述第二字段用于识别I2C接口。
16.如权利要求15所述的通信装置,其特征在于,所述第二字段用于指示所述数据包所属流的流标识ID,所述流ID与至少一个I2C接口对应。
17.如权利要求10-16中任一项所述的通信装置,其特征在于,所述包头还包括第三字段,所述第三字段用于指示所述数据包为基于所述I2C的数据包。
18.如权利要求17所述的通信装置,其特征在于,所述第三字段包括第四字段和第五字段,其中,所述第四字段通过第二预设值指示所述数据包的封装业务类型为控制业务,所述第五字段通过第三预设值指示所述数据包的数据格式为I2C数据。
19.一种芯片,其特征在于,包括如权利要求1-9中任一项所述的通信装置,或包括如权利要求10-18中任一项所述的通信装置。
20.一种通信系统,其特征在于,包括如权利要求1-9中任一项所述的通信装置和如权利要求10-18中任一项所述的通信装置。
CN202311181349.5A 2020-09-17 2020-09-17 一种基于内部集成电路的通信方法及装置 Pending CN117220835A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311181349.5A CN117220835A (zh) 2020-09-17 2020-09-17 一种基于内部集成电路的通信方法及装置

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
PCT/CN2020/115996 WO2022056793A1 (zh) 2020-09-17 2020-09-17 一种基于内部集成电路的通信方法及装置
CN202080104981.8A CN116097235B (zh) 2020-09-17 2020-09-17 一种基于内部集成电路的通信方法及装置
CN202311181349.5A CN117220835A (zh) 2020-09-17 2020-09-17 一种基于内部集成电路的通信方法及装置

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
CN202080104981.8A Division CN116097235B (zh) 2020-09-17 2020-09-17 一种基于内部集成电路的通信方法及装置

Publications (1)

Publication Number Publication Date
CN117220835A true CN117220835A (zh) 2023-12-12

Family

ID=80777349

Family Applications (2)

Application Number Title Priority Date Filing Date
CN202311181349.5A Pending CN117220835A (zh) 2020-09-17 2020-09-17 一种基于内部集成电路的通信方法及装置
CN202080104981.8A Active CN116097235B (zh) 2020-09-17 2020-09-17 一种基于内部集成电路的通信方法及装置

Family Applications After (1)

Application Number Title Priority Date Filing Date
CN202080104981.8A Active CN116097235B (zh) 2020-09-17 2020-09-17 一种基于内部集成电路的通信方法及装置

Country Status (8)

Country Link
US (1) US20230222085A1 (zh)
EP (1) EP4202707A4 (zh)
JP (1) JP2023541308A (zh)
KR (1) KR20230066467A (zh)
CN (2) CN117220835A (zh)
BR (1) BR112023004807A2 (zh)
CA (1) CA3193105A1 (zh)
WO (1) WO2022056793A1 (zh)

Family Cites Families (22)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4669008B2 (ja) * 2004-11-24 2011-04-13 クゥアルコム・インコーポレイテッド バッファを更新するための方法及びシステム
WO2006117753A1 (en) * 2005-04-29 2006-11-09 Koninklijke Philips Electronics, N.V. Dynamic 12c slave device address decoder
ATE459052T1 (de) * 2005-04-29 2010-03-15 Nxp Bv Einrichtungsidentifikationscodierung integrierter slave-schaltungseinrichtungen
CN101689130A (zh) * 2006-12-06 2010-03-31 弗森多系统公司(dba弗森-艾奥) 采用渐进raid存储数据的装置、系统和方法
CN102025565B (zh) * 2010-12-07 2012-12-19 美的集团有限公司 一种用于多个设备之间的i2c总线通讯检测方法
CN103163849B (zh) * 2011-12-15 2015-05-13 财团法人车辆研究测试中心 电动车运行资料汇集系统
US9594536B2 (en) * 2011-12-29 2017-03-14 Ati Technologies Ulc Method and apparatus for electronic device communication
CN102914427B (zh) * 2012-10-14 2015-05-20 北京工业大学 一种多轴随机载荷下疲劳损伤评估方法
US9710423B2 (en) * 2014-04-02 2017-07-18 Qualcomm Incorporated Methods to send extra information in-band on inter-integrated circuit (I2C) bus
CN103914427B (zh) * 2014-04-14 2016-08-31 中国人民解放军国防科学技术大学 基于三根物理互连线的集成电路片上通讯方法及装置
KR102320407B1 (ko) * 2015-06-05 2021-11-03 삼성전자주식회사 I2c 통신 모듈을 포함하는 컴퓨팅 장치 및 그것의 통신 에러 복구 방법
US10959644B2 (en) * 2016-03-24 2021-03-30 Bend Labs Inc. Compliant sensors for force sensing
CN106681953B (zh) * 2016-12-09 2020-04-10 合肥杰发科技有限公司 使用i2c总线与主机连接的从机及其通信方法
CN106959935B (zh) * 2017-03-13 2020-08-04 苏州浪潮智能科技有限公司 一种兼容i2c通信与ipmb通信的方法
US20180357199A1 (en) * 2017-06-12 2018-12-13 Qualcomm Incorporated Slave-to-slave communication in i3c bus topology
JP6953226B2 (ja) * 2017-08-04 2021-10-27 ソニーセミコンダクタソリューションズ株式会社 通信装置、通信方法、プログラム、および、通信システム
US20190050366A1 (en) * 2017-08-14 2019-02-14 Qualcomm Incorporated Device, event and message parameter association in a multi-drop bus
US10863494B2 (en) * 2018-01-22 2020-12-08 Apple Inc. Control signaling for uplink multiple input multiple output, channel state information reference signal configuration and sounding reference signal configuration
WO2019191996A1 (zh) * 2018-04-04 2019-10-10 华为技术有限公司 一种数据传输方法及设备
TWI685259B (zh) * 2019-02-13 2020-02-11 瑞昱半導體股份有限公司 應用在主裝置與從裝置之間的資料傳輸及處理方法、應用於從裝置的資料處理方法、以及用於資料處理的從裝置
CN109941315B (zh) * 2019-03-29 2021-05-18 上海仁童电子科技有限公司 一种数据处理装置及方法
CN111124979B (zh) * 2019-10-31 2021-07-06 苏州浪潮智能科技有限公司 一种基于堆栈结构的i2c多主访问方法和系统

Also Published As

Publication number Publication date
CN116097235A (zh) 2023-05-09
WO2022056793A1 (zh) 2022-03-24
BR112023004807A2 (pt) 2023-04-18
CA3193105A1 (en) 2022-03-24
US20230222085A1 (en) 2023-07-13
EP4202707A1 (en) 2023-06-28
KR20230066467A (ko) 2023-05-15
JP2023541308A (ja) 2023-09-29
EP4202707A4 (en) 2023-08-23
CN116097235B (zh) 2023-08-04

Similar Documents

Publication Publication Date Title
CN110083088B (zh) 信号控制转换装置以及信号控制转换方法
US7826479B2 (en) Communication message conversion device, communication method and communication system
US20070140294A1 (en) Communication message conversion apparatus and communication message conversion method
CN113396565B (zh) 一种控制方法及装置
CN113287329B (zh) 一种数据传输的方法及装置
CN113498596B (zh) 一种基于PCIe的数据传输方法及装置
US20210184973A1 (en) Vehicle gateway and method of controlling the same
EP2618544A1 (en) Ethernet communication system and method based on mmc/sd interface
WO2022205256A1 (zh) 一种数据传输的方法及装置
CN111552268A (zh) 一种车辆远程诊断方法、设备连接器及车辆连接器
CN113498510A (zh) 一种PCIe的数据传输方法及装置
CN116097235B (zh) 一种基于内部集成电路的通信方法及装置
US10389553B2 (en) Communication bridge between bus networks
CN113498597B (zh) 一种基于PCIe的数据传输方法及装置
CN112367236A (zh) Lin总线的数据调度方法及系统
CN110719408B (zh) 一种车载高清摄像头通讯方法
CN113196720B (zh) 数据处理方法及传输设备、数据处理系统
US20210366333A1 (en) Display panel driving apparatus
CN112384904B (zh) 经由点对点连接捆绑两个数据通道的装置和方法及其使用
Manoj et al. Automotive Networks: A Review
US20230224349A1 (en) Image transmission method and apparatus
US20220374376A1 (en) Memory mapping of legacy i/f protocols over tdd
CN114667715B (zh) 中继装置、通信网络系统以及通信控制方法
CN108664428B (zh) 一种基于fpga的通信方法以及fpga控制器和usb适配器
US9298656B2 (en) Data transferring apparatus and data transferring method

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