CN104346310A - 一种高性能i2c从机数据交换电路及方法 - Google Patents
一种高性能i2c从机数据交换电路及方法 Download PDFInfo
- Publication number
- CN104346310A CN104346310A CN201310339242.9A CN201310339242A CN104346310A CN 104346310 A CN104346310 A CN 104346310A CN 201310339242 A CN201310339242 A CN 201310339242A CN 104346310 A CN104346310 A CN 104346310A
- Authority
- CN
- China
- Prior art keywords
- machine
- resource identifier
- bus
- main frame
- finite state
- 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.)
- Granted
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F13/00—Interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F13/38—Information transfer, e.g. on bus
- G06F13/42—Bus transfer protocol, e.g. handshake; Synchronisation
- G06F13/4282—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Small-Scale Networks (AREA)
Abstract
本发明公开了一种高性能I2C从机数据交换电路及方法,电路包括I2C接收器、I2C发送器、有限状态机、协议层模块、控制状态寄存器、从机资源管理器和总线接口单元,总线接口单元连接系统总线,I2C接收器、I2C发送器分别通过I2C总线SCL/SDA与外部总机通信,I2C接收器、I2C发送器分别与FSM相互通信,FSM、协议层模块和总线主机模块通信,控制状态寄存器分别与FSM、协议层模块、总线从机模块相互通信,协议层模块与从机资源管理器相互通信。本发明I2C从机设备支持不同的主机配置各自不同的传输属性信息,差异化传输属性管理,支持多个主机之间并发乱序地访问从机设备,显著提高传输效率,具有通用性。
Description
技术领域
本发明涉及I2C主从机交互技术,尤其涉及一种高性能I2C从机数据交换电路及方法。
背景技术
I2C(Inter-Integrated Circuit)总线是由PHILIPS公司开发的两线式串行总线,用于连接微控制器及其外围设备,是微电子通信控制领域广泛采用的一种总线标准。它是同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。I2C总线中的两线,即串行数据(SDA)和串行时钟(SCL)线在连接到总线的器件间传递信息,每个器件都有一个唯一的地址识别,无论是微控制器(MCU)、LCD驱动器、存储器或键盘接口,而且都可以作为一个发送器或接收器(由器件的功能决定)。除了发送器和接收器外,器件在执行数据传输时也可以被看作是主机或从机,主机是初始化总线的数据传输并产生允许传输的时钟信号的器件,此时,任何被寻址的器件都被认为是从机。
通常来说,I2C从机以绑定系统位宽的方式决定主机的访问模式,如16位系统中,I2C线上代表地址的数据需要两个字节,32位系统中则需要四个字节,使用过多字节表示地址将明显降低I2C总线效率。一般的I2C从机不具备多主机并发乱序访问机制。为了解决地址字节数的问题,常见的I2C从机以较少的地址线(如16位)寻址高位系统地址空间(如32位系统)来提高总线效率,但并没有解决多主机并发乱序时不能访问的问题。同时,虽然能以较少的字节数访问高位地址空间,但实际应用限制很大,效率提高幅度有限。
发明内容
有鉴于此,本发明的目的是提供一种高性能I2C从机数据交换电路及方法,以解决现有技术中一般的I2C从机不具备多主机并发乱序访问机制,多主机并发乱序时不能访问,以及虽然能以较少的字节数访问高位地址空间,但实际应用限制很大,效率提高幅度有限的问题。
一方面,本发明的目的是提供一种高性能I2C从机数据交换电路,其中,包括I2C接收器、I2C发送器、有限状态机、协议层模块、控制状态寄存器、从机资源管理器和总线接口单元,所述总线接口单元连接系统总线,所述I2C接收器、所述I2C发送器分别通过I2C总线SCL/SDA与外部总机相互通信,所述总线接口单元包括总线主机模块和总线从机模块,所述I2C接收器、所述I2C发送器分别与所述有限状态机相互通信,所述有限状态机、所述协议层模块和所述总线主机模块实现相互通信,所述控制状态寄存器分别与所述有限状态机、所述协议层模块、所述总线从机模块相互通信,所述协议层模块与所述从机资源管理器相互通信。
上述高性能I2C从机数据交换电路,其中,所述从机资源管理器定义多个从机资源识别符,所述从机通过所述从机资源识别符管理所述主机的传输配置并辅助实现数据交换功能。
上述高性能I2C从机数据交换电路,其中,所述从机资源识别符为16个,其中1个为默认保留的不参与分配的从机资源识别符,14个为长期的从机资源识别符,还有1个为临时的从机资源识别符。
上述高性能I2C从机数据交换电路,其中,所述主机的操作模式包括申请所述从机资源识别符、释放所述从机资源识别符、配置传输属性、写操作和读操作。
另一方面,本发明的目的是提供一种高性能I2C从机数据交换方法,基于如上述高性能I2C从机数据交换电路实现,其中,包括长期从机资源识别符访问方法和临时从机资源识别符访问方法;
所述长期从机资源识别符访问方法包括:
主机申请从机资源识别符:主机向从机发送长期从机资源识别符申请请求,除非收到从机返回的有效从机资源识别符,否则主机不进行任何长期从机资源识别符数据交换操作;
主机配置传输属性:主机申请到从机资源识别符后,设置专属于主机的传输属性信息,从机为每一个有效的从机资源识别符保留一套传输属性信息,直到从机资源识别符被释放为止;配置成功后,主机需要在传输中附带上有效的从机资源识别符;
主机写入或者读取数据;
释放从机资源识别符:主机长时间不进行数据交换时,释放已分配到的从机资源识别符,从机会把该从机资源识别符标记为闲置状态并在需要的时候分配给新的主机;
在所述临时从机资源识别符访问方法中,主机在传输中直接使用临时的从机资源识别符来完成读写操作。
上述高性能I2C从机数据交换方法,其中,所述主机申请从机资源识别符包括下列步骤:
S11.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后接收I2C总线上的数据,经过串并转换后,把接收到的数据发送给有限状态机;
S12.有限状态机首先检测主机发送过来的从机地址是否和自身从机地址匹配,如果匹配则跳到第S13步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S13.主机发送过来的从机地址和有限状态机从机地址匹配后,有限状态机将从I2C总线上收取含有从机资源识别符和命令信息的令牌符,并将令牌符通过有限状态机输出默认保留的不参与分配的从机资源识别符和命令信息送到协议层模块;
S14.协议层模块接收到从机资源识别符和命令信息后,解析命令为申请从机资源识别符,分配一个长期的从机资源识别符给主机;
S15.协议层模块将所分配的从机资源识别符序列传送给有限状态机;
S16.有限状态机检测到主机再一次发送从机地址并将读写标记置为读时,将数据信息发送给I2C发送器;
S17.I2C发送器将数据信息发送到I2C数据总线SDA上;
S18.I2C接收器检测主机返回的传输已被接受的应答标记,结束操作。
上述高性能I2C从机数据交换方法,其中,在主机申请从机资源识别符步骤中,从机返回从机资源识别符时,高四位为返回的从机资源识别符,低四位为从机资源识别符取反作为校验,当且仅当返回的是非默认保留的不参与分配的从机资源识别符时,认为主机申请到了有效的从机资源识别符。
上述高性能I2C从机数据交换方法,其中,所述主机配置传输属性包括下列步骤:
S21.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后接收从I2C总线上的数据,经过串并转换后,把接收到的数据发送给有限状态机;
S22.有限状态机首先检测主机发送过来的从机地址是否和自身从机地址匹配,如果匹配则跳到第S23步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S23.主机发送过来的从机地址和有限状态机从机地址匹配后,有限状态机将从I2C总线上收取含有从机资源识别符和命令信息的令牌符,并将令牌符通过有限状态机输出一个长期的从机资源识别符和命令信息送到协议层模块;有限状态机继续收取I2C总线数据,并通过数据信息发送到协议层模块;
S24.协议层模块接收到从机资源识别符和命令信息后,解析命令信息为配置传输属性,则等候接收主机的传输属性信息由有限状态机输出的数据信息送到协议层模块,直到主机结束传输为止;
S25.协议层模块通过分析主机的传输属性,将其保存在从机资源管理器中对应的从机资源识别符存储单元中。
上述高性能I2C从机数据交换方法,其中,所述主机写入包括下列步骤:
S31.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后接收从I2C总线上的数据,经过串并转换后,把接收到的数据发送给有限状态机;
S32.有限状态机首先检测主机发送过来的从机地址是否和自身从机地址匹配,如果匹配则跳到第S33步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S33.主机发送过来的从机地址和有限状态机从机地址匹配后,有限状态机将从I2C总线上收取含有从机资源识别符和命令信息的令牌符,并将令牌符通过有限状态机输出一个长期的从机资源识别符和命令信息送到协议层模块;有限状态机继续收取I2C总线数据,并通过数据信息发送到协议层模块,直到有限状态机收到总线停止标记为止;
S34.协议层模块接收到从机资源识别符和命令信息后,解析命令信息为写入操作,等候接收主机的传输,属性信息由有限状态机输出送到协议层模块,直到主机结束传输为止;
S35.协议层模块通过当前主机的从机资源识别符,从从机资源管理器中取出对应上述长期的从机资源标识符的传输属性信息;
S36.协议层模块取出上述长期的从机资源标识符的主机对应的传输属性之后,将有限状态机输出的数据信息按照传输属性配置传送请求,生成地址信息、写数据信息、写使能信号和片选信号,并输出送到总线接口单元中,由总线主机模块生成总线传输请求,发到系统总线,并从系统总线返回操作成功的标记,完成写入过程。
上述高性能I2C从机数据交换方法,其中,所述主机读取包括下列步骤:
S41.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后接收从I2C总线上的数据,经过串并转换后,把接收到的数据发送给有限状态机;
S42.有限状态机首先检测主机发送过来的从机地址是否和自身从机地址匹配,如果匹配则跳到第S43步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S43.主机发送过来的从机地址和有限状态机从机地址匹配后,有限状态机将从I2C总线上收取含有从机资源识别符和命令信息的令牌符,并将令牌符通过有限状态机输出一个长期的从机资源识别符和命令信息送到协议层模块;有限状态机继续收取I2C总线数据,并通过数据信息发送到协议层模块,直到有限状态机收到总线停止标记为止;
S44.协议层模块接收到从机资源识别符和命令信息后,解析命令信息为读取操作,等候接收主机的传输,属性信息由有限状态机输出送到协议层模块,直到主机结束传输为止;
S45.协议层模块通过当前主机的从机资源识别符,从从机资源管理器中取出对应上述长期的从机资源标识符的传输属性信息;
S46.协议层模块取出上述长期的从机资源标识符的主机对应的传输属性之后,将有限状态机输出的数据信息按照传输属性配置传送请求,生成地址信息、读使能信号和片选信号,并输出送到总线接口单元中,由总线主机模块生成总线传输请求,发到系统总线,并从系统总线返回读取的数据;
S47.协议层模块收到从总线接口单元返回的读数据后通过协议层模块的数据信息发送到有限状态机;
S48.有限状态机将收到的数据信息传送给I2C发送器;
S49.I2C发送器将数据信息送到I2C数据总线SDA上,直到有限状态机接收到总线返回的未接受传输的应答标记后结束读取数据过程。
上述高性能I2C从机数据交换方法,其中,所述释放从机资源识别符包括下列步骤:
S51.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后接收从I2C总线上的数据,经过串并转换后,把接收到的数据发送给有限状态机;
S52.有限状态机首先检测主机发送过来的从机地址是否和自身从机地址匹配,如果匹配则跳到第S53步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S53.主机发送过来的从机地址和有限状态机从机地址匹配后,有限状态机将从I2C总线上收取含有从机资源识别符和命令信息的令牌符,并将令牌符通过有限状态机输出一个长期的从机资源识别符和命令信息送到协议层模块;
S54.协议层模块接收到从机资源识别符和命令信息后,解析命令信息为释放从机资源识别符,则将上述长期的从机资源识别符标记为闲置状态,以待分配给新的主机。
上述高性能I2C从机数据交换方法,其中,所述长期从机资源识别符访问方法还包括主机更新传输属性:若固定地址不变化,则省略固定地址信息,以提高效率。
与已有技术相比,本发明的有益效果主要体现在:
1.I2C从机设备支持不同的主机配置各自不同的传输属性信息;
2.差异化传输属性管理,支持多个主机之间并发乱序地访问从机设备;
3.预置基址可以有效减少I2C总线上地址字节数,显著提高传输效率;
4.不同数据宽度更能灵活的兼容各种硬件资源访问模式,具有通用性。
附图说明
构成本发明的一部分的附图用来提供对本发明的进一步理解,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1示出了本发明高性能I2C从机数据交换电路的电路逻辑结构示意框图;
图2a示出了本发明高性能I2C从机数据交换方法中主机申请从机资源识别符时的数据交换命令格式;
图2b示出了本发明高性能I2C从机数据交换方法中主机配置传输属性时的数据交换命令格式;
图2c示出了本发明高性能I2C从机数据交换方法中主机写入数据时的数据交换命令格式;
图2d示出了本发明高性能I2C从机数据交换方法中主机读取数据时的数据交换命令格式;
图2e示出了本发明高性能I2C从机数据交换方法中释放从机资源识别符时的数据交换命令格式;
图2f示出了本发明高性能I2C从机数据交换方法中主机更新传输属性时的数据交换命令格式。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
参照图1,本发明提供了一种高性能I2C从机数据交换电路,包括I2C接收器、I2C发送器、有限状态机(Finite State Machine,下文统称为FSM)、协议层模块、控制状态寄存器、从机资源管理器和总线接口单元(Bus Interface Unit,下文统称为BIU),BIU连接系统总线,I2C接收器、I2C发送器分别通过I2C总线SCL/SDA与外部总机相互通信,BIU包括总线主机模块和总线从机模块,I2C接收器、I2C发送器分别与FSM相互通信,FSM、协议层模块和总线主机模块实现相互通信,控制状态寄存器分别与FSM、协议层模块、总线从机模块相互通信,协议层模块与从机资源管理器相互通信。
访问本发明I2C从机设备一般有两种模式:I2C从机数据交换16位兼容模式和I2C从机数据交换高级模式,其中16位I2C从机用于32位系统数据交换的方法比较简单,选取16位地址空间中某两个地址作为保留空间,用作32位系统地址的高16位基地址,I2C主机线上发送的16位地址作为偏移地址,两者组合之后作为系统的地址发送到系统总线,访问系统内资源。这种方式的优点是结构简单,应用方便,但是缺点也很明显,由于主从数据交换格式死板,每次传输只能传送固定长度的数据(不包括地址信息),效率低下,并且不能实现多个主机并发访问功能,只能分时复用。
因此在本发明所涉及的另一个发明目的中,主要侧重于上述第二种访问模式,即I2C从机数据交换高级模式,I2C从机数据交换高级模式包括长期从机资源识别符访问方法和临时从机资源识别符访问方法。
继续参照图1所示,从机资源管理器定义多个从机资源识别符(Slave Resource ID,下文统一称为SRID),从机通过SRID管理主机的传输配置并辅助实现数据交换功能。
在长期从机资源识别符访问方法中,由主机在数据传输之前向I2C从机设备申请一个SRID,从机返回有效的SRID或SRID申请失败信息。从机通过SRID管理主机的传输配置实现数据转发或读取等交换功能。本发明的I2C从机设备中预设16个SRID,SRID0~SRID15,其中SRID0为默认保留SRID,不分配给任何主机,其中SRID1~SRID14为长期SRID,SRID15为临时SRID。主机获得的SRID的有效期由从机分配开始至主机释放或从机复位为止。主机所有传输(除了SRID申请)操作必须附上SRID以便从机用对应的传输属性配置信息完成主从数据交换。一旦主机附带SRID的操作被从机否定(NAK)则说明该SRID已经失效,出现这种情况时,代表从机已经被复位,主机需要重新申请SRID才能继续数据交换。通过SRID的管理,从机很容易实现多主机并发乱序访问。
另外,参考图2a等图,长期SRID数据交换模式中,从机地址(SlaveID)字节之后必须紧跟着一个令牌符字节(后文中统称为TOKEN)信息。TOKEN字节用来表示当前主机的SRID以及操作信息:
[3:0]:主机操作模式(申请SRID/释放SRID/配置传输属性/写操作/读操作);
[7:4]:SRIDx
长期SRID数据交换模式中有以下几种操作:
(1)申请SRID:主机向从机发送长期SRID申请请求,除非收到从机返回的有效SRID,否则主机不能进行任何长期SRID数据交换操作。临时SRID数据交换不需要申请SRID。从机返回SRID时,高四位为返回的SRID,低四位为SRID取反作为校验。只有返回非SRID0时,主机才能认为申请到了有效的SRID。
(2)释放SRID:主机长时间不进行数据交换时,可以释放已分配到的SRID,从机会把这个SRID标记为闲置状态并在需要的时候分配给新的主机。
(3)配置传输属性:主机申请到SRID后,设置专属于它的传输属性信息,从机为每一个有效的SRID保留一套传输属性信息,直到SRID被释放为止。配置成功后,主机只需要在传输中附带上SRID即可。
(4)更新传输属性:主机可以随时更新传输属性,如果固定的地址不变化,可以省略固定地址信息,提高效率。
(5)写操作:主机向从机写入数据。
(6)读操作:主机从从机读取数据。
例如:在系统中,I2C主机想往从机写入大量数据,按照I2C从机设备的特性,采用长期SRID进行传输更有效率:
(1)主机先向从机申请SRID,返回有效SRID1;
(2)主机向从机发送传输属性信息;
(3)成功配置传输属性后,主机向从机写入大量数据;
(4)写完数据后,如无后续操作,释放SRID1。
具体来说,参照图1、图2a至图2e,长期SRID模式中,主机的操作步骤包括:
1、主机申请SRID:
S11.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后,负责接收从I2C总线上的数据,经过串并转换后,把接收到的数据(RXDATA)发送给FSM模块;
S12.FSM首先检测主机发送过来的从机地址(Slave ID)是否和自身从机地址匹配,如果匹配则跳到第三步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S13.从机ID匹配后,FSM将从I2C总线上收取Token(含有SRID和命令信息),并将Token通过FSM输出信号SRID[3:0](等于SRID0)和CODE[3:0](等于ApplyID)送到协议层模块;
S14.协议层模块接收到SRID和CODE后,解析CODE命令为ApplyID(申请SRID),则分配SRID1给主机;
S15.协议层模块通过TXDATA[7:0]信号线将{SRID1,~SRID1}传送给FSM模块;
S16.FSM检测到主机再一次发送从机地址并将读写标记置为读时,将TXDATA[7:0]发送给;
S17.I2C发送器将TXDATA[7:0]发送到I2C数据总线SDA上;
S18.I2C接收器模块检测主机返回的ACK,结束操作。
2、主机配置传输属性:
S21.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后,负责接收从I2C总线上的数据,经过串并转换后,把接收到的数据(RXDATA)发送给FSM模块;
S22.FSM首先检测主机发送过来的从机地址(Slave ID)是否和自身从机地址匹配,如果匹配则跳到第三步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S23.从机ID匹配后,FSM将从I2C总线上收取Token(含有SRID和命令信息),并将Token通过FSM输出信号SRID[3:0](等于SRID1)和CODE[3:0](等于CfgInfo)送到协议层模块;FSM继续收取I2C总线数据,并将之按字节为单位通过RXDATA[7:0]发送到协议层模块;
S24.协议层模块接收到SRID和CODE后,解析CODE命令为CfgInfo(配置传输属性),则等候接收主机的传输属性信息由FSM模块输出的RXDATA[7:0]送到协议层模块,直到主机结束传输为止;
S25.协议层模块通过分析主机的传输属性,将之保存在从机资源管理器模块中对应的SRID存储单元中(本实施例中为SRID1)。
3、主机写入数据:
S31.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后,负责接收从I2C总线上的数据,经过串并转换后,把接收到的数据(RXDATA)发送给FSM;
S32.FSM首先检测主机发送过来的从机地址(Slave ID)是否和自身从机地址匹配,如果匹配则跳到第三步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S33.从机ID匹配后,FSM将从I2C总线上收取Token(含有SRID和命令信息),并将Token通过FSM输出信号SRID[3:0](等于SRID1)和CODE[3:0](等于Write)送到协议层模块;FSM继续收取I2C总线数据,并将之按字节为单位通过RXDATA[7:0]发送到协议层模块,直到FSM收到总线停止标记为止;
S34.协议层模块接收到SRID和CODE后,解析CODE命令为Write(写入),则等候接收主机的传输属性信息由FSM输出的RXDATA[7:0]送到协议层模块,直到主机结束传输为止;
S35.协议层模块通过当前主机的SRID,从从机资源管理器中取出对应SRID1的传输属性信息;
S36.协议层模块取出SRID1主机对应的传输属性之后,将FSM输出的RXDATA[7:0]按照传输属性配置传送请求,生成地址信息(ADDR)、写数据信息(WDATA)、写使能信号(WRITE)、片选信号(CS)并将这些信号输出送到BIU模块中,由系统总线主机模块生成总线传输请求,发到系统总线,并从系统总线返回操作成功的标记,完成这次写入过程。
4、主机读取数据:
S41.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后,负责接收从I2C总线上的数据,经过串并转换后,把接收到的数据(RXDATA)发送给FSM模块;
S42.FSM首先检测主机发送过来的从机地址(Slave ID)是否和自身从机地址匹配,如果匹配则跳到第三步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S43.从机ID匹配后,FSM将从I2C总线上收取Token(含有SRID和命令信息),并将Token通过FSM输出信号SRID[3:0](等于SRID1)和CODE[3:0](等于Read)送到协议层模块;FSM继续收取I2C总线数据,并将之按字节为单位通过RXDATA[7:0]发送到协议层模块,直到收到总线停止标记或总线重新开始标记为止;
S44:协议层模块接收到SRID和CODE后,解析CODE命令为Read(读取),则等候接收主机的传输属性信息由FSM模块输出的RXDATA[7:0]送到协议层模块,直到主机结束传输为止;
S45.协议层模块通过当前主机的SRID,从从机资源管理器中取出对应SRID1的传输属性信息;
S46.协议层模块取出SRID1主机对应的传输属性之后,将FSM输出的RXDATA[7:0]按照传输属性配置传送请求,生成地址信息(ADDR)、读使能信号(~WRITE)、片选信号(CS),并将这些信号输出送到BIU模块中,由系统总线主机模块生成总线传输请求,发到系统总线,并从系统总线返回读取的数据RXDATA。
S47.协议层模块收到从BIU返回的读数据RXDATA之后,将之通过协议层模块的TXDATA信号送到FSM模块;
S48.FSM将协议层模块发送过来的TXDATA送到I2C发送器;
S49.I2C发送器将TXDATA发送到I2C数据总线SDA上,直到FSM接收到总线返回的NAK标记后结束读取数据过程。
5、主机释放SRID:
S51.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后,负责接收从I2C总线上的数据,经过串并转换后,把接收到的数据(RXDATA)发送给FSM模块;
S52.FSM首先检测主机发送过来的从机地址(Slave ID)是否和自身从机地址匹配,如果匹配则跳到第三步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S53.从机ID匹配后,FSM将从I2C总线上收取Token(含有SRID和Release信息),并将Token通过FSM输出信号SRID[3:0](等于SRID1)和CODE[3:0](等于Release)送到协议层模块;
S54.协议层模块接收到SRID和CODE后,解析CODE命令为Release(释放SRID),则将上述长期的从机资源识别符标记为闲置状态,以待分配给新的主机。
另外,长期SRID数据交换模式中还包括主机更新传输属性,若固定地址不变化,则省略固定地址信息,以提高效率,其数据交换命令格式参照图2f所示。
在临时从机资源识别符访问方法中,如果主机和从机之间偶尔有数据交换操作时,或者所有长期SRID已经分配给多个主机,主机可以利用临时SRID和从机进行数据交换。临时SRID无须申请直接可用。I2C从机设备设置SRID15为临时SRID,主机只要在传输中TOKEN字节中用SRID15作为SRID,低四位信息适当配置即可。主机利用临时SRID传输时,不需要单独的申请SRID和配置传输属性操作,直接使用SRID15和适当的配置信息加上传输数据就能完成操作。临时SRID中TOKEN字节设置如下:
[1:0]:数据宽度8/16/32/64位;
[2]:从机主动延展时钟SCL宽度模式使能;
[3]:自动对齐功能使能;
[7:4]:SRID15
从机不会保存临时SRID传输中的任何属性,即主机发起的临时SRID传输,其属性是一次性的,这样就能保证所有发起临时SRID传输的主机互不影响。
从上述实施例可以看出,本发明的优势在于:
本发明支持多主机独立灵活配置I2C从机传输属性,最多14个主机同时乱序访问本发明结构的从机设备。I2C从机设备预留16个从机资源识别符,通过区分不同的有效SRID来提取该主机的配置信息用于数据传输过程。本发明的I2C从机设备支持不同的主机配置各自不同的传输属性信息,多个主机之间可以并发乱序地访问从机设备。预置基址可以有效减少I2C总线上地址字节数,显著提高传输效率;不同数据宽度更能灵活的兼容各种硬件资源访问模式,具有通用性;差异化传输属性管理,可支持多主机并发乱序访问。
值得注意的是,如果某主机未被分配到SRID,那它必须先向I2C从机先申请一个长期的SRID或利用从机预设的临时SRID访问从机,主机获得有效的SRID之后,必须配置以下信息并存储在从机中作为该主机访问从机的传输属性。本发明可以适用于任何应用,兼容多种系统,从8位到64位系统均可实施,当然在某些特殊应用场合,也可以应用本发明支持的最简数据交换模式工作。
以上对本发明的具体实施例进行了详细描述,但本发明并不限制于以上描述的具体实施例,其只是作为范例。对于本领域技术人员而言,任何等同修改和替代也都在本发明的范畴之中。因此,在不脱离本发明的精神和范围下所作出的均等变换和修改,都应涵盖在本发明的范围内。
Claims (12)
1.一种高性能I2C从机数据交换电路,其特征在于,包括I2C接收器、I2C发送器、有限状态机、协议层模块、控制状态寄存器、从机资源管理器和总线接口单元,所述总线接口单元连接系统总线,所述I2C接收器、所述I2C发送器分别通过I2C总线SCL/SDA与外部总机相互通信,所述总线接口单元包括总线主机模块和总线从机模块,所述I2C接收器、所述I2C发送器分别与所述有限状态机相互通信,所述有限状态机、所述协议层模块和所述总线主机模块实现相互通信,所述控制状态寄存器分别与所述有限状态机、所述协议层模块、所述总线从机模块相互通信,所述协议层模块与所述从机资源管理器相互通信。
2.根据权利要求1所述高性能I2C从机数据交换电路,其特征在于,所述从机资源管理器定义多个从机资源识别符,所述从机通过所述从机资源识别符管理所述主机的传输配置并辅助实现数据交换功能。
3.根据权利要求2所述高性能I2C从机数据交换电路,其特征在于,所述从机资源识别符为16个,其中1个为默认保留的不参与分配的从机资源识别符,14个为长期的从机资源识别符,还有1个为临时的从机资源识别符。
4.根据权利要求3所述高性能I2C从机数据交换电路,其特征在于,所述主机的操作模式包括申请所述从机资源识别符、释放所述从机资源识别符、配置传输属性、写操作和读操作。
5.一种高性能I2C从机数据交换方法,基于如权利要求4中所述高性能I2C从机数据交换电路实现,其特征在于,包括长期从机资源识别符访问方法和临时从机资源识别符访问方法;
所述长期从机资源识别符访问方法包括:
主机申请从机资源识别符:主机向从机发送长期从机资源识别符申请请求,除非收到从机返回的有效从机资源识别符,否则主机不进行任何长期从机资源识别符数据交换操作;
主机配置传输属性:主机申请到从机资源识别符后,设置专属于主机的传输属性信息,从机为每一个有效的从机资源识别符保留一套传输属性信息,直到从机资源识别符被释放为止;配置成功后,主机需要在传输中附带上有效的从机资源识别符;
主机写入或者读取数据;
释放从机资源识别符:主机长时间不进行数据交换时,释放已分配到的从机资源识别符,从机会把该从机资源识别符标记为闲置状态并在需要的时候分配给新的主机;
在所述临时从机资源识别符访问方法中,主机在传输中直接使用临时的从机资源识别符来完成读写操作。
6.根据权利要求5所述高性能I2C从机数据交换方法,其特征在于,所述主机申请从机资源识别符包括下列步骤:
S11.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后接收I2C总线上的数据,经过串并转换后,把接收到的数据发送给有限状态机;
S12.有限状态机首先检测主机发送过来的从机地址是否和自身从机地址匹配,如果匹配则跳到第S13步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S13.主机发送过来的从机地址和有限状态机从机地址匹配后,有限状态机将从I2C总线上收取含有从机资源识别符和命令信息的令牌符,并将令牌符通过有限状态机输出默认保留的不参与分配的从机资源识别符和命令信息送到协议层模块;
S14.协议层模块接收到从机资源识别符和命令信息后,解析命令为申请从机资源识别符,分配一个长期的从机资源识别符给主机;
S15.协议层模块将所分配的从机资源识别符序列传送给有限状态机;
S16.有限状态机检测到主机再一次发送从机地址并将读写标记置为读时,将数据信息发送给I2C发送器;
S17.I2C发送器将数据信息发送到I2C数据总线SDA上;
S18.I2C接收器检测主机返回的传输已被接受的应答标记,结束操作。
7.根据权利要求6所述高性能I2C从机数据交换方法,其特征在于,在主机申请从机资源识别符步骤中,从机返回从机资源识别符时,高四位为返回的从机资源识别符,低四位为从机资源识别符取反作为校验,当且仅当返回的是非默认保留的不参与分配的从机资源识别符时,认为主机申请到了有效的从机资源识别符。
8.根据权利要求5所述高性能I2C从机数据交换方法,其特征在于,所述主机配置传输属性包括下列步骤:
S21.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后接收从I2C总线上的数据,经过串并转换后,把接收到的数据发送给有限状态机;
S22.有限状态机首先检测主机发送过来的从机地址是否和自身从机地址匹配,如果匹配则跳到第S23步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S23.主机发送过来的从机地址和有限状态机从机地址匹配后,有限状态机将从I2C总线上收取含有从机资源识别符和命令信息的令牌符,并将令牌符通过有限状态机输出一个长期的从机资源识别符和命令信息送到协议层模块;有限状态机继续收取I2C总线数据,并通过数据信息发送到协议层模块;
S24.协议层模块接收到从机资源识别符和命令信息后,解析命令信息为配置传输属性,则等候接收主机的传输属性信息由有限状态机输出的数据信息送到协议层模块,直到主机结束传输为止;
S25.协议层模块通过分析主机的传输属性,将其保存在从机资源管理器中对应的从机资源识别符存储单元中。
9.根据权利要求5所述高性能I2C从机数据交换方法,其特征在于,所述主机写入包括下列步骤:
S31.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后接收从I2C总线上的数据,经过串并转换后,把接收到的数据发送给有限状态机;
S32.有限状态机首先检测主机发送过来的从机地址是否和自身从机地址匹配,如果匹配则跳到第S33步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S33.主机发送过来的从机地址和有限状态机从机地址匹配后,有限状态机将从I2C总线上收取含有从机资源识别符和命令信息的令牌符,并将令牌符通过有限状态机输出一个长期的从机资源识别符和命令信息送到协议层模块;有限状态机继续收取I2C总线数据,并通过数据信息发送到协议层模块,直到有限状态机收到总线停止标记为止;
S34.协议层模块接收到从机资源识别符和命令信息后,解析命令信息为写入操作,等候接收主机的传输,属性信息由有限状态机输出送到协议层模块,直到主机结束传输为止;
S35.协议层模块通过当前主机的从机资源识别符,从从机资源管理器中取出对应上述长期的从机资源标识符的传输属性信息;
S36.协议层模块取出上述长期的从机资源标识符的主机对应的传输属性之后,将有限状态机输出的数据信息按照传输属性配置传送请求,生成地址信息、写数据信息、写使能信号和片选信号,并输出送到总线接口单元中,由总线主机模块生成总线传输请求,发到系统总线,并从系统总线返回操作成功的标记,完成写入过程。
10.根据权利要求5所述高性能I2C从机数据交换方法,其特征在于,所述主机读取包括下列步骤:
S41.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后接收从I2C总线上的数据,经过串并转换后,把接收到的数据发送给有限状态机;
S42.有限状态机首先检测主机发送过来的从机地址是否和自身从机地址匹配,如果匹配则跳到第S43步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S43.主机发送过来的从机地址和有限状态机从机地址匹配后,有限状态机将从I2C总线上收取含有从机资源识别符和命令信息的令牌符,并将令牌符通过有限状态机输出一个长期的从机资源识别符和命令信息送到协议层模块;有限状态机继续收取I2C总线数据,并通过数据信息发送到协议层模块,直到有限状态机收到总线停止标记为止;
S44.协议层模块接收到从机资源识别符和命令信息后,解析命令信息为读取操作,等候接收主机的传输,属性信息由有限状态机输出送到协议层模块,直到主机结束传输为止;
S45.协议层模块通过当前主机的从机资源识别符,从从机资源管理器中取出对应上述长期的从机资源标识符的传输属性信息;
S46.协议层模块取出上述长期的从机资源标识符的主机对应的传输属性之后,将有限状态机输出的数据信息按照传输属性配置传送请求,生成地址信息、读使能信号和片选信号,并输出送到总线接口单元中,由总线主机模块生成总线传输请求,发到系统总线,并从系统总线返回读取的数据;
S47.协议层模块收到从总线接口单元返回的读数据后通过协议层模块的数据信息发送到有限状态机;
S48.有限状态机将收到的数据信息传送给I2C发送器;
S49.I2C发送器将数据信息送到I2C数据总线SDA上,直到有限状态机接收到总线返回的未接受传输的应答标记后结束读取数据过程。
11.根据权利要求5所述高性能I2C从机数据交换方法,其特征在于,所述释放从机资源识别符包括下列步骤:
S51.主机通过I2C总线SCL/SDA将从机地址发送过来,I2C接收器检测到I2C总线起始位后接收从I2C总线上的数据,经过串并转换后,把接收到的数据发送给有限状态机;
S52.有限状态机首先检测主机发送过来的从机地址是否和自身从机地址匹配,如果匹配则跳到第S53步,否则关闭I2C接收器并等候下一次I2C总线起始标记的到来;
S53.主机发送过来的从机地址和有限状态机从机地址匹配后,有限状态机将从I2C总线上收取含有从机资源识别符和命令信息的令牌符,并将令牌符通过有限状态机输出一个长期的从机资源识别符和命令信息送到协议层模块;
S54.协议层模块接收到从机资源识别符和命令信息后,解析命令信息为释放从机资源识别符,则将上述长期的从机资源识别符标记为闲置状态,以待分配给新的主机。
12.根据权利要求5所述高性能I2C从机数据交换方法,其特征在于,所述长期从机资源识别符访问方法还包括主机更新传输属性:若固定地址不变化,则省略固定地址信息,以提高效率。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310339242.9A CN104346310B (zh) | 2013-08-05 | 2013-08-05 | 一种高性能i2c从机数据交换电路及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310339242.9A CN104346310B (zh) | 2013-08-05 | 2013-08-05 | 一种高性能i2c从机数据交换电路及方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104346310A true CN104346310A (zh) | 2015-02-11 |
CN104346310B CN104346310B (zh) | 2018-01-02 |
Family
ID=52501948
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310339242.9A Active CN104346310B (zh) | 2013-08-05 | 2013-08-05 | 一种高性能i2c从机数据交换电路及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104346310B (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108337141A (zh) * | 2018-01-05 | 2018-07-27 | 无锡腾越信息技术有限公司 | 多联机空调网关Modbus通信协议 |
CN111124979A (zh) * | 2019-10-31 | 2020-05-08 | 苏州浪潮智能科技有限公司 | 一种基于堆栈结构的i2c多主访问方法和系统 |
CN112292673A (zh) * | 2018-06-21 | 2021-01-29 | 罗伯特·博世有限公司 | I3c从机接口、具有i3c从机接口的集成电路及用于运行i3c从机接口的方法 |
CN117201222A (zh) * | 2023-08-16 | 2023-12-08 | 天津瑞发科半导体技术有限公司 | I2c接口系统、数据写入方法以及数据读取方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1232217A (zh) * | 1998-01-23 | 1999-10-20 | 索尼公司 | 发送系统、发送方法及发送/接收系统 |
US6343324B1 (en) * | 1999-09-13 | 2002-01-29 | International Business Machines Corporation | Method and system for controlling access share storage devices in a network environment by configuring host-to-volume mapping data structures in the controller memory for granting and denying access to the devices |
CN1334516A (zh) * | 2000-07-21 | 2002-02-06 | 三星电子株式会社 | 总线系统及其存取命令的执行调度方法 |
CN102193889A (zh) * | 2011-06-08 | 2011-09-21 | 杭州国芯科技股份有限公司 | 一种i2c总线转发器及其读写方法 |
-
2013
- 2013-08-05 CN CN201310339242.9A patent/CN104346310B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1232217A (zh) * | 1998-01-23 | 1999-10-20 | 索尼公司 | 发送系统、发送方法及发送/接收系统 |
US6343324B1 (en) * | 1999-09-13 | 2002-01-29 | International Business Machines Corporation | Method and system for controlling access share storage devices in a network environment by configuring host-to-volume mapping data structures in the controller memory for granting and denying access to the devices |
CN1334516A (zh) * | 2000-07-21 | 2002-02-06 | 三星电子株式会社 | 总线系统及其存取命令的执行调度方法 |
CN102193889A (zh) * | 2011-06-08 | 2011-09-21 | 杭州国芯科技股份有限公司 | 一种i2c总线转发器及其读写方法 |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108337141A (zh) * | 2018-01-05 | 2018-07-27 | 无锡腾越信息技术有限公司 | 多联机空调网关Modbus通信协议 |
CN108337141B (zh) * | 2018-01-05 | 2020-08-18 | 无锡腾越信息技术有限公司 | 多联机空调网关Modbus通信方法 |
CN112292673A (zh) * | 2018-06-21 | 2021-01-29 | 罗伯特·博世有限公司 | I3c从机接口、具有i3c从机接口的集成电路及用于运行i3c从机接口的方法 |
CN111124979A (zh) * | 2019-10-31 | 2020-05-08 | 苏州浪潮智能科技有限公司 | 一种基于堆栈结构的i2c多主访问方法和系统 |
CN117201222A (zh) * | 2023-08-16 | 2023-12-08 | 天津瑞发科半导体技术有限公司 | I2c接口系统、数据写入方法以及数据读取方法 |
Also Published As
Publication number | Publication date |
---|---|
CN104346310B (zh) | 2018-01-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP1866778B1 (en) | Method and apparatus for improving the performance of usb mass storage devices in the presence of long transmission delays | |
US7058748B1 (en) | ATA device control via a packet-based interface | |
US6122676A (en) | Apparatus and method for transmitting and receiving data into and out of a universal serial bus device | |
CN104615572B (zh) | 热插拔处理系统及方法 | |
US20080028120A1 (en) | Method and Apparatus for Distributing USB Hub Functions across a Network | |
CN109710548A (zh) | 一种dma控制数据传输方法、系统及设备 | |
CN103248526A (zh) | 实现带外监控管理的通信设备、方法及主从切换方法 | |
CN102057363A (zh) | 从装置之间的直接数据传输 | |
CN106959935A (zh) | 一种兼容i2c通信与ipmb通信的方法 | |
CN104834620A (zh) | 串行外设接口spi总线电路、实现方法以及电子设备 | |
CN104346310A (zh) | 一种高性能i2c从机数据交换电路及方法 | |
CN108280041A (zh) | 一种内部集成电路主机的通信方法和装置 | |
CN102073611A (zh) | 一种i2c总线控制系统及方法 | |
US9832279B2 (en) | Station, target apparatus, initiator apparatus, communication system, and communication method | |
KR20060130664A (ko) | Pci 익스프레스 장치, pci 익스프레스 시스템 및정보 통신 방법 | |
CN103885910B (zh) | 多设备在主模式下进行iic通信的方法 | |
US9722702B2 (en) | SATA host bus adapter using optical signal and method for connecting SATA storage using the same | |
US20100088477A1 (en) | Memory share system and memory share apparatus | |
CN112199312B (zh) | 通信设备的接口转换装置及通信系统 | |
KR101222107B1 (ko) | I2c 버스 프로토콜 기반의 직렬 클럭 버스 스위칭을 이용한 멀티플렉싱 장치 및 그 방법 | |
CN101976230A (zh) | 通用序列总线传输转译器及输入请求同步传输方法 | |
CN111324563A (zh) | 一种PCIe设备物理lane的组合系统及方法 | |
US8135923B2 (en) | Method for protocol enhancement of PCI express using a continue bit | |
CN114116559B (zh) | 一种适用于plc应用的高速总线方法 | |
CN115202257B (zh) | 一种lpc总线协议转换及设备并行控制装置及方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |