CN113906402B - 集成电路间(i2c)装置 - Google Patents

集成电路间(i2c)装置 Download PDF

Info

Publication number
CN113906402B
CN113906402B CN202080040340.0A CN202080040340A CN113906402B CN 113906402 B CN113906402 B CN 113906402B CN 202080040340 A CN202080040340 A CN 202080040340A CN 113906402 B CN113906402 B CN 113906402B
Authority
CN
China
Prior art keywords
pin
clock
data
slave
signal
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
CN202080040340.0A
Other languages
English (en)
Other versions
CN113906402A (zh
Inventor
S.弗内卡尔
V.埃勒
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.)
Ams International AG
Original Assignee
Ams International AG
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 Ams International AG filed Critical Ams International AG
Publication of CN113906402A publication Critical patent/CN113906402A/zh
Application granted granted Critical
Publication of CN113906402B publication Critical patent/CN113906402B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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
    • 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
    • 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/4063Device-to-bus coupling
    • G06F13/4068Electrical coupling
    • G06F13/4072Drivers or receivers
    • 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/4022Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network

Abstract

一种I2C装置(100)包括:主设备(102)和两个从设备,它们通过I2C总线连接,由此使用相同的默认设备地址来编程该两个从设备。第一从设备(108)以常规配置连接到总线,而第二从设备(110)以交叉连接配置连接到总线,使得第二从设备的时钟引脚连接到串行数据线,并且第二从设备的数据引脚连接到串行时钟线。响应于第二从设备的数据引脚连接到串行时钟线的检测,第二从设备交换从时钟引脚和数据引脚到第二从设备的处理逻辑的线;以及修改其默认设备地址以确保每个从设备具有唯一的设备地址。

Description

集成电路间(I2C)装置
技术领域
本公开涉及一种集成电路间(I2C)装置。
背景技术
在I2C总线网络中,连接到I2C总线的所有从设备应具有由主设备通信传达的唯一地址。在I2C协议中,如果具有相同地址的两个从设备连接到I2C总线,则未提供成功通信的布建。在此情况下,由于I2C协议的ACK相位,存在总线竞争的可能性。
为克服此协议层级问题,一个已知解决方案是在每个从设备上使用额外引脚,该额外引脚连接到电源轨或接地以根据其与I2C总线的连接而配置从设备。
另一解决方案是在两个从设备外部采用多任务器电路以确保两个从设备中的一个在任何一个时间耦合到I2C总线。
另一解决方案是使制造商为零件提供多个零件编号,唯一差异是其I2C地址。
发明内容
发明人已识别,用于将相同从设备的多个实例连接到I2C总线的已知解决方案存在问题,因为它们(i)需要在从设备上使用额外引脚;(ii)在I2C总线网络中需要额外组件;或(iii)使制造过程变得复杂。
根据本公开的各个方面,提供一种集成电路间(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从设备的设备地址。
根据本公开的另一方面,提供一种计算机可以读存储介质,其包括指令,当该指令由运算设备的处理器执行时,使得该运算设备执行本文中描述的方法中的任一个。
可以在诸如光盘、CD-ROM或DVD-ROM的载体、诸如只读存储器(固件)的被编程存储器或诸如光学或电信号载体的数据载体上提供指令。实施本公开的实施例的程序代码(和/或数据)可以包括以常规程序设计语言(解译或编译)的原始码、目标码或可以执行码(诸如C)或组译程序代码、用于设立或控制ASIC(特定应用集成电路)或FPGA(场可编程门阵列)的程序代码或用于硬件描述语言的程序代码。
从下文中描述的实施例将明白这些以及其他方面。本公开的范围不旨在限于此发明内容或必需解决所提及的任何或所有缺点的实施方式。
附图说明
现将仅通过示例且参考附图描述本公开的些实施例,其中:
图1示出根据本公开的实施例的在集成电路间(I2C)异动之前的I2C装置的示意性框图;
图2示出根据本公开的第一实施例的从设备;
图3a示出由以常规配置连接到I2C总线的从设备的引脚所见的I2C异动;
图3b示出由以交叉连接配置连接到I2C总线的从设备的引脚所见的相同I2C异动;
图4a示出根据本公开的第一实施例的从设备的衬垫开关控制模块;
图4b示出根据本公开的第一实施例的从设备的多任务器级;
图5a示出根据本公开的第二实施例的从设备;
图5b示出根据本公开的第二实施例的从设备的多任务器级;
图6示出例示性时序逻辑;以及
图7示出根据本公开的实施例的在集成电路间(I2C)异动之后的I2C装置的示意性框图。
应了解,相同参考标记用于识别在图的一个或多个中示出的相同组件。
具体实施方式
一般言之,本公开使使用相同默认设备地址编程的两个从设备(例如,相同从设备的多个实例)能够连接到相同I2C总线而无需任何外部组件。
在附图中给出解决方案的一些实例。
图1示出集成电路间(I2C)装置100。I2C装置包括连接到I2C总线的I2C主设备102。I2C主设备102可以为例如微处理器或微控制器。I2C总线是双向双线串行总线,其包括用于发送时钟脉冲的串行时钟线(SCL)104和用于连续发送数据的串行数据线(SDA)106。
在本公开的实施例中,从设备布置107耦合到I2C总线。从设备布置107包括两个I2C从设备。
如图1所示,从设备布置107包括通过I2C总线与I2C主设备102可通信地连接的第一I2C从设备108。第一I2C从设备108以常规配置连接到I2C总线,由此第一I2C从设备108的时钟引脚(SCL)连接到串行时钟线104且第一I2C从设备108的数据引脚(SDA)连接到串行数据线106。
从设备布置107还包括通过I2C总线与I2C主设备102可通信地连接的第二I2C从设备110。第二I2C从设备110的时钟引脚(SCL)连接到串行数据线106且第二I2C从设备110的数据引脚(SDA)连接到串行时钟线104。我们将本文中的此配置称为“交叉连接”配置。
从设备的“引脚”在本文中也被称为“衬垫”。
图1示出在I2C总线上的任何I2C异动之前的第一I2C从设备108和第二I2C从设备110的设备地址。如图1所示,在制造时,被编程到第一I2C从设备108中的地址值(X)与被编程到第二I2C从设备110中的地址值(X)相同。第一I2C从设备108和第二I2C从设备110中的一个或两个可以是传感器设备(例如,接近传感器、加速度计、陀螺仪、温度传感器、磁力计、光传感器等)。然而,本公开的实施例不限于第一I2C从设备108和第二I2C从设备110中的任一个是传感器设备。
在一些实施例中,第一I2C从设备108和第二I2C从设备110是相同从设备的两个实例(即,它们具有相同的零件编号)。这在图1中示出。例如,在耳塞应用的内容脉络中,需要两个接近设备实例连接到相同的I2C总线。在耳塞示例中,单个耳塞包括图1所示的装置100。
设备并入I2C装置100。该设备不限于耳塞。该设备可以是例如移动电话、平板计算机或其他移动计算设备。该设备可以是例如可穿戴设备(例如,智能手表或头戴式设备,诸如智能眼镜)。
具有不同于从设备布置107的从设备的地址值的一个或多个额外从设备也可以耦合到I2C总线。例如,图1示出具有被编程到其中的地址值(A)的额外从设备(I2C Slave2)112。
根据I2C协议,连接到I2C总线的每个从设备必须具有唯一地址。本文中描述的第二I2C从设备110的功能性解决此问题。
图2示出根据第一配置的示例从设备200。参考图1,第二I2C从设备110具有下文描述的从设备200的功能性。第一I2C从设备108也可以具有下文描述的从设备200的功能性。
如图2所示,从设备200具有时钟引脚(SCL)201和数据引脚(SDA)203。
时钟引脚201耦合到SCL输出驱动器电路202和SCL衬垫延迟以及滤波器电路204。SCL输出驱动器电路202将来自I2C协议从属逻辑236的逻辑0/1值转换为I2C总线上的I2C定义电压电平。SCL衬垫延迟和滤波器电路204反向操作,从而将I2C总线电压转换为0/1的内部逻辑电平。SCL衬垫延迟和滤波器电路204可以执行滤波以抑制I2C总线上的任何电压突波和/或将延迟引入到信号转变。经由时钟引脚201(scl_out)传输的输出信号在经由时钟引脚201输出到I2C总线上之前传递通过SCL输出驱动器电路202。经由时钟引脚201(scl_in)接收的输入信号传递通过SCL衬垫延迟和滤波器电路204并且在连接206上输出到时钟线识别模块205和衬垫开关控制模块222。
数据引脚203耦合到SDA输出驱动器电路212和SDA衬垫延迟以及滤波器电路214。SDA输出驱动器电路212将来自I2C协议从属逻辑236的逻辑0/1值转换为I2C总线上的I2C定义电压电平。SDA衬垫延迟和滤波器电路214反向操作,从而将I2C总线电压转换为0/1的内部逻辑电平。SDA衬垫延迟和滤波器电路214可以执行滤波以抑制I2C总线上的任何电压突波和/或将延迟引入到信号转变。经由数据引脚203(sda_out)传输的输出信号在经由数据引脚203输出到I2C总线上之前传递通过SDA输出驱动器电路212。经由数据引脚(sda_in)接收的输入信号传递通过SDA衬垫延迟和滤波器电路214并且在连接216上输出到时钟线识别模块205和衬垫开关控制模块222。
时钟线识别模块205被配置为检测是从设备的时钟引脚还是数据引脚连接到串行时钟线104。时钟线识别模块205可以各种方式实施。在图2所示一个示例实施方式。
如图2所示,时钟线识别模块205包括第一边缘计数器208,其接收连接206上的scl_in信号作为输入。第一边缘计数器208被配置为对经由时钟引脚201接收的信号(scl_in)的边缘进行计数。第一边缘计数器208可以是例如正边缘计数器。
时钟线识别模块205也包括第二边缘计数器218,其接收连接216上的sda_in信号作为输入。第二边缘计数器218被配置为对经由数据引脚203接收的信号(sda_in)的边缘进行计数。第二边缘计数器218可以是例如正边缘计数器。
第一边缘计数器208的输出作为输入耦合到加法器和比较器210(见输入“A”)。第二边缘计数器218的输出也作为输入耦合到加法器和比较器210(见输入“B”)。
加法器和比较器210用于对由第一边缘计数器208获得的计数A与由第二边缘计数器218获得的计数B进行求和,并且在总和超过预定阈值计数时将逻辑高值作为输出提供到衬垫开关控制模块222。直到满足此条件,加法器和比较器210才将逻辑低值输出到衬垫开关控制模块222。预定阈值计数可以被设定为例如(至少)两个计数(即,最少要求总和等于三个计数)。在一个示例中,预定阈值计数被设定为七个计数(要求总和等于八个计数)。
第一边缘计数器208的输出也作为输入耦合到比较器220(见输入“A”)。第二边缘计数器218的输出也作为输入耦合到比较器220(见输入“B”)。
比较器220比较由第一边缘计数器208获得的计数A与由第二边缘计数器218获得的计数B并且确定由第二边缘计数器218获得的计数B是否大于由第一边缘计数器208获得的计数A。
串行时钟线104比串行数据线106更快地转变。因此,如果时钟引脚201连接到串行时钟线104(即,从设备以常规配置耦合到I2C总线),则由第一边缘计数器208获得的计数A将大于由第二边缘计数器218获得的计数B,并且比较器220将输出逻辑低值到衬垫开关控制模块222。在此情形下,经由时钟引脚201接收的输入信号(scl_in)将为输入时钟信号,经由数据引脚203接收的输入信号(sda_in)将为输入数据信号,此外,用于从从设备传输到I2C主设备102的数据输出信号应经由数据引脚203传输。
相比之下,如果数据引脚203连接到串行时钟线104(即,从设备以交叉连接配置耦合到I2C总线),则由第二边缘计数器218获得的计数B将大于由第一边缘计数器208获得的计数A,并且比较器220将输出逻辑高值到衬垫开关控制模块222。在此情形下,经由时钟引脚201接收的输入信号(scl_in)将为输入数据信号,经由数据引脚203接收的输入信号(sda_in)将为输入时钟信号,此外,用于从从设备传输到I2C主设备102的数据输出信号应经由时钟引脚201传输。
如图2所示,衬垫开关控制模块222被布置为接收加法器和比较器210的输出、连接206上的scl_in信号、连接216上的sda_in信号以及比较器220的输出作为输入。
衬垫开关控制模块222被配置为控制时钟引脚201与I2C协议从属逻辑236之间的连接。衬垫开关控制模块222也被配置为控制数据引脚203与I2C协议从属逻辑236之间的连接。I2C协议从属逻辑236被配置为处理从I2C主设备102接收和传输到I2C主设备102的数据。I2C协议从属逻辑236被布置为从I2C协议从属逻辑236的数据输出端口提供数据输出信号(sda_out),以通过I2C总线传输到I2C主设备102。I2C协议从属逻辑236另外包括用于接收从I2C主设备102传输的数据的数据输入端口(sda_in)以及用于接收从I2C主设备102传输的时钟信号的时钟输入端口(scl_in)。
在示例从设备200中,衬垫开关控制模块222被配置为通过生成在连接226上输出的切换信号(I2C_PAD_SWITCH)并且通过生成在连接224上输出的切换完成信号(I2C_PAD_SWITCH_DONE)来控制时钟引脚201和数据引脚203到I2C协议从属逻辑236之间的各自的连接。
衬垫开关控制模块222将切换信号(I2C_PAD_SWITCH)和切换完成信号(I2C_PAD_SWITCH_DONE)输出到多任务器级228a以控制从设备的时钟引脚201和数据引脚203到I2C协议从属逻辑236的耦合。
在操作中,响应于时钟线识别模块205检测到数据引脚203连接到串行时钟线104(即,从设备以交叉连接配置连接到I2C总线),衬垫开关控制模块222被配置为:(i)控制数据引脚203到I2C协议从属逻辑236的时钟输入端口(scl_in)的耦合,使得经由数据引脚203接收的输入时钟信号被供应到I2C协议从属逻辑236的时钟输入端口(scl_in);以及(ii)控制时钟引脚201到I2C协议从属逻辑236的数据输入端口(sda_in)和I2C协议从属逻辑236的数据输出端口的耦合,使得经由时钟引脚201接收的输入数据信号被供应到I2C协议从属逻辑236的数据输入端口并且经由时钟引脚201传输由I2C协议从属逻辑236输出的数据信号以传输到I2C主设备102。
即,基于时钟线识别,该过程交换从引脚到I2C协议从属逻辑236的线。这意味着,如果数据引脚203连接到串行时钟线104,则衬垫开关控制模块222将交换到I2C协议从属逻辑236的引脚输出作为输入,并且来自I2C协议从属逻辑的sda_out信号将连接到SCL输出驱动器电路202。
在操作中,响应于时钟线识别模块205检测到时钟引脚201被连接到串行时钟线104(即,从设备以常规配置连接到I2C总线),衬垫开关控制模块222被配置为:维持时钟引脚201到I2C协议从属逻辑236的时钟输入端口的耦合,使得经由时钟引脚201接收的输入时钟信号被供应到I2C协议从属逻辑236的时钟输入端口(scl_in);以及(ii)维持数据引脚203到I2C协议从属逻辑236的数据输入端口和I2C协议从属逻辑236的数据输出端口的耦合,使得经由数据引脚203接收的输入数据信号被供应到I2C协议从属逻辑236的数据输入端口和经由数据引脚203传输由I2C协议从属逻辑236输出的数据信号以传输到I2C主设备102。
下文参考图4a和图4b更详细描述在根据第一配置的示例从设备200中实施的衬垫开关控制模块222和多任务器级228a的功能性。
我们首先参考图3a(其示出由以常规配置连接到I2C总线的从设备的引脚所见的I2C异动300)和图3b其示出由以交叉连接配置连接到I2C总线的从设备的引脚所见的相同I2C异动350)。
按照I2C协议,由主设备发起的每个I2C异动以START条件开始且以STOP条件结束。
如图3a所示,按照I2C协议,在当从设备以常规配置连接到I2C总线的I2C异动300中,如果在时钟引脚201SCL上接收的信号304(其在常规配置中将是来自串行时钟线104)为高时,在数据引脚203SDA上接收的信号302(其在常规配置中将是来自串行数据线106)从低变为高(正边缘),则其被称为STOP条件。在本公开中,其被称为pstop(正停止)312。
为了完整性,应注意,在常规配置中,如果在时钟引脚201SCL上接收的信号304(其在常规配置中将是来自串行时钟线104)为高时,在数据引脚203SDA上接收的信号302(其在常规配置中将是来自串行数据线106)从高变为低(负边缘),则其被称为START条件。在本公开中,其被称为pstart(正开始)306。
如图3b所示,当从设备以交叉连接配置连接到I2C总线时,如果在数据引脚203SDA上接收的信号302(其在交叉连接配置中将是来自时钟线104)为高时,在时钟引脚201SCL上接收的信号(其在交叉连接配置中将是来自串行数据线106)从低变为高(正边缘),则检测到相同的STOP条件且其被称为nstop(负停止)310。
为了完整性,应注意,在交叉连接配置中,如果在数据引脚203SDA上接收的信号302(其在交叉连接配置中将是来自时钟线104)为高时,在时钟引脚201SCL上接收的信号(其在交叉连接配置中将是来自串行数据线106)从高变为低(负边缘),则检测到相同的开始条件且其被称为nstart(负开始)308。
应注意,在常规配置中,在一个I2C异动中pstop条件仅被检测一次(即,衬垫连接是否适当:SCL->SCL总线,SDA->SDA总线),且类似地,在交叉连接配置中,在一个I2C异动中nstop条件仅被检测一次(即,衬垫连接是否交换:SCL->SDA总线,SDA->SCL总线)。在pstop或nstop事件之后,I2C总线将在协议指定时间周期内闲置且在I2C总线闲置时完成任何内部衬垫交换是有利的。
图4a示出衬垫交换控制模块222的一个示例配置。
如图4a所示,衬垫交换控制模块222包括第一触发器402(示为D触发器)和第二触发器408(示为D触发器)。加法器和比较器210的输出耦合到第一r触发器402的输入。比较器220的输出耦合到第二触发器408的输入。第一触发器402和第二触发器408两者通过可以由时序逻辑600提供的相同时钟信号驱动(随后更详细描述)。
衬垫开关控制模块222包括nstop检测块404,其在连接206上接收经由时钟引脚201接收的输入信号并且在连接216上接收经由数据引脚203接收的输入信号作为输入。nstop检测块404被配置为在检测到上文描述的nstop条件之后输出逻辑高值。直到检测到nstop条件,nstop检测块404才被配置为输出逻辑低值。
衬垫开关控制模块222还包括pstop检测块410,其在连接206上接收经由时钟引脚201接收的输入信号并且在连接216上接收经由数据引脚203接收的输入信号作为输入。pstop检测块410被配置为在检测到上文描述的pstop条件之后输出逻辑高值。直到检测到pstop条件,pstop检测块404才被配置为输出逻辑低值。
nstop检测块404的输出耦合到多任务器406。多任务器406还接收pstop检测块410的输出作为输入。第二触发器408的输出作为控制输入提供到多任务器406。当第二触发器408的输出为低时,多任务器406被配置为提供pstop检测块410的输出作为多任务器406的输出。当第二触发器408的输出为高时,多任务器406被配置为提供nstop检测块404的输出作为多任务器406的输出。
AND门412接收第一触发器402的输出作为第一输入。AND门412接收多任务器406的输出作为第二输入。AND门412的输出作为时钟信号提供到第三触发器416(示为D触发器)和第四触发器418(示为D触发器)两者。第三触发器416的数据输入被拉高。第三触发器416提供在连接224上输出的切换完成信号(I2C_PAD_SWITCH_DONE)。第二触发器408的输出被供应到第四触发器418的数据输入。第四触发器418提供在连接226上输出的切换信号(I2C_PAD_SWITCH)。
首先将参考从设备200以常规配置连接到I2C总线时(例如,在第一I2C从设备108具有从设备200的功能性时)来描述衬垫开关控制模块222的操作。
在从设备200通电时,切换完成信号(I2C_PAD_SWITCH_DONE)和切换信号(I2C_PAD_SWITCH)具有低值。
加法器和比较器210将对由第一边缘计数器208获得的计数A与由第二边缘计数器218获得的计数B求和,并且在此总和超过预定阈值计数时将逻辑高值作为输出提供到第一触发器402。
串行时钟线104比串行数据线106更快地转变。因此,当从设备200以常规配置连接到I2C总线时,则由第一边缘计数器208获得的计数A将大于由第二边缘计数器218获得的计数B,并且比较器220将输出逻辑低值到第二触发器408。第二触发器408将因此输出逻辑低值。
如上文提及的,第二触发器408的输出作为控制输入提供到多任务器406。具体地,当第二触发器408的输出为低时,多任务器406被配置为提供pstop检测块410的输出作为多任务器406的输出。
当pstop检测块410检测到上文描述的pstop条件时。多任务器406的输出将从低值转变为高值,其被提供到AND门412的第二输入。
AND门412的第一输入也将具有高值,这是因为一旦计数的总和超过预定阈值计数,第一触发器402便输出高值。因此,当检测到pstop条件时,作为时钟信号提供到第三触发器416(示为D触发器)和第四触发器418(示为D触发器)两者的AND门412的输出从低值转变为高值。这使得切换完成信号(I2C_PAD_SWITCH_DONE)的值从低值转变为高值。由于第二触发器408的低输出被供应到第四触发器418的数据输入的事实,切换信号(I2C_PAD_SWITCH)仍具有低值。
如将参考图4b更详细描述,这使得(i)维持时钟引脚201到I2C协议从属逻辑236的时钟输入端口的耦合,使得经由时钟引脚201接收的输入时钟信号被供应到I2C协议从属逻辑236的时钟输入端口(scl_in);以及(ii)维持数据引脚203到I2C协议从属逻辑236的数据输入端口和I2C协议从属逻辑236的数据输出端口的耦合,使得经由数据引脚203接收的输入数据信号被供应到I2C协议从属逻辑236的数据输入端口并且经由数据引脚203传输由I2C协议从属逻辑236输出的数据信号以传输到I2C主设备102。
此外,从设备200保持在制造时被编程到从设备中的地址值作为从设备的设备地址。此通过将切换信号(I2C_PAD_SWITCH)的值作为控制输入供应到多任务器229而被控制(图4a所示)。
当切换信号(I2C_PAD_SWITCH)为低时,多任务器229被配置为在连接234上将在制造时被编程到从设备中的地址值230提供到I2C协议从属逻辑236以用作从设备的设备地址。当切换信号(I2C_PAD_SWITCH)为高时,多任务器229被配置为在连接234上将经修改的设备地址232提供到I2C协议从属逻辑236以用作从设备的设备地址。当从设备200以常规配置连接到I2C总线时,切换信号(I2C_PAD_SWITCH)为低,因此,从设备200保持在制造时被编程到从设备中的地址值作为从设备的设备地址。
现将参考从设备200以交叉连接配置连接到I2C总线时(例如,在第二I2C从设备110具有从设备200的功能性时)来描述衬垫开关控制模块222的操作。
如上文提及的,在从设备200通电时,切换完成信号(I2C_PAD_SWITCH_DONE)和切换信号(I2C_PAD_SWITCH)具有低值。
加法器和比较器210将对由第一边缘计数器208获得的计数A与由第二边缘计数器218获得的计数B求和,并且在此总和超过预定阈值计数时将逻辑高值作为输出提供到第一触发器402。
串行时钟线104比串行数据线106更快地转变。因此,当从设备200以交叉连接配置连接到I2C总线时,则由第二边缘计数器218获得的计数B将大于由第一边缘计数器208获得的计数A,并且比较器220将输出逻辑高值到第二触发器408。第二触发器408将因此输出逻辑高值。
如上文提及的,第二触发器408的输出作为控制输入提供到多任务器406。具体地,当第二触发器408的输出为高时,多任务器406被配置为提供nstop检测块404的输出作为多任务器406的输出。
当nstop检测块404检测到上文描述的nstop条件时。多任务器406的输出将从低值转变为高值,其被提供到AND门412的第二输入。
AND门412的第一输入也将具有高值,这是因为一旦计数的总和超过预定阈值计数,第一触发器402便输出高值。因此,当检测到nstop条件时,作为时钟信号提供到第三触发器416(示为D触发器)和第四触发器418(示为D触发器)两者的AND门412的输出从低值转变为高值。这使得切换完成信号(I2C_PAD_SWITCH_DONE)的值从低值转变为高值。由于第二触发器408的高输出被供应到第四触发器418的数据输入的事实,切换信号(I2C_PAD_SWITCH)也从低值转变为高值。
如将参考图4b更详细描述,这使得(i)数据引脚203耦合到I2C协议从属逻辑236的时钟输入端口(scl_in),使得经由数据引脚203接收的输入时钟信号被供应到I2C协议从属逻辑236的时钟输入端口(scl_in);以及(ii)时钟引脚201耦合到I2C协议从属逻辑236的数据输入端口(sda_in)和I2C协议从属逻辑236的数据输出端口,使得经由时钟引脚201接收的输入数据信号被供应到I2C协议从属逻辑236的数据输入端口并且经由时钟引脚201传输由I2C协议从属逻辑236输出的数据信号以传输到I2C主设备102。
此外,从设备200通过修改被编程到从设备中的地址值来配置从设备的设备地址。这通过将切换信号(I2C_PAD_SWITCH)的值作为控制输入供应到多任务器229而被控制(图4a所示)。
当从设备200以交叉连接配置连接到I2C总线时,切换信号(I2C_PAD_SWITCH)为高且多任务器229被配置为将经修改的设备地址232提供到I2C协议从属逻辑236以用作从设备的设备地址。具体地,从设备200修改在制造时被编程到从设备中的地址值以生成从设备的新设备地址。这确保第二I2C从设备110按照I2C协议具有唯一设备地址。如将了解的,此修改可以多种不同方式执行,使得第一I2C从设备108和第二I2C从设备110具有不同的设备地址。例如,从设备200可以使被编程到从设备中的地址值增量一整数值(例如,1)以生成从设备的新设备地址。替代地,从设备200可以使被编程到从设备中的地址值减量一整数值(例如,1)以生成从设备的新设备地址。将了解,对被编程到从设备中的地址值的其他修改也是可行的。
我们现参考图4b更详细地描述在根据第一配置的从设备200中使用的多任务器级228a。
在根据第一配置的从设备200中使用的多任务器级228a可以响应于切换信号(I2C_PAD_SWITCH)和切换完成信号(I2C_PAD_SWITCH_DONE)两者来配置。
如图4b所示,多任务器级228a接收切换信号(I2C_PAD_SWITCH)和切换完成信号(I2C_PAD_SWITCH_DONE)两者。
多任务器级228a包括第一多任务器层级,其具有四个多任务器:多任务器451、多任务器453、多任务器455和多任务器457。第一层级中的每个多任务器接收切换信号(I2C_PAD_SWITCH)作为控制输入。
多任务器级228a还包括第二多任务器层级,其具有四个多任务器:多任务器452、多任务器454、多任务器456和多任务器458。第二层级中的每个多任务器接收切换完成信号(I2C_PAD_SWITCH_DONE)作为控制输入。
如图4b所示,多任务器451接收经由时钟引脚201接收的输入信号(scl_in)和经由数据引脚203接收的输入信号(sda_in)。当切换信号(I2C_PAD_SWITCH)具有低值时,多任务器451输出经由时钟引脚201接收的输入信号(scl_in)。当切换信号(I2C_PAD_SWITCH)具有高值时,多任务器451输出经由数据引脚203接收的输入信号(sda_in)。多任务器451的输出耦合到多任务器452的输入且到多任务器452的另一输入被拉高。多任务器452的输出耦合到I2C协议从属逻辑236的时钟输入端口(scl_in)。
多任务器453接收经由时钟引脚201接收的输入信号(scl_in)和经由数据引脚203接收的输入信号(sda_in)。当切换信号(I2C_PAD_SWITCH)具有低值时,多任务器451输出经由数据引脚203接收的输入信号(sda_in)。当切换信号(I2C_PAD_SWITCH)具有高值时,多任务器451输出经由时钟引脚201接收的输入信号(scl_in)。多任务器453的输出耦合到多任务器454的输入且到多任务器454的另一输入被拉高。多任务器454的输出耦合到I2C协议从属逻辑236的数据输入端口(sda_in)。
I2C协议从属逻辑236的数据输出端口(sda_out)耦合到多任务器456的第一输入和多任务器458的第一输入。多任务器456的第二输入和多任务器458的第二输入两者被拉高。多任务器456的输出耦合到多任务器455的输入且到多任务器455的另一输入被拉高。多任务器455的输出耦合到SDA输出驱动器电路212的输入。多任务器458的输出耦合到多任务器457的输入且到多任务器457的另一输入被拉高。多任务器457的输出耦合到SCL输出驱动器电路202的输入。
如上文提及的,在从设备200通电时,切换完成信号(I2C_PAD_SWITCH_DONE)和切换信号(I2C_PAD_SWITCH)具有低值。
如从图4b可以见,多任务器级228a被布置为使得当切换完成信号(I2C_PAD_SWITCH_DONE)为低(第一值)时,通过预设,从设备的所有内部输出和输入信号(到/从I2C协议从属逻辑236)被束缚到逻辑高值且防止切换信号(I2C_PAD_SWITCH)配置多任务器级228a。当切换完成信号(I2C_PAD_SWITCH_DONE)为高(第二值)时,切换信号的值能够配置多任务器级。
当从设备200以常规配置连接到I2C总线时,响应于pstop条件的检测,切换信号(I2C_PAD_SWITCH)保持低且切换完成信号(I2C_PAD_SWITCH_DONE)从低值转变为高值。
这使得:
-经由时钟引脚201接收的输入信号(scl_in)由多任务器451输出且接着由多任务器452输出,使得经由时钟引脚201接收的输入信号(scl_in)被供应到I2C协议从属逻辑236的时钟输入端口(scl_in);
-经由数据引脚203接收的输入信号(sda_in)由多任务器453输出且接着由多任务器454输出,使得经由数据引脚203接收的输入信号(sda_in)被供应到I2C协议从属逻辑236的数据输入端口(sda_in);以及
-从I2C协议从属逻辑236的数据输出端口(sda_out)输出的数据信号从多任务器456输出且接着由多任务器455输出,使得数据信号被供应到数据引脚203以输出到串行数据线106上。
这些改变在I2C总线闲置时(在pstop条件检测之后)实施。
当从设备200以交叉连接配置连接到I2C总线时,响应于nstop条件的检测,切换信号(I2C_PAD_SWITCH)和切换完成信号(I2C_PAD_SWITCH_DONE)两者从低值转变为高值。
这使得:
-经由数据引脚203接收的输入信号(sda_in)由多任务器451输出且接着由多任务器452输出,使得经由数据引脚203接收的输入信号(sda_in)被供应到I2C协议从属逻辑236的时钟输入端口(scl_in);
-经由时钟引脚201接收的输入信号(scl_in)由多任务器453输出且接着由多任务器454输出,使得经由时钟引脚201接收的输入信号(scl_in)被供应到I2C协议从属逻辑236的数据输入端口(sda_in);以及
-从I2C协议从属逻辑236的数据输出端口(sda_out)输出的数据信号从多任务器458输出且接着由多任务器457输出,使得数据信号被供应到时钟引脚201以输出到串行数据线106上。
这些改变在I2C总线闲置时(在nstop条件检测之后)实施。
根据上文描述的第一配置的从设备200在通电之后需要I2C异动以开始使用其设备地址对来自I2C主设备102的I2C异动作出响应。具体地,在其中第一I2C从设备108和第二I2C从设备110两者都具有本文中描述的从设备200的功能性(例如,它们是相同从设备的多个实例)的实施例中,在通电之后,两个I2C从设备都需要一个I2C异动以开始使用其各自的设备地址对来自I2C主设备102的I2C异动作出响应。
此所需的I2C异动可以是例如I2C主设备102与连接到I2C总线的I2C从设备(其并非从设备布置107的部分)之间(例如,I2C主设备102与额外从设备112之间)的I2C异动。即,所需的I2C异动未寻址到第一I2C从设备108或第二I2C从设备110中的任一个。替代地,所需的I2C异动可以是I2C主设备102与第一I2C从设备108或第二I2C从设备110之间的虚设I2C异动。
在使用根据上文描述的第一配置的从设备200时,不存在I2C协议从属逻辑236的任何时序失效或不当行为的风险。
图5a示出根据第二配置的示例从设备500。参考图1,第二I2C从设备110具有下文描述的从设备500的功能性。第一I2C从设备108也可以具有下文描述的从设备500的功能性。
根据第二配置的示例从设备500与上文描述的从设备200的不同之处在于衬垫开关控制模块222和多任务器级228的实施。
如图5a所示,AND门412的输出被提供到单一的触发器418(示为D触发器),从设备200的第三触发器416不存在。
在示例从设备500中,衬垫开关控制模块222被配置为通过生成在连接226上输出的切换信号(I2C_PAD_SWITCH)而控制时钟引脚201和数据引脚203到I2C协议从属逻辑236之间的各个连接。与从设备200相比,根据第二配置,切换完成信号(I2C_PAD_SWITCH_DONE)并非由衬垫开关控制模块222输出。
衬垫开关控制模块222将切换信号(I2C_PAD_SWITCH)输出到多任务器级228b以控制从设备的时钟引脚201和数据引脚203到I2C协议从属逻辑236的耦合。
在操作中,响应于时钟线识别模块205检测到数据引脚203连接到串行时钟线104(即,从设备以交叉连接配置连接到I2C总线),衬垫开关控制模块222被配置为:(i)控制数据引脚203到I2C协议从属逻辑236的时钟输入端口(scl_in)的耦合,使得经由数据引脚203接收的输入时钟信号被供应到I2C协议从属逻辑236的时钟输入端口(scl_in);以及(ii)控制时钟引脚201到I2C协议从属逻辑236的数据输入端口(sda_in)和I2C协议从属逻辑236的数据输出端口的耦合,使得经由时钟引脚201接收的输入数据信号被供应到I2C协议从属逻辑236的数据输入端口且经由时钟引脚201传输由I2C协议从属逻辑236输出的数据信号以传输到I2C主设备102。
即,基于时钟线识别,该程序交换从引脚到I2C协议从属逻辑236的线。这意味着,如果数据引脚203连接到串行时钟线104,则衬垫开关控制模块222将交换到I2C协议从属逻辑236的引脚输出作为输入,且来自I2C协议从属逻辑的sda_out信号将连接到SCL输出驱动器电路202。
在操作中,响应于时钟线识别模块205检测到时钟引脚201连接到串行时钟线104(即,从设备以常规配置连接到I2C总线),衬垫开关控制模块222被配置为:维持时钟引脚201到I2C协议从属逻辑236的时钟输入端口的耦合,使得经由时钟引脚201接收的输入时钟信号被供应到I2C协议从属逻辑236的时钟输入端口(scl_in);以及(ii)维持数据引脚203到I2C协议从属逻辑236的数据输入端口和I2C协议从属逻辑236的数据输出端口的耦合,使得经由数据引脚203接收的输入数据信号被供应到I2C协议从属逻辑236的数据输入端口且经由数据引脚203传输由I2C协议从属逻辑236输出的数据信号以传输到I2C主设备102。
下文参考图5b更详细地描述在根据第二配置的示例从设备500中实施的多任务器级228b的功能性。
在根据第二配置的从设备500中使用的多任务器级228b可以仅响应于切换信号(I2C_PAD_SWITCH)而配置。
多任务器级228a包括单一多任务器层级,其具有四个多任务器:多任务器551、多任务器552、多任务器553和多任务器554。此单一层级中的每个多任务器接收切换信号(I2C_PAD_SWITCH)作为控制输入。
如图5b所示,多任务器551接收经由时钟引脚201接收的输入信号(scl_in)和经由数据引脚203接收的输入信号(sda_in)。多任务器551的输出耦合到I2C协议从属逻辑236的时钟输入端口(scl_in)。
多任务器552接收经由时钟引脚201接收的输入信号(scl_in)和经由数据引脚203接收的输入信号(sda_in)。多任务器552的输出耦合到I2C协议从属逻辑236的数据输入端口(sda_in)。
I2C协议从属逻辑236的数据输出端口(sda_out)耦合到多任务器553的第一输入和多任务器554的第一输入。多任务器553的第二输入和多任务器554的第二输入两者被拉高。多任务器553的输出耦合到SDA输出驱动器电路212的输入。多任务器554的输出耦合到SCL输出驱动器电路202的输入。
在从设备500通电时,切换信号(I2C_PAD_SWITCH)具有低值。
这使得:
-经由时钟引脚201接收的输入信号(scl_in)由多任务器551输出,使得经由时钟引脚201接收的输入信号(scl_in)被供应到I2C协议从属逻辑236的时钟输入端口(scl_in);
-经由数据引脚203接收的输入信号(sda_in)由多任务器552输出,使得经由数据引脚203接收的输入信号(sda_in)被供应到I2C协议从属逻辑236的数据输入端口(sda_in);以及
-从I2C协议从属逻辑236的数据输出端口(sda_out)输出的数据信号从多任务器553输出,使得数据信号被供应到数据引脚203以输出到串行数据线106上。
当从设备500以常规配置连接到I2C总线时,响应于pstop条件的检测,切换信号(I2C_PAD_SWITCH)保持低,这导致多任务器级228a的上述状态不改变。
在此情形下,在通电之后,从设备500能够立即处置寻址到它的任何I2C异动。
当从设备500以交叉连接配置连接到I2C总线时,响应于nstop条件的检测,切换信号(I2C_PAD_SWITCH)从低值转变为高值。
这使得:
-经由数据引脚203接收的输入信号(sda_in)由多任务器551输出,使得经由数据引脚203接收的输入信号(sda_in)被供应到I2C协议从属逻辑236的时钟输入端口(scl_in);
-经由时钟引脚201接收的输入信号(scl_in)由多任务器552输出,使得经由时钟引脚201接收的输入信号(scl_in)被供应到I2C协议从属逻辑236的数据输入端口(sda_in);以及
-从I2C协议从属逻辑236的数据输出端口(sda_out)输出的数据信号从多任务器554输出,使得数据信号被供应到时钟引脚201以输出到串行数据线106上。
在此情形下,在通电之后,从设备500需要I2C异动以开始使用其设备地址对来自I2C主设备102的I2C异动作出响应。具体地,在其中第一I2C从设备108和第二I2C从设备110两者都具有本文中描述的从设备200的功能性(例如,它们是相同从设备的多个实例)的实施例中,在通电之后,两个I2C从设备都需要一个I2C异动以开始使用其各自的设备地址对来自I2C主设备102的I2C异动作出响应。如上文说明,此所需的I2C异动可以是例如I2C主设备102与连接到I2C总线的I2C从设备(其并非从设备布置107的部分)之间的I2C异动或I2C主设备102与第一I2C从设备108或第二I2C从设备110之间的虚设I2C异动。
根据第二配置的从设备500的I2C协议从属逻辑236应经仔细设计以应对时序违规。具体地,在交叉连接配置中,I2C协议从属逻辑236的时钟输入端口(scl_in)将从串行数据线106接收数据。类似地,I2C协议从属逻辑236的数据输入端口(sda_in)将从串行时钟线104接收时钟信号。由于此互换关系,I2C协议从属逻辑236应被设计为免进入非所要的状态。
在根据第一配置的从设备200和根据第二配置的从设备500两者中,第一触发器402和第二触发器408由相同时钟信号驱动。此时钟信号可以由时序逻辑600提供,它的示例在图6所示。
鉴于基于经由时钟引脚201接收的输入信号(scl_in)和经由数据引脚203接收的输入信号(sda_in)(即,时钟信号和数据信号,而无关于从设备如何连接到I2C总线)控制第一触发器402和第二触发器408中每一个的输入,提供时序逻辑600以满足第一触发器402和第二触发器408的时序要求。
图6示出可以实施时序逻辑600的一种方式,然而,其他实施方式是可行的。图6所示的示例时序逻辑600接收经由时钟引脚201接收的输入信号(scl_in)和经由数据引脚203接收的输入信号(sda_in)作为输入。在第一分支602中,输入信号(sda_in)在作为第一输入供应到第一AND门之前被反相和延迟,第一AND门也接收输入信号(sda_in)作为第二输入。在第一分支602中,输入信号(scl_in)在作为第一输入供应到第二AND门之前被反相和延迟,第二AND门也接收输入信号(scl_in)作为第二输入。第一AND门和第二AND门的输出作为各自的输入供应到OR门,该OR门的输出作为第一输入提供到多任务器606。在第二分支604中,经由数据引脚203接收的输入信号(sda_in)被延迟且作为第二输入供应到多任务器606。经由控制信号608控制多任务器606。即,多任务器606的输出将取决于控制信号608的值而是第一分支602的输出或第二分支604的输出。多任务器606可以是一次性可编程设备。多任务器606输出在连接610上被提供到第一触发器402和第二触发器408的时钟输入。
在操作中,存在由控制信号608选择的时钟生成的两种可能性。
当608=0时,被延迟的sda_in信号用作时钟,使得第一触发器402和第二触发器408的D输入在其时钟到达其时钟引脚之前已经确立以应对触发器的设立/保持时序违规。
当608=1时,使用上文说明的相同延迟概念来避免设立/保持时序但添加脉冲生成。在此情况下,scl-in或sda_in信号上的任何低-高转变生成第一触发器402和第二触发器408的时钟脉冲。图7示出在I2C异动之后的I2C装置100的示意性框图。
在未寻址到第一I2C从设备108和第二I2C从设备110(在此示例中,相同从设备的实例)的某一I2C异动或一虚设I2C异动(如果没有其他从设备连接到I2C总线)之后,衬垫交换检测将完成。以常规配置(slave1实例1)连接到I2C总线的第一I2C从设备108将保持其默认地址。但第二I2C从设备110(slave1实例2)引脚被交换,因此其中的逻辑将检测此情形并修改被编程到第二I2C从设备中的地址值,如图7所示。
本公开中描述的技术可以在各种应用中使用。例如,在商业行动业务中,无线耳机将需要将两个I2C从设备连接到相同I2C总线。本公开可以应用于其中两个从设备(例如,相同从设备的两个实例)需要连接在相同I2C总线上的任何应用。
虽然本文中已参考具有专属硬件电路的一个或多个从设备描述了实施例,但本文中描述的从设备的任何功能性可以使用软件、固件、硬件(例如,固定逻辑电路)或这些实施方式的组合实施。如本文中使用的术语“模块”、“功能性”、“级”、“块”和“逻辑”通常表示软件、固件、硬件或它们的组合。在一软件实施方式的情况下,模块、功能性或逻辑表示当在处理器(例如,CPU或如果干CPU)上执行时执行指定任务的程序代码。程序代码可以储存在一个或多个计算机可读存储器设备中。计算机可读存储介质的示例包含随机存取存储器(RAM)、只读存储器(ROM)、光盘、闪存、硬盘存储器和可以使用磁性、光学以及其他技术来储存指令和其他数据的其他存储器设备。
尽管已按照如上文阐述的较佳实施例描述本公开,然应理解,这些实施例仅是阐释性的,并且所要求保护的范围不限于这些实施例。本领域技术人员将能够鉴于本公开做出被认为落入所附权利要求的范围内的修改和替代。本说明书中公开或示出的每个特征可以(无论是单独或以与本文中公开或示出的任何其他特征的任何适当组合)并入任何实施例中。
附图标记
100 集成电路间(I2C)装置
102 I2C主设备102
104 串行时钟线
106 串行数据线
107 从设备布置
108 第一I2C从设备
110 第二I2C从设备
112 额外从设备
200 根据第一配置的从设备
201 时钟引脚
202 SCL输出驱动器电路202
203 数据引脚
204 SCL衬垫延迟和滤波器电路
205 时钟线识别模块
206 连接
208 第一边缘计数器
210 加法器和比较器
212 SDA输出驱动器电路
214 SDA衬垫延迟和滤波器电路
216 连接
218 第二边缘计数器
220 比较器
222 衬垫开关控制模块
224 连接
226 连接
228a 根据第一配置的从设备的多任务器级
228b 根据第二配置的从设备的多任务器级
229 多任务器
230 在制造时被编程到从设备中的地址值
232 经修改的设备地址
234 连接
236 I2C协议从属逻辑
300 由以常规配置连接到I2C总线的从设备的引脚所见的I2C异动
302 在数据引脚上接收的信号
304 在时钟引脚上接收的信号
306 正开始条件
308 负开始条件
310 负停止条件
312 正停止条件
350 由以交叉连接配置连接到I2C总线的从设备的引脚所见的I2C异动
402 第一触发器
404 nstop检测块
406 多任务器
408 第二触发器
410 pstop检测块
412 AND门
416 第三触发器
418 第四触发器
451 多任务器
452 多任务器
453 多任务器
454 多任务器
456 多任务器
457 多任务器
458 多任务器
500 根据第二配置的从设备
551 多任务器
552 多任务器
553 多任务器
554 多任务器
600 时序逻辑
602 第一分支
604 第二分支
606 多任务器
608 控制信号
610 连接

Claims (18)

1.一种集成电路间I2C装置,包括:
I2C主设备;和
第一I2C从设备,其通过包括串行时钟线和串行数据线的I2C总线与所述主设备可通信地连接,其中,所述第一I2C从设备的时钟引脚连接到所述串行时钟线,并且所述第一I2C从设备的数据引脚连接到所述串行数据线;
第二I2C从设备,其通过所述I2C总线与所述主设备可通信地连接,其中,所述第二I2C从设备的时钟引脚连接到所述串行数据线,并且所述第二I2C从设备的所述数据引脚连接到所述串行时钟线;其中,被编程到所述第一I2C从设备中的地址值与被编程到所述第二I2C从设备中的地址值相同;
其中,所述第二I2C从设备包括:
处理逻辑,其包括时钟输入端口、数据输入端口和数据输出端口;
时钟线识别模块,其被配置为检测是所述第二I2C从设备的所述时钟引脚还是所述数据引脚连接到所述串行时钟线;以及
控制模块,其被配置为响应于所述数据引脚连接到所述串行时钟线的检测而执行以下操作:
控制所述第二I2C从设备的所述数据引脚到所述处理逻辑的所述时钟输入端口的耦合;
控制所述第二I2C从设备的所述时钟引脚到所述处理逻辑的所述数据输入端口和所述处理逻辑的数据输出端口的耦合;以及
通过修改被编程到所述第二I2C从设备中的所述地址值而配置所述第二I2C从设备的设备地址。
2.根据权利要求1所述的I2C装置,其中,所述控制模块被配置为响应于所述第二I2C从设备的所述时钟引脚连接到所述串行时钟线的检测而执行以下操作:
维持所述第二I2C从设备的所述时钟引脚到所述处理逻辑的所述时钟输入端口的耦合;
维持所述第二I2C从设备的所述数据引脚到所述处理逻辑的所述数据输入端口和所述处理逻辑的数据输出端口的耦合;以及
保持被编程到所述第二I2C从设备中的所述地址值作为所述第二I2C从设备的设备地址。
3.根据权利要求1所述的I2C装置,其中,所述时钟线识别模块包括:
第一边缘计数器,其被配置为对经由所述第二I2C设备的所述时钟引脚接收的信号的边缘进行计数;以及
第二边缘计数器,其被配置为对经由所述第二I2C设备的所述数据引脚接收的信号的边缘进行计数;其中,一旦所述第一边缘计数器的第一计数和所述第二边缘计数器的第二计数的总和超过预定阈值计数,所述时钟线识别模块就被配置为通过比较所述第一计数与所述第二计数而检测是所述第二I2C设备的所述时钟引脚还是所述数据引脚连接到所述串行时钟线。
4.根据权利要求3所述的I2C装置,其中,所述时钟线识别模块被配置为:
基于所述第二计数超过所述第一计数而检测到所述第二I2C设备的所述数据引脚连接到所述串行时钟线;以及
基于所述第一计数超过所述第二计数而检测到所述第二I2C设备的所述时钟引脚连接到所述串行时钟线。
5.根据权利要求1所述的I2C装置,其中所述第二I2C从设备还包括:
多任务器级,其将所述第二I2C设备的所述时钟引脚和所述数据引脚耦合到所述处理逻辑,其中,所述控制模块被配置为生成切换信号并将其传输到所述多任务器级以控制所述I2C从设备的所述数据引脚和所述时钟引脚到所述处理逻辑的所述耦合,所述切换信号具有取决于是所述设备的所述时钟引脚还是所述数据引脚连接到所述串行时钟线的值。
6.根据权利要求5所述的I2C装置,其中,响应于所述第二I2C设备的所述时钟引脚连接到所述串行时钟线的检测,所述控制模块被配置为生成并传输具有第一值的所述切换信号,以将所述多任务器级配置为使得所述第二I2C设备的所述时钟引脚耦合到所述处理逻辑的所述时钟输入端口并且所述第二I2C设备的所述数据引脚耦合到所述处理逻辑的所述数据输入端口和所述数据输出端口。
7.根据权利要求5所述的I2C装置,其中,响应于所述第二I2C设备的所述数据引脚连接到所述串行时钟线的检测,所述控制模块被配置为生成并传输具有第二值的所述切换信号,以将所述多任务器级配置为使得所述第二I2C设备的所述数据引脚耦合到所述处理逻辑的所述时钟输入端口并且所述第二I2C设备的所述时钟引脚耦合到所述处理逻辑的所述数据输入端口和所述数据输出端口。
8.根据权利要求7所述的I2C装置,其中,所述控制模块被配置为检测到所述I2C总线闲置且响应于检测到所述I2C总线闲置而生成并传输具有所述第二值的所述切换信号。
9.根据权利要求8所述的I2C装置,其中,当所述第二I2C设备的所述数据引脚连接到所述串行时钟线时,所述控制模块被配置为通过检测经由所述时钟引脚接收的所述信号从逻辑低值转变为逻辑高值而经由所述数据引脚接收的所述信号处于逻辑高值来检测到所述I2C总线闲置。
10.根据权利要求8所述的I2C装置,其中,当所述第二I2C设备的所述时钟引脚连接到所述串行时钟线时,所述控制模块被配置为通过检测经由所述数据引脚接收的所述信号从逻辑低值转变为逻辑高值而经由所述时钟引脚接收的所述信号处于逻辑高值来检测到所述I2C总线闲置。
11.根据权利要求5所述的I2C装置,其中,所述控制模块被配置为:
产生切换完成信号;以及
将所述切换完成信号传输到所述多任务器级,其中,所述多任务器级响应于所述切换信号和所述切换完成信号两者而可配置。
12.根据权利要求11所述的I2C装置,其中,所述多任务器级被布置为使得当所述切换完成信号具有第一值时,防止所述切换信号配置所述多任务器级,并且当所述切换完成信号具有第二值时,所述切换信号能够配置所述多任务器级。
13.根据权利要求12所述的I2C装置,其中,所述多任务器级将所述时钟输入端口、所述数据输入端口和所述数据输出端口束缚到默认逻辑高值直到所述切换完成信号具有允许所述切换信号配置所述多任务器级的所述第二值。
14.根据权利要求11所述的I2C装置,其中,所述多任务器级仅响应于所述切换信号被配置。
15.根据权利要求1所述的I2C装置,其中,所述控制模块被配置为通过增量或减量被编程到所述第二I2C从设备中的所述地址值而修改所述地址值。
16.一种集成电路间I2C从设备,包括:
时钟引脚和数据引脚,用于耦合到I2C总线以与I2C主设备通信,所述I2C总线包括串行时钟线和串行数据线;
处理逻辑,其包括时钟输入端口、数据输入端口和数据输出端口;
时钟线识别模块,其被配置为检测是所述时钟引脚还是所述数据引脚连接到所述串行时钟线;以及
控制模块,其被配置为响应于所述数据引脚连接到所述串行时钟线的检测而执行以下操作:
控制所述数据引脚到所述处理逻辑的所述时钟输入端口的耦合;
控制所述时钟引脚到所述处理逻辑的所述数据输入端口和所述处理逻辑的数据输出端口的耦合;以及
通过修改被编程到所述I2C从设备中的地址值而配置所述I2C从设备的设备地址。
17.一种在集成电路间I2C从设备上执行的计算机实施方法,所述I2C从设备包括:时钟引脚和数据引脚,用于耦合到I2C总线以与I2C主设备通信,所述I2C总线包括串行时钟线和串行数据线;以及处理逻辑,其包括时钟输入端口、数据输入端口和数据输出端口,其中,所述计算机实施方法包括:
检测是所述时钟引脚还是所述数据引脚连接到所述串行时钟线;以及
响应于所述数据引脚连接到所述串行时钟线的检测,所述方法还包括:
控制所述数据引脚到所述处理逻辑的所述时钟输入端口的耦合;
控制所述时钟引脚到所述处理逻辑的所述数据输入端口和所述处理逻辑的数据输出端口的耦合;以及
通过修改被编程到所述I2C从设备中的地址值而配置所述I2C从设备的设备地址。
18.一种计算机可读存储介质,包括指令,当所述指令由集成电路间I2C从设备的处理器执行时,使得所述从设备执行如权利要求17所述的方法。
CN202080040340.0A 2019-05-31 2020-05-28 集成电路间(i2c)装置 Active CN113906402B (zh)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201962855339P 2019-05-31 2019-05-31
US62/855,339 2019-05-31
PCT/EP2020/064904 WO2020239944A1 (en) 2019-05-31 2020-05-28 An inter-integrated circuit (i2c) apparatus

Publications (2)

Publication Number Publication Date
CN113906402A CN113906402A (zh) 2022-01-07
CN113906402B true CN113906402B (zh) 2023-10-27

Family

ID=70968943

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202080040340.0A Active CN113906402B (zh) 2019-05-31 2020-05-28 集成电路间(i2c)装置

Country Status (5)

Country Link
US (1) US11829319B2 (zh)
CN (1) CN113906402B (zh)
DE (1) DE112020002619T5 (zh)
TW (1) TWI824154B (zh)
WO (1) WO2020239944A1 (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113064771B (zh) * 2021-03-04 2023-02-28 山东英信计算机技术有限公司 一种i2c链路检查方法、系统、终端及存储介质
CN113656340A (zh) * 2021-08-20 2021-11-16 西安易朴通讯技术有限公司 I2c总线的通信控制方法、系统和装置
TWI829505B (zh) * 2023-01-12 2024-01-11 旺玖科技股份有限公司 具有動態位址分配的串列通訊匯流排系統及其控制方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101208913A (zh) * 2005-04-29 2008-06-25 皇家飞利浦电子股份有限公司 I2c从设备中的多个i/o组的同时控制
CN101208679A (zh) * 2005-04-29 2008-06-25 皇家飞利浦电子股份有限公司 集成电路间从设备的设备标识编码
CN101213535A (zh) * 2005-04-29 2008-07-02 皇家飞利浦电子股份有限公司 动态i2c从装置地址译码器
CN102023954A (zh) * 2009-09-17 2011-04-20 研祥智能科技股份有限公司 具有多路i2c总线的装置、处理器、系统主板及工控计算机
WO2012170921A2 (en) * 2011-06-10 2012-12-13 Intersil Americas LLC System and method for operating a one-wire protocol slave in a two-wire protocol bus environment
CN107209811A (zh) * 2015-06-03 2017-09-26 利盟国际有限公司 用于异步切换i2c数据线的系统和方法
CN109213718A (zh) * 2018-11-12 2019-01-15 上海艾为电子技术股份有限公司 一种i2c通信装置及i2c通信设备
CN208834297U (zh) * 2018-11-12 2019-05-07 上海艾为电子技术股份有限公司 一种i2c通信装置及i2c通信设备

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5376928A (en) * 1992-09-18 1994-12-27 Thomson Consumer Electronics, Inc. Exchanging data and clock lines on multiple format data buses
JP2008107937A (ja) * 2006-10-24 2008-05-08 Oki Electric Ind Co Ltd バスリピータ
US8667204B2 (en) * 2011-01-24 2014-03-04 Rpx Corporation Method to differentiate identical devices on a two-wire interface
US9448960B2 (en) * 2013-03-14 2016-09-20 Linear Technology Corporation Address translation in I2C data communications system
US9710423B2 (en) 2014-04-02 2017-07-18 Qualcomm Incorporated Methods to send extra information in-band on inter-integrated circuit (I2C) bus
US9665528B2 (en) * 2014-11-20 2017-05-30 International Business Machines Corporation Bus serialization for devices without multi-device support
GB2537856A (en) 2015-04-28 2016-11-02 Nordic Semiconductor Asa Communication between intergrated circuits
KR102328014B1 (ko) 2015-08-24 2021-11-18 삼성전자주식회사 싱글 와이어 인터페이스를 포함하는 장치와 이를 포함하는 데이터 처리 시스템
CN106155971A (zh) 2016-07-04 2016-11-23 锐捷网络股份有限公司 I2c总线的仲裁方法及装置
US10204066B2 (en) 2016-11-29 2019-02-12 Stmicroelectronics S.R.L. Dynamic definition of slave address in I2C protocol
WO2019146397A1 (ja) * 2018-01-23 2019-08-01 ソニーセミコンダクタソリューションズ株式会社 制御回路、通信装置、及び、通信システム
US10817451B1 (en) * 2019-06-24 2020-10-27 Semiconductor Components Industries, Llc Methods and system for an integrated circuit

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101208913A (zh) * 2005-04-29 2008-06-25 皇家飞利浦电子股份有限公司 I2c从设备中的多个i/o组的同时控制
CN101208679A (zh) * 2005-04-29 2008-06-25 皇家飞利浦电子股份有限公司 集成电路间从设备的设备标识编码
CN101213535A (zh) * 2005-04-29 2008-07-02 皇家飞利浦电子股份有限公司 动态i2c从装置地址译码器
CN102023954A (zh) * 2009-09-17 2011-04-20 研祥智能科技股份有限公司 具有多路i2c总线的装置、处理器、系统主板及工控计算机
WO2012170921A2 (en) * 2011-06-10 2012-12-13 Intersil Americas LLC System and method for operating a one-wire protocol slave in a two-wire protocol bus environment
CN107209811A (zh) * 2015-06-03 2017-09-26 利盟国际有限公司 用于异步切换i2c数据线的系统和方法
CN109213718A (zh) * 2018-11-12 2019-01-15 上海艾为电子技术股份有限公司 一种i2c通信装置及i2c通信设备
CN208834297U (zh) * 2018-11-12 2019-05-07 上海艾为电子技术股份有限公司 一种i2c通信装置及i2c通信设备

Also Published As

Publication number Publication date
DE112020002619T5 (de) 2022-03-17
TW202105193A (zh) 2021-02-01
CN113906402A (zh) 2022-01-07
US11829319B2 (en) 2023-11-28
TWI824154B (zh) 2023-12-01
WO2020239944A1 (en) 2020-12-03
US20220309023A1 (en) 2022-09-29

Similar Documents

Publication Publication Date Title
CN113906402B (zh) 集成电路间(i2c)装置
US10169282B2 (en) Bus serialization for devices without multi-device support
KR101750672B1 (ko) 가상의 gpio
US20140115229A1 (en) Method and system to reduce system boot loader download time for spi based flash memories
US20060069831A1 (en) I2C bus controlling method
JP6538715B2 (ja) ハイブリッド仮想gpio
US20210218595A1 (en) System and method for dual-port communication and power delivery
JP2017514394A (ja) マルチシンボルワードのための同期方法
WO2012171582A1 (en) Resolving address conflicts in a bus system
EP2750030A1 (en) Method, apparatus and processor for reading BIOS
US9772650B2 (en) Solving unstable universal asynchronous receive transmit (UART) communication between a power manager and a universal serial bus (USB)-bridge device
US10977206B2 (en) Data communication device and method for data communication
US20180357121A1 (en) Error correction calculation upon serial bus abort
CN217562028U (zh) 一种基于sccb总线协议的多个主器件电路
US20210297283A1 (en) Master slave communication system capable of reducing manufacturing cost, electronic device, control method for master slave communication system, and control method for electronic device
CN114661127B (zh) 一种复位电路、复位方法和芯片
US20160140078A1 (en) Control device for I2C slave device
CN115730356A (zh) 电子装置及装置id设定方法
JP5910557B2 (ja) 通信システム
CN116450414A (zh) 一种总线管理方法、装置、设备及可读存储介质
CN114442734A (zh) 一种参考时钟设置方法、系统及装置
JPH11250008A (ja) シリアルi/o回路
CN115144740A (zh) 一种上电锁存电路、上电锁存装置及上电锁存方法
CN103353854A (zh) 一种增加数据保持时间的方法和设备
Russell Serial Communications

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