CN106681953B - 使用i2c总线与主机连接的从机及其通信方法 - Google Patents
使用i2c总线与主机连接的从机及其通信方法 Download PDFInfo
- Publication number
- CN106681953B CN106681953B CN201611127631.5A CN201611127631A CN106681953B CN 106681953 B CN106681953 B CN 106681953B CN 201611127631 A CN201611127631 A CN 201611127631A CN 106681953 B CN106681953 B CN 106681953B
- Authority
- CN
- China
- Prior art keywords
- slave
- data
- completion flag
- state
- transmission completion
- 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
Links
Images
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/14—Handling requests for interconnection or transfer
- G06F13/36—Handling requests for interconnection or transfer for access to common bus or bus system
- G06F13/362—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control
- G06F13/364—Handling requests for interconnection or transfer for access to common bus or bus system with centralised access control using independent requests or grants, e.g. using separated request and grant lines
-
- 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/40—Bus structure
- G06F13/4004—Coupling between buses
- G06F13/4022—Coupling between buses using switching circuits, e.g. switching matrix, connection or expansion network
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2213/00—Indexing scheme relating to interconnection of, or transfer of information or other signals between, memories, input/output devices or central processing units
- G06F2213/0016—Inter-integrated circuit (I2C)
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Mathematical Physics (AREA)
- Computer Hardware Design (AREA)
- Information Transfer Systems (AREA)
- Communication Control (AREA)
Abstract
本发明公开一种从机使用I2C总线与主机连接的通信方法,包括:在从机处于发送模式时,检测字节传输完成标志位的状态;当检测到所述字节传输完成标志位处于第一状态,清除所述字节传输完成标志位以在所述发送模式中终止向所述主机发送数据;其中,所述第一状态表示所述主机请求的所有数据已由所述从机发送完成。本发明还提供了采用上述通信方法的从机。本发明在兼容标准的I2C总线协议的基础上,配置简单,且从机处于发送状态时,在完成最后一字节数据的传输时无需切换从机的工作模式来停止从机继续传输数据,响应快速,同时,无需额外空读数据寄存器或者写入空数据来停止从机继续传输数据,可靠性高。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种从机使用I2C总线与主机连接的从机及其通信方法。
背景技术
I2C串行总线由两根串行线构成,数据信号线(SDA)与时钟信号线(SCL),分别负责传输数据与时钟。其通信方式为主从模式,主机发起通信(读或写请求),并提供总线时钟。从机对主机的请求进行响应,其中,及时判断主机发送的各种地址、命令位、数据、响应位等,然后根据不同模式通过软件配置控制寄存器来调整自身的模式,以配合完成通信。
在传统的I2C设计中,由数据寄存器的空和满来触发下一次的数据传输。因此,当从机处于发送状态时,发送最后一次数据后,数据寄存器变空,此时,依然会触发传输请求标志信号而再向数据寄存器填入数据,如图1中的虚线框所示。主机提供时钟信号给从机,每次9个周期。在从机发送模式中,数据寄存器空时会触发中断,应及时填入数据;否则,可能造成下溢。而在从机接收模式中,数据寄存器满时会触发中断,应及时读取数据;否则,可能造成上溢。当从机在发送模式中发送完所需传输的数据的最后一字节数据后,主机已经获取全部数据,但由于从机处于发送模式,数据寄存器空依然会再次触发中断响应以指示从机再向数据寄存器填入欲发送的数据,但此时从机并不应该再向数据寄存器填入新的数据。
为了防止从机传送完主机所请求的数据后继续向主机传输数据,需要在最后一笔数据传输后想办法停止触发传输,目前现有技术中有以下几种方式:
1、鉴于从机发送模式下,最后一字节数据传输后的缺陷(一直等待填入新数据),可以关闭发送数据寄存器空(TxE)中断,但是,此方法需要硬件支持独立关闭发送数据寄存器空的中断,并且,在关闭该发送数据寄存器空中断后,何时打开该发送数据寄存器空中断将成为新问题。例如,通常当从机发送完所有数据后便切换到接收模式,此时若接收到主机发送来的再次请求从机发送数据的命令,则从机需要在接收数据寄存器满(RxF)中断中加入逻辑判断来打开发送其数据寄存器空中断再次进入发送模式;
2、将从机的模式切换到接收状态,通过再额外空读一次接收数据寄存器来使接收数据寄存器满中断不被触发,从而停止中断响应以终止从机向主机发送数据,但是程序的流程繁琐且行为不易于理解,并且在从机与主机多次进行数据传输时,需要判断繁琐的状态位,反复在发送模式和接收模式之间切换从机的工作模式;
3、通过写入空(dummy)数据来填满发送数据寄存器空,进而防止宕在发送数据寄存器空中断中,但是,写入空数据可能导致再次传输时发送的数据错误,影响传输。
发明内容
有鉴于此,有必要提供一种从机使用I2C总线与主机连接的从机及其通信方法。
本发明解决上述技术问题所采用的技术方案是提供了一种从机使用I2C总线与主机连接的通信方法,包括:在从机处于发送模式时,检测字节传输完成标志位的状态;当检测到所述字节传输完成标志位处于第一状态,清除所述字节传输完成标志位以在所述发送模式中终止向所述主机发送数据;其中,所述第一状态表示所述主机请求的所有数据已由所述从机发送完成。
其中,所述通信方法还包括:当检测到所述字节传输完成标志位处于第二状态,则继续向所述主机发送数据,其中,所述第二状态表示所述主机请求发送的部分数据已发送完成。
其中,所述向所述主机发送数据,包括:向所述从机的发送数据寄存器写入新的数据。
其中,所述第一状态和所述第二状态根据所述字节传输完成标志位的数值以及其数值的时长来确定。
其中,所述第一状态的时长大于所述第二状态的时长。
其中,所述字节传输完成标志位在发送模式下,每完成发送一字节数据则被设置为所述第二状态,且当所述主机请求发送的所有数据发送完成时被设置为所述第一状态。
其中,还包括:在处于接收模式时,接收所述主机当前发送的数据;当完成接收所述主机当前发送的数据时,所述字节传输完成标志位处于第二状态,则继续获取所述主机发送的数据。
其中,所述接收所述主机当前发送的数据,包括:将所接收的所述主机当前发送的数据写入所述从机的接收数据寄存器中。
其中,所述字节传输完成标志位在接收模式下,每完成接收一字节数据则被设置为所述第二状态。
其中,还包括:硬件自动识别所接收到的所述主机的读写命令信号且在所接收的从机地址与自身地址匹配时,根据所述读写命令信号自动配置所述从机的工作模式为所述发送模式或接收模式。
其中,所述根据所述读写命令信号自动配置所述从机的工作模式为所述发送模式或接收模式包括:获取对应于所述从机地址的读写命令位;在所述读写命令位为第一符号时,将所述从机的驱动程序配置为发送模式,在所述读写命令位为第二符号时,将所述从机的驱动程序配置为接收模式。
本发明解决上述技术问题所采用的另一技术方案是提供了一种使用I2C总线与主机连接的从机,包括:检测模块,用于在所述从机处于发送模式时,检测字节传输完成标志位的状态;处理模块,耦接于所述检测模块,用于当所述检测模块检测到所述字节传输完成标志位处于第一状态时,清除所述字节传输完成标志位以在所述发送模式中终止向所述主机发送数据;其中,所述第一状态表示所述主机请求的所有数据已由所述从机发送完成。
其中,所述处理模块还用于:当所述检测模块检测到所述字节传输完成标志位处于第二状态,则继续向所述主机发送数据,其中,所述字节传输完成标志位的第二状态用于在所述从机处于发送模式时表示所述主机请求发送的部分数据已发送完成。
本发明解决上述技术问题所采用的又一技术方案是提供了一种使用I2C总线与主机连接的从机,包括:运算逻辑电路,用于在所述从机处于发送模式时,检测字节传输完成标志位的状态;控制电路,耦接于所述运算逻辑电路,用于当检测模块检测到所述字节传输完成标志位处于第一状态时,清除所述字节传输完成标志位以在所述发送模式中终止向所述主机发送数据;其中,所述第一状态表示所述主机请求的所有数据已由所述从机发送完成。
本发明的有益效果有:相对于传统的I2C设计,在兼容标准的I2C总线协议的基础上,配置简单,且从机处于发送状态时,在完成最后一字节数据的传输时无需切换从机的工作模式来停止从机继续传输数据,响应快速。此外,也无需额外空读数据寄存器或者写入空数据来停止从机继续传输数据,可靠性高。
附图说明
下面将结合附图及实施方式对本发明作进一步说明,附图中:
图1是传统的I2C设计中从机的波形图;
图2是本发明第一实施例的从机的通信方法的流程图;
图3是本发明上述第一实施例的I2C设计中从机的波形图;
图4是本发明第二实施例的从机的通信方法的部分流程图;
图5是本发明上述第二实施例的I2C设计中从机的波形图;
图6是本发明第一实施例的从机的结构示意图;
图7是本发明第二实施例的从机的结构示意图。
具体实施方式
为使本领域的技术人员更好地理解本发明的技术方案,下面结合附图和具体实施方式对本发明的技术方案做进一步详细描述。
为便于理解本发明,先对本发明在从机中新设置的字节传输完成标志位(byteend,英文简称:BND)进行说明。
该字节传输完成标志位BND用于标识数据传输的状态。
在从机处于发送模式过程中,该字节传输完成标志位BND至少可以为第一字符或第二字符。其中,该第一字符用于触发从机继续发送数据,例如,用于触发从机的处理器向从机的发送数据寄存器写入数据;第二字符用于触发从机停止发送数据,例如,用于触发从机的处理器停止向从机的发送数据寄存器写入数据。该字节传输完成标志位BND的值可由从机的硬件设置,例如由其寄存器设置。在具体应用中,该第一字符可为1,第二字符可为0,或者该第一字符可为0,第二字符可为1。
该字节传输完成标志位BND还包括有第一状态和第二状态,分别表示主机请求的所有数据已由从机发送完成和主机请求的部分数据已由从机发送完成。具体地,该第一状态和第二状态可根据该字节传输完成标志位的数值以及其数值的时长进行划分。例如,在一实施例中,当字节传输完成标志位为第一字符的时长大于一时间值时确定为处于第一状态,当字节传输完成标志位为第一字符的时长不大于该时间值时确定为处于第二状态。或者说,当字节传输完成标志位为第一字符时,第一状态的时长大于第二状态的时长,该时间值或时长可以根据从机的读写速度、执行指令的速度等具体应用进行设定。
如图2所示,是本发明第一实施例的从机通信方法的流程图,其中,从机使用I2C总线与主机连接。该方法包括以下步骤:
步骤S202:在从机处于发送模式时,检测字节传输完成标志位的状态。
本实施例的执行主体为从机,该从机相对主机而言。主机和从机分别为含有I2C总线接口的器件,例如处理器。
从机的工作模式包括发送模式和接收模式,发送模式是指从机向主机向发送数据,接收模式是指从机从主机接收数据。在本实施例中,通过硬件自动识别所接收到的主机的读写命令信号且在所接收的从机地址与自身地址匹配时,根据读写命令信号自动配置从机的工作模式为发送模式或接收模式。具体地,获取对应于从机地址的读写命令位;在读写命令位为第一符号时,将从机的驱动程序配置为发送模式,在读写命令位为第二符号时,将从机的驱动程序配置为接收模式。在本实施例中,第一符号和第二符号采用不同的符号来区别以配置不同的工作模式,其中第一符号可以为1,第二符号可以为0,从机地址为7位,在本发明中,第一符号和第二符号不作限定,可根据开发需求和习惯来设置。
字节传输完成标志位BND的状态的设置由硬件实现,例如寄存器,在从机处于发送模式时,其包括第一状态和第二状态,其中第一状态用于表示主机请求的所有数据已由从机发送完成,第二状态用于表示主机请求的部分数据已由从机发送完成。
步骤S204:当检测到字节传输完成标志位处于第一状态,清除字节传输完成标志位以在发送模式中终止向主机发送数据。
向主机发送数据包括向从机的发送数据寄存器写入新的需发送的数据。清除字节传输完成标志位BND表示将该字节传输完成标志位BND上的数值设置为第二字符,在本实施例中,第二字符为0,即将该字节传输完成标志位上的数值清零,此时,该字节传输完成标志位为第二字符,从机停止发送数据,不再向从机的发送数据寄存器写入新的数据。在字节传输完成标志位BND处于第一状态时,主机请求的所有数据已由从机发送完成,即最后一字节数据传输完成,此时,从机清除字节传输完成标志位BND,以触发从机不再向从机的发送数据寄存器写入新的数据,而无需切换从机的工作模式,从机即终止向主机发送数据。在本实施例中,向设置该字节传输完成标志位BND的硬件内写入1/0来实现清除字节传输完成标志位BND,在其他实施例中,还可以通过其他方式来实现清除字节传输完成标志位BND,例如,读取设置字节传输完成标志位BND的硬件内的数值,进而来实现清除字节传输完成标志位BND。
相对于传统的I2C设计,上述实施例通过字节传输完成标志位来标记从机处于发送状态时的数据发送情况,在兼容标准的I2C总线协议的基础上,配置简单,且从机处于发送状态时,在完成最后一字节数据的传输时无需切换从机的工作模式来停止从机继续传输数据,响应快速,同时,无需额外空读数据寄存器或者写入空数据来停止从机继续传输数据,可靠性高且配置简单。对于开发者,无需判断众多繁琐的状态位(例如图1的empty和full),无需反复切换传输方向(例如发送模式和接收模式),可以简化驱动程序开发流程,更提高了***响应速度。为进一步提升I2C总线的传输速率提供可能,扩展了I2C总线的应用场景。
在一实施例中,当检测到字节传输完成标志位BND处于第二状态,则继续向主机发送数据。
第二状态表示主机请求的部分数据已由从机发送完成,即还存在主机请求发送的数据没有由从机发送完,此时,从机需继续向主机发送数据,其中向主机发送数据包括向从机的发送数据寄存器写入新的数据。新的数据是指从机需要发送给主机的数据,也即主机请求的数据。具体地,从机处于发送模式时,从机向主机发送数据的过程中,即数据传输的过程中,每完成发送一字节数据,则字节传输完成标志位BND被设置为第二状态,直到主机请求发送的所有数据均发送完成,此时,字节传输完成标志位BND被设置为第一状态。
下面结合图3中的波形图对从机处于发送模式时的通信过程进行详细说明。具体以第一字符为1,第二字符为0以及读写命令位的第一符号为1进行举例说明。
从机检测到开始信号start时,字节传输完成标志位BND被设置为0。从机接收地址字节,此时,从机处于地址匹配阶段,字节传输完成标志位BND一直保持为0,在该地址字节传输匹配完成时,字节传输完成标志位BND保持为0,继而向从机的发送数据寄存器写入新的数据,初始时间t0后,字节传输完成标志位BND仍然为0,其中,地址字节包括从机地址和读写命令位,且由于读写命令位为第一符号,硬件可判断从机处于发送模式。
随后,从机发送一字节数据,具体地,在发送该字节数据的过程中,字节传输完成标志位BND保持为0,在该字节数据传输完成时,字节传输完成标志位BND被置起为1,此时,触发从机继续向从机的发送数据寄存器写入新的数据,即写入要发送的下一字节数据,第一时间t1后,完成向发送数据寄存器写入下一字节数据,此时,字节传输完成标志位BND由于发送数据寄存器中被填入了新的数据而被清零,即字节传输完成标志位BND的数值由1变为0,此时指示停止向发送数据寄存器写入数据,进而从机开始发送该新被填入的下一字节数据以进入下一发送阶段。在此阶段中,字节传输完成标志位BND被置起为1的时长为第一时间t1,不大于预设时间值,即字节传输完成标志位BND处于第二状态。
在从机完成发送上述新的一字节数据后,字节传输完成标志位BND的数值再次变成0,从机继续发送其发送数据寄存器内写入的后续下一字节数据,其过程与上一字节数据发送的过程相同,在此不再说明。
直到从机完成发送最后一字节数据时,主机请求的所有数据传输完成,字节传输完成标志位BND被置起为1,会触发从机再尝试写入新的数据,但是此时,主机请求的所有数据已发送完成,没有新的数据可以写入到从机的发送数据寄存器内,故字节传输完成标志位BND保持为1,第二时间t2后,从机判断当前字节传输完成标志位BND为1的时间t2大于预设时间值,即字节传输完成标志位BND处于第一状态,则向设置字节传输完成标志位BND的硬件内写入1/0,以使字节传输完成标志位BND被清零,即字节传输完成标志位BND的数值由1变为0,也即清除字节传输完成标志位BND,进而停止向发送数据寄存器写入数据,停止再次触发中断并直接终止从机继续向主机发送数据,处于发送状态的从机的本次通信过程结束。此实施例的方法不需要采用将从机额外切换至接收模式来空读寄存器的方式或者写入空数据的方式来终止从机传输。
之后,从机等待开始信号start,若检测到开始信号start,则再进行下一次通信过程,如上述过程相同。
需要说明的是,在上述处于发送模式的通信过程中,从机接收到地址字节时,向主机返回应答信号。从机每次向主机完成发送一个字节数据,均是在接收到主机因接收到上一字节数据而反馈的一个应答信号之后。具体如,在接收到主机的应答信号后,从机再向发送数据寄存器写入新字节数据并进行再次发送。
如图4所示,是本发明第二实施例的从机通信方法的流程图,第二实施例与第一实施例的区别在于,在第一实施例的基础上,该方法还包括:
步骤S406:在从机处于接收模式时,接收主机当前发送的数据;
本实施例的执行主体同样是从机,配置从机的工作模式的方式也与上述实施例相同,在此不再赘述。需要说明的是,在本实施例中,当从机处于接收模式时,配置从机的工作模式时,读写命令位为第二符号。接收主机当前发送的数据包括将从机接收的主机当前发送的数据写入接收数据寄存器中,以便从从机的接收数据寄存器中读取主机当前发送的数据。
步骤S408:当完成接收主机当前发送的数据时,字节传输完成标志位处于第二状态。
字节传输完成标志位BND用于标识数据传输的状态,该字节传输完成标志位BND至少可以为第一字符或第二字符。其中,该第一字符用于触发从机继续接收数据,例如,触发从机的处理器从从机的接收数据寄存器读取主机发送的数据;第二字符用于触发从机停止接收数据,具体如,触发从机的处理器停止从从机的接收数据寄存器读取数据。该字节传输完成标志位的值可由从机的硬件设置,例如由其寄存器设置。在具体应用中,该第一字符可为1,第二字符可为0,或者该第一字符可为0,第二字符可为1。
在从机处于接收模式时,从机完成接收主机当前发送的数据时,字节传输完成标志位BND处于第二状态,即第二状态表示主机当前发送的数据已完成接收。继而从机继续接收主机发送的下一数据,在完成接收时,字节传输完成标志位BND处于第二状态。具体地,从机处于接收模式时,从机接收主机发送的数据的过程中,从机每完成接收一字节数据,字节传输完成标志位BND被设置为第二状态,其中,从机接收主机发送的数据的过程包括数据传输的过程和从从机的接收数据寄存器读取主机发送的数据的过程。
通过上述实施例的实施,相对于传统的I2C设计,通过字节传输完成标志位来标记从机处于接收状态时的数据接收情况,在兼容标准的I2C总线协议的基础上,配置简单。
下面结合图5中的波形图对从机处于接收模式时的通信过程进行详细说明。具体以第一字符为1,第二字符为0以及读写命令位的第二符号为0进行举例说明。
从机检测到开始信号start时,字节传输完成标志位BND被设置为0。从机接收地址字节,此时,从机处于地址匹配阶段,字节传输完成标志位BND一直保持为0,在该地址字节传输完成时,字节传输完成标志位BND保持为0,初始时间t0后,字节传输完成标志位BND仍然为0,其中,地址字节包括从机地址和读写命令位,且由于读写命令位为第二符号,从机处于接收模式。
随后,从机接收一字节数据,具体地,在接收该字节数据的过程中,字节传输完成标志位BND保持为0,在该字节数据传输完成时,字节传输完成标志位BND被置起为1,此时,从从机的接收数据寄存器读取刚接收到的该字节数据,第一时间t1后,完成从接收数据寄存器读取该字节数据,此时,字节传输完成标志位BND被清零,即字节传输完成标志位BND的数值由1变为0,停止从接收数据寄存器读取数据,进而从机开始接收该下一字节数据以进入下一阶段。
在从机完成读取上述一字节数据后,字节传输完成标志位BND的数值变成0,触发从机开始接收下一字节数据,其过程与上一字节数据接收的过程相同,在此不在说明。
直到主机将最后一字节数据传输完成时,字节传输完成标志位BND被置起为1,从从机的接收数据寄存器中读取该最后一字节数据,在第一时间t1后,完成从接收数据寄存器读取该最后一字节数据,此时,字节传输完成标志位BND被清零,即字节传输完成标志位BND的数值由1变为0。此时,从机在检测到结束信号stop时,从机继续处于等待接收主机数据的过程,直至主机再次发送数据或者从机转换工作模式。
需要说明的是,在上述处于接收模式的通信过程中,从机接收到地址字节时,向主机返回应答信号。从机每次完成接收主机发送的一个字节数据后,均向主机返回应答信号。
如图6所示,是本发明第一实施例的从机的结构示意图,该从机600使用I2C总线与主机连接。该从机600可以为含有I2C总线接口的器件,例如,处理器。该从机600包括检测模块610和处理模块620,处理模块620耦接于检测模块610,其中:
检测模块610用于在处于发送模式时,检测字节传输完成标志位BND的状态。字节传输完成标志位BND用于标识数据传输的状态,在从机处于发送模式时,其包括第一状态和第二状态,其中第一状态用于表示主机请求的所有数据已由从机发送完成,第二状态用于表示主机请求的部分数据已由从机发送完成,具体的内容在上述已作说明,参照上述说明。
处理模块620用于当检测到字节传输完成标志位处于第一状态时,清除字节传输完成标志位以在发送模式中终止向主机发送数据。清除字节传输完成标志位BND表示将该字节传输完成标志位上的数值设置为第二字符,在本实施例中,第二字符为0,即将该字节传输完成标志位上的数值清零,此时,该字节传输完成标志位为第二字符,从机停止发送数据,不再向从机的发送数据寄存器写入新的数据。
进一步地,在字节传输完成标志位BND处于第一状态时,主机请求的所有数据已由从机发送完成,即最后一字节数据传输完成,此时,从机清除字节传输完成标志位BND,以控制从机不再向从机的发送数据寄存器写入新的数据,从而清除字节传输完成标志位BND时无需切换从机的工作模式。其中,清除字节传输完成标志位BND详见上述说明。
进一步地,处理模块520还用于当检测模块检测到字节传输完成标志位BND处于第二状态,则继续向主机发送数据。从机处于发送模式时,从机向主机发送数据的过程中,即数据传输的过程中,每完成发送一字节数据,字节传输完成标志位BND被设置为第二状态,直到主机请求发送的所有数据均发送完成,此时,字节传输完成标志位BND被设置为第一状态。
上述从机的模块可对应用于执行上述方法实施例中的步骤,具体说明请参阅上述方法实施例的描述。
通过上述实施例的实施,相对于传统的I2C设计中的从机,通过设置字节传输完成标志位BND来标记从机处于发送状态时的数据发送情况,在兼容标准的I2C总线协议的基础上,配置简单,且从机处于发送状态时,在完成最后一字节数据的传输时无需切换从机的工作模式来停止从机继续传输数据,响应快速,同时,无需额外空读数据寄存器或者写入空数据来停止从机继续传输数据,可靠性高。
如图7所示,是本发明第二实施例的从机的结构示意图,该从机700可以为含有I2C总线接口的器件,例如,处理器。该从机700包括运算逻辑电路710、寄存器720、总线730以及控制电路740,其中,通过总线730实现运算逻辑电路710、寄存器720和控制电路740之间的耦接。
运算逻辑电路710用于在处于发送模式时,检测字节传输完成标志位BND的状态。字节传输完成标志位BND用于标识数据传输的状态,在从机处于发送模式时,其包括第一状态和第二状态,其中第一状态用于表示主机请求的所有数据已由从机发送完成,第二状态用于表示主机请求的部分数据已由从机发送完成,具体的内容在上述已作说明,参照上述说明。
控制电路740用于当检测到字节传输完成标志位处于第一状态时,清除字节传输完成标志位以在发送模式中终止向主机发送数据。清除字节传输完成标志位BND表示将该字节传输完成标志位上的数值设置为第二字符,在本实施例中,第二字符为0,即将该字节传输完成标志位上的数值清零,此时,该字节传输完成标志位为第二字符,控制电路740停止触发再次发送数据,不再向从机的发送数据寄存器写入新的数据。
寄存器720用于保存从机执行指令中临时存放的操作数、中间的操作结果或者最好的操作结果。例如,字节传输完成标志位BND,从机处于发送或者接收模式时所要发送或者接收的地址字节、字节数据等。
进一步地,在字节传输完成标志位BND处于第一状态时,主机请求的所有数据已由从机发送完成,即最后一字节数据传输完成,此时,控制电路740清除字节传输完成标志位BND,以触发控制电路740不再向从机的发送数据寄存器写入新的数据,从而清除字节传输完成标志位BND时无需切换从机的工作模式。其中,清除字节传输完成标志位BND详见上述说明。
进一步地,控制电路740还用于当检测模块检测到字节传输完成标志位BND处于第二状态,则继续向主机发送数据。从机处于发送模式时,从机向主机发送数据的过程中,即数据传输的过程中,每完成发送一字节数据,字节传输完成标志位BND被设置为第二状态,直到主机请求的所有数据均由从机发送完成,此时,字节传输完成标志位BND被设置为第一状态。
需要说明的是,在本实施例中,从机700还包括处理器内其他电路,例如指令缓存器,用于向运算逻辑电路710发放预定的多个指令等。
上述从机的器件可对应用于执行上述方法实施例中的步骤,具体说明请参阅上述方法实施例的描述。
以上仅为本发明的实施方式,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围。
Claims (14)
1.一种从机使用I2C总线与主机连接的通信方法,其特征在于,包括:
在从机处于发送模式时,检测字节传输完成标志位的状态,其中所述字节传输完成标志位由所述从机的硬件设置;
当检测到所述字节传输完成标志位处于第一状态,清除所述字节传输完成标志位以在所述发送模式中终止向所述主机发送数据;
其中,所述第一状态表示所述主机请求的所有数据已由所述从机发送完成,其中当所述字节传输完成标志位为第一字符的时长大于一时间值时,所述字节传输完成标志位确定为处于第一状态。
2.根据权利要求1所述的通信方法,其特征在于,所述通信方法还包括:
当检测到所述字节传输完成标志位处于第二状态,则继续向所述主机发送数据,其中,所述第二状态表示所述主机请求发送的部分数据已发送完成。
3.根据权利要求1或2所述的通信方法,其特征在于,所述向所述主机发送数据,包括:
向所述从机的发送数据寄存器写入新的数据。
4.根据权利要求2所述的通信方法,其特征在于,所述第一状态和所述第二状态根据所述字节传输完成标志位的数值以及其数值的时长来确定。
5.根据权利要求2所述的通信方法,其特征在于,所述第一状态的时长大于所述第二状态的时长。
6.根据权利要求2所述的通信方法,其特征在于,所述字节传输完成标志位在发送模式下,每完成发送一字节数据则被设置为所述第二状态,且当所述主机请求发送的所有数据发送完成时被设置为所述第一状态。
7.根据权利要求1所述的通信方法,其特征在于,还包括:
在处于接收模式时,接收所述主机当前发送的数据;
当完成接收所述主机当前发送的数据时,所述字节传输完成标志位处于第二状态,则继续获取所述主机发送的数据。
8.根据权利要求7所述的通信方法,其特征在于,所述接收所述主机当前发送的数据,包括:
将所接收的所述主机当前发送的数据写入所述从机的接收数据寄存器中。
9.根据权利要求7所述的通信方法,其特征在于,所述字节传输完成标志位在接收模式下,每完成接收一字节数据则被设置为所述第二状态。
10.根据权利要求7中的通信方法,其特征在于,还包括:
所述硬件自动识别所接收到的所述主机的读写命令信号,且在所接收的从机地址与自身地址匹配时,根据所述读写命令信号自动配置所述从机的工作模式为所述发送模式或所述接收模式。
11.根据权利要求10中的通信方法,其特征在于,所述根据所述读写命令信号自动配置所述从机的工作模式为所述发送模式或接收模式包括:
获取对应于所述从机地址的读写命令位;
在所述读写命令位为第一符号时,将所述从机的驱动程序配置为发送模式,在所述读写命令位为第二符号时,将所述从机的驱动程序配置为接收模式。
12.一种使用I2C总线与主机连接的从机,其特征在于,包括:
检测模块,用于在所述从机处于发送模式时,检测字节传输完成标志位的状态,其中所述字节传输完成标志位由所述从机的硬件设置;
处理模块,耦接于所述检测模块,用于当所述检测模块检测到所述字节传输完成标志位处于第一状态时,清除所述字节传输完成标志位以在所述发送模式中终止向所述主机发送数据;
其中,所述第一状态表示所述主机请求的所有数据已由所述从机发送完成,其中当所述字节传输完成标志位为第一字符的时长大于一时间值时,所述字节传输完成标志位确定为处于第一状态。
13.根据权利要求12中所述的从机,其特征在于,所述处理模块还用于:
当所述检测模块检测到所述字节传输完成标志位处于第二状态,则继续向所述主机发送数据,其中,所述字节传输完成标志位的第二状态用于在所述从机处于发送模式时表示所述主机请求发送的部分数据已发送完成。
14.一种使用I2C总线与主机连接的从机,其特征在于,包括:
运算逻辑电路,用于在所述从机处于发送模式时,检测字节传输完成标志位的状态,其中所述字节传输完成标志位由所述从机的硬件设置;
控制电路,耦接于所述运算逻辑电路,用于当检测模块检测到所述字节传输完成标志位处于第一状态时,清除所述字节传输完成标志位以在所述发送模式中终止向所述主机发送数据;
其中,所述第一状态表示所述主机请求的所有数据已由所述从机发送完成,其中当所述字节传输完成标志位为第一字符的时长大于一时间值时,所述字节传输完成标志位确定为处于第一状态。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611127631.5A CN106681953B (zh) | 2016-12-09 | 2016-12-09 | 使用i2c总线与主机连接的从机及其通信方法 |
US15/835,457 US10482047B2 (en) | 2016-12-09 | 2017-12-08 | Slave device connected to master device via I2C bus and communication method thereof |
TW106143261A TWI731200B (zh) | 2016-12-09 | 2017-12-08 | 使用i2c匯流排與主機連接的從機及其通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611127631.5A CN106681953B (zh) | 2016-12-09 | 2016-12-09 | 使用i2c总线与主机连接的从机及其通信方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106681953A CN106681953A (zh) | 2017-05-17 |
CN106681953B true CN106681953B (zh) | 2020-04-10 |
Family
ID=58869109
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611127631.5A Active CN106681953B (zh) | 2016-12-09 | 2016-12-09 | 使用i2c总线与主机连接的从机及其通信方法 |
Country Status (3)
Country | Link |
---|---|
US (1) | US10482047B2 (zh) |
CN (1) | CN106681953B (zh) |
TW (1) | TWI731200B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109873674B (zh) * | 2017-12-05 | 2021-11-16 | 佛山市顺德区美的电热电器制造有限公司 | 电器的匹配方法、匹配***与加热平台 |
CN108280041B (zh) * | 2017-12-29 | 2020-03-10 | 武汉船舶通信研究所(中国船舶重工集团公司第七二二研究所) | 一种内部集成电路主机的通信方法和装置 |
CN108153687B (zh) * | 2017-12-30 | 2021-03-30 | 深圳市科陆电子科技股份有限公司 | 一种基于mcu的串口通信方法和*** |
CN108776590A (zh) * | 2018-05-31 | 2018-11-09 | 湖南品腾电子科技有限公司 | 一种精简烧录方法及装置 |
CN109889593B (zh) * | 2019-02-27 | 2021-11-12 | 中国人民解放军海军工程大学 | 一种移动机动保障方舱的分布式主从机通讯方法及装置 |
JP2023541308A (ja) * | 2020-09-17 | 2023-09-29 | 華為技術有限公司 | インター集積回路ベースの通信方法および装置 |
CN112463662B (zh) * | 2020-12-16 | 2024-04-05 | 福州创实讯联信息技术有限公司 | 一种用户态控制i2c设备的方法与终端 |
CN112637248B (zh) * | 2021-03-09 | 2021-05-18 | 厚普清洁能源股份有限公司 | 一种lng加注趸船的船端、岸端设备通信处理方法 |
CN114443544B (zh) * | 2022-04-02 | 2022-06-28 | 井芯微电子技术(天津)有限公司 | 基于i2c模块主从模式切换方法及设备 |
CN114817100B (zh) * | 2022-04-08 | 2023-09-29 | 武汉光迅电子技术有限公司 | 一种用于单板的数据读取方法和装置 |
CN116166594B (zh) * | 2023-04-26 | 2023-07-18 | 闪极科技(深圳)有限公司 | 一种单地址多从机的iic总线电路及其传输方法和装置 |
CN117651022B (zh) * | 2024-01-30 | 2024-05-03 | 辅易航智能科技(苏州)有限公司 | 数据传输方法、装置、主设备和计算机可读存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633128A (zh) * | 2004-12-31 | 2005-06-29 | 北京中星微电子有限公司 | 一种通讯传输控制装置及实现通讯协议控制的方法 |
JP2008242884A (ja) * | 2007-03-28 | 2008-10-09 | Matsushita Electric Ind Co Ltd | I2cバス制御回路 |
CN102023954A (zh) * | 2009-09-17 | 2011-04-20 | 研祥智能科技股份有限公司 | 具有多路i2c总线的装置、处理器、***主板及工控计算机 |
US9298908B1 (en) * | 2014-10-17 | 2016-03-29 | Lexmark International, Inc. | Methods and apparatus for setting the address of a module using a voltage |
CN105786753A (zh) * | 2016-02-22 | 2016-07-20 | 上海斐讯数据通信技术有限公司 | 一种i2c总线上的主从设备间的传输数据的方法及设备 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100272102A1 (en) * | 2009-04-23 | 2010-10-28 | Stmicroelectronics, Inc. | System and method for packet messaging and synchronization |
US9003096B2 (en) | 2011-03-16 | 2015-04-07 | Texas Instruments Incorporated | Serial interface |
US9910819B2 (en) | 2013-03-11 | 2018-03-06 | Microchip Technology Incorporated | Two-wire serial interface and protocol |
CN106462526B (zh) | 2014-02-07 | 2019-12-31 | 安晟信医疗科技控股公司 | 用于多主总线协议的方法及装置 |
-
2016
- 2016-12-09 CN CN201611127631.5A patent/CN106681953B/zh active Active
-
2017
- 2017-12-08 US US15/835,457 patent/US10482047B2/en active Active
- 2017-12-08 TW TW106143261A patent/TWI731200B/zh active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1633128A (zh) * | 2004-12-31 | 2005-06-29 | 北京中星微电子有限公司 | 一种通讯传输控制装置及实现通讯协议控制的方法 |
JP2008242884A (ja) * | 2007-03-28 | 2008-10-09 | Matsushita Electric Ind Co Ltd | I2cバス制御回路 |
CN102023954A (zh) * | 2009-09-17 | 2011-04-20 | 研祥智能科技股份有限公司 | 具有多路i2c总线的装置、处理器、***主板及工控计算机 |
US9298908B1 (en) * | 2014-10-17 | 2016-03-29 | Lexmark International, Inc. | Methods and apparatus for setting the address of a module using a voltage |
CN105786753A (zh) * | 2016-02-22 | 2016-07-20 | 上海斐讯数据通信技术有限公司 | 一种i2c总线上的主从设备间的传输数据的方法及设备 |
Also Published As
Publication number | Publication date |
---|---|
TW201822011A (zh) | 2018-06-16 |
CN106681953A (zh) | 2017-05-17 |
US10482047B2 (en) | 2019-11-19 |
US20180165232A1 (en) | 2018-06-14 |
TWI731200B (zh) | 2021-06-21 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106681953B (zh) | 使用i2c总线与主机连接的从机及其通信方法 | |
EP3086236B1 (en) | Bus communications with multi-device messaging | |
US8667204B2 (en) | Method to differentiate identical devices on a two-wire interface | |
US6842806B2 (en) | Method and apparatus for interconnecting wired-AND buses | |
JP6629215B2 (ja) | マルチマスターバスプロトコルのための方法および装置 | |
US20070088874A1 (en) | Offload engine as processor peripheral | |
TWI639086B (zh) | 具有可中斷指令序列的記憶體及其操作方法 | |
JP2018517987A (ja) | 50ナノ秒スパイクフィルタ用のテスト | |
US20180173465A1 (en) | System and method for communication in a semiconductor device | |
CN110765058A (zh) | Gpio实现spi从机功能方法、***、设备及介质 | |
KR20110098974A (ko) | Usb 디바이스의 빠른 시동을 위한 시스템, 장치, 및 방법 | |
JP6602579B2 (ja) | 半導体装置およびシステム | |
US6591322B1 (en) | Method and apparatus for connecting single master devices to a multimaster wired-and bus environment | |
US20200195759A1 (en) | Protocol auto-detection | |
US9495178B2 (en) | Electronics apparatus able to revise micro-program and algorithm to revise micro-program | |
CN101937413B (zh) | 一种i2c总线的通信方法 | |
US7549009B2 (en) | High-speed PCI interface system and a reset method thereof | |
CN113722261A (zh) | Spi扩展片选数目和增强读写响应时间灵活性的方法 | |
US10838654B2 (en) | Semiconductor device including UFS system for data transfer | |
US11580052B2 (en) | I2C communication | |
JP2016177333A (ja) | 情報処理装置及び情報処理装置の制御方法 | |
JP2014232414A (ja) | I2c通信スレーブ装置 | |
CN212229628U (zh) | 从机设备 | |
US11782497B2 (en) | Peripheral component interconnect express (PCIE) interface device and method of operating the same | |
US20230305816A1 (en) | Device and method for handling programming language function |
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 | ||
CB02 | Change of applicant information | ||
CB02 | Change of applicant information |
Address after: Hefei City, Anhui province 230000 Wangjiang Road No. 800 building 10 layer A3 Innovation Industrial Park Applicant after: Hefei Jie FA Technology Co., Ltd. Address before: Hefei City, Anhui province 230000 Wangjiang Road No. 800 building 10 layer A3 Innovation Industrial Park Applicant before: Smart technology (Hefei) Co., Ltd. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |