CN112416841A - 基于i2c总线的多机通信的实现方法及多机通信系统 - Google Patents
基于i2c总线的多机通信的实现方法及多机通信系统 Download PDFInfo
- Publication number
- CN112416841A CN112416841A CN202011249072.1A CN202011249072A CN112416841A CN 112416841 A CN112416841 A CN 112416841A CN 202011249072 A CN202011249072 A CN 202011249072A CN 112416841 A CN112416841 A CN 112416841A
- Authority
- CN
- China
- Prior art keywords
- slave device
- master device
- data information
- signal
- addressed slave
- 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
Links
- 230000006854 communication Effects 0.000 title claims abstract description 131
- 238000004891 communication Methods 0.000 title claims abstract description 130
- 238000000034 method Methods 0.000 title claims abstract description 54
- 230000004044 response Effects 0.000 claims abstract description 81
- 230000005540 biological transmission Effects 0.000 description 19
- 238000005516 engineering process Methods 0.000 description 8
- 238000010586 diagram Methods 0.000 description 7
- 230000008569 process Effects 0.000 description 6
- 230000006870 function Effects 0.000 description 4
- 238000012546 transfer Methods 0.000 description 4
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 238000004590 computer program Methods 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000002474 experimental method Methods 0.000 description 2
- 238000006467 substitution reaction Methods 0.000 description 2
- 235000008429 bread Nutrition 0.000 description 1
- 125000004122 cyclic group Chemical group 0.000 description 1
- 238000007639 printing Methods 0.000 description 1
- 239000013589 supplement Substances 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
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/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
- G06F13/4291—Bus transfer protocol, e.g. handshake; Synchronisation on a serial bus, e.g. I2C bus, SPI bus using a clocked protocol
-
- 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/382—Information transfer, e.g. on bus using universal interface adapter
-
- 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)
- Information Transfer Systems (AREA)
Abstract
本发明提供了一种基于I2C总线的多机通信的实现方法和多机通信系统,该方法应用于多机通信系统,总线连接主设备的通用输入输出端口和从设备,实现方法包括:主设备发送开始信号,以开始和从设备通信;主设备发送命令标识,其中,命令标识包括被寻址从设备的地址、读写位中的至少一种;被寻址从设备接收命令标识,并根据命令标识反馈第一应答信号;主设备获取第一应答信号,以确认是否和被寻址从设备建立连接;当主设备获取到第一应答信号后,主设备向被寻址从设备发送数据信息,或者,接收被寻址从设备发送的数据信息;被寻址从设备接收主设备发送的数据信息,或者,被寻址从设备向主设备发送数据信息。
Description
技术领域
本发明涉及通信技术领域,更具体地涉及一种基于I2C总线的多机通信的实现方法及多机通信系统。
背景技术
集成电路间总线(I2C)和串行外设接口(SPI)是嵌入式系统中常用的串行数据接口。其中I2C总线是一种两线制半双工总线,所有设备均连接在两条传输线上。如今许多外围设备如EEPROM、各类传感器等也提供了I2C接口,可以快速便捷的搭建小型的智能系统。
在传输速度上,SPI总线是快于I2C总线的,但快速传输的代价便是SPI总线需要给每一个外接设备单独连接一条连通线,当搭建的智能系统中包含过多的从设备时,SPI传输的弊端就开始显现出来,极大的增加了系统的硬件复杂度。
鉴于上述问题的存在,本申请提出了一种新的基于I2C总线的多机通信的实现方法及多机通信系统。
发明内容
本发明实施例提供一种基于I2C总线的多机通信的实现方法及多机通信系统,以至少解决上述的问题之一。
根据本发明的第一方面,提供了一种基于I2C总线的多机通信的实现方法,应用于多机通信系统,所述多机通信系统包括主设备、至少一个从设备和总线,其中,所述总线连接所述主设备的通用输入输出端口和所述从设备,所述数据通信方法包括:
所述主设备发送开始信号,以开始和从设备通信;
所述主设备发送命令标识,其中,所述命令标识包括被寻址从设备的地址、读写位中的至少一种;
所述被寻址从设备接收所述命令标识,并根据所述命令标识反馈第一应答信号;
所述主设备获取所述第一应答信号,以确认是否和所述被寻址从设备建立连接;
当所述主设备获取到第一应答信号后,所述主设备向所述被寻址从设备发送数据信息,或者,接收所述被寻址从设备发送的数据信息;
所述被寻址从设备接收所述主设备发送的数据信息,或者,所述被寻址从设备向所述主设备发送数据信息。
在一个示例中,所述主设备向所述被寻址从设备发送数据信息,包括:
所述主设备每发送预设字节的数据信息后,所述主设备获取所述从设备反馈的第二应答信号,所述第二应答信号用于指示所述从设备是否已接收到该预设字节的数据信息。
在一个示例中,所述被寻址从设备接收所述主设备发送的数据信息,包括:
所述主设备每发送预设字节的数据信息后,所述被寻址从设备反馈所述第二应答信号。
在一个示例中,所述总线包括时钟线和数据线,其中,所述时钟线连接所述通用输入输出端口的第一管脚,所述数据线连接所述通用输入输出端口的第二管脚,所述开始信号为所述时钟线高电平时所述数据线由高电平变为低电平。
在一个示例中,在所述主设备完成发送或接收数据信息之后,还包括:
所述主设备发送停止信号,以结束和所述被寻址从设备的通信。
在一个示例中,所述停止信号为所述时钟线高电平时所述数据线由低电平变为高电平。
在一个示例中,当所述第一应答信号为所述有效应答信号时,所述主设备和所述被寻址从设备建立连接,所述有效应答信号指示所述地址与被寻址从设备的地址一致。
在一个示例中,所述第二应答信号包括有效应答信号和无效应答信号,当所述第二应答信号为所述有效应答信号时,所述主设备向所述被寻址从设备发送下一预定字节的数据信息,当所述第二应答信号为无效应答信号时,则所述主设备发送停止信号。
在一个示例中,所述有效应答信号为在响应的始终脉冲期间所述数据线的电平由所述从设备拉低并保持在低电平。
在一个示例中,串行通信协议包括以下协议中的一种:I2C通信协议、SPI通信协议。
根据本发明的第二方面,还提供一种基于I2C总线的多机通信系统,所述多机通信系统包括:主设备,至少一个从设备和总线,所述总线连接所述主设备的通用输入输出端口和所述从设备;其中,
所述主设备用于:
发送开始信号,以开始和从设备通信;
发送命令标识,其中,所述命令标识包括被寻址从设备的地址、读写位中的至少一种;
所述被寻址从设备用于:
接收所述命令标识,并根据所述命令标识反馈第一应答信号;
所述主设备还用于:
获取所述第一应答信号,以确认是否和所述被寻址从设备建立连接;
当获取到第一应答信号后,向所述被寻址从设备发送数据信息,或者,接收所述被寻址从设备发送的数据信息;
所述被寻址从设备用于:
接收所述主设备发送的数据信息,或者,向所述主设备发送数据信息。
根据本发明实施例的基于I2C总线的多机通信的实现方法,能够使不具有串行数据接口的主设备例如单片机基于通用输入输出端口(GPIO)模拟串行通信协议,实现了总线上主设备和从设备的数据通信,为没有串行数据接口的主设备提供了一种系统搭建的可选方案,并且本申请实施例的多机通信系统硬件更加简单,通过串行通信协议(例如I2C协议)中的单主多从技术,可以降低成本。
附图说明
通过结合附图对本发明实施例进行更详细的描述,本发明的上述以及其它目的、特征和优势将变得更加明显。附图用来提供对本发明实施例的进一步理解,并且构成说明书的一部分,与本发明实施例一起用于解释本发明,并不构成对本发明的限制。在附图中,相同的参考标号通常代表相同部件或步骤。
图1是根据本发明一个实施例的一种数据通信方法的流程图;
图2是根据本发明一个实施例的主设备进行数据通信的流程图;
图3是根据本发明一个实施例的从设备进行数据通信的流程图;
图4是根据本发明一个实施例的I2C数据传输过程的时序图;
图5是根据本发明一个实施例的开始信号和结束信号的时序图;
图6是根据本发明实施例的一种多机通信系统的示意性框图。
具体实施方式
为了使得本发明的目的、技术方案和优点更为明显,下面将参照附图详细描述根据本发明的示例实施例。显然,所描述的实施例仅仅是本发明的一部分实施例,而不是本发明的全部实施例,应理解,本发明不受这里描述的示例实施例的限制。基于本发明中描述的本发明实施例,本领域技术人员在没有付出创造性劳动的情况下所得到的所有其它实施例都应落入本发明的保护范围之内。
下面,参考附图6对本申请实施例的一种基于I2C总线的多机通信系统进行描述,其中,图6是根据本发明实施例的一种多机通信系统的示意性框图。
在一个示例中,如图6所示,本申请实施例中的基于I2C总线的多机通信系统600包括:主设备601,至少一个从设备602和总线,所述总线连接所述主设备601的通用输入输出端口(GPIO)和所述从设备602。
该多机通信系统600可以是笔记本电脑、台式电脑、仪器仪表、家用电器、医用设备、航空航天、汽车中的电子装置等。
可选地,本申请的串行通信协议可以包括以下协议中的一种:I2C通信协议、SPI通信协议。本申请中主要以通过通用输入输出端口模拟I2C总线实现I2C通信协议为例对本申请的多机通信系统和实现方法进行解释和说明。
总线例如I2C总线是一种两线制同步串行总线,其包括两根传输线,分别为数据线SDA和时钟线SCL。所有设备例如主设备601和从设备602均连接在这两条传输线上。
其中主设备601控制时钟线和数据流向,同时主设备601控制数据传输的开始和结束。从设备602不能控制时钟,也不能发起通信,只能等待主设备601的开始信号和通信请求。
I2C协议支持多主机(也即主设备)多从机(也即从设备)的连接结构,本文中主要以单主设备多从设备的单主多从的应用场景为例。
在一个示例中,如图6所示,I2C总线还包括上拉电阻R,两个上拉电阻R分别连接数据线SDA和时钟线SCL并均电连接电源电压VCC。上拉电阻用于确保两条传输线在空闲时都是高电平,其中上拉电阻的取值可以是本领域技术人员熟知的任意适合的取值,例如10KΩ。
本申请的主设备601可以是任意适合的设备,主设备可以包括处理器和存储器,主设备例如为单片机,单片机可以是例如包括M2芯片的M2e单片机,该单片机可以包括具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等。
主设备601具有GPIO端口,其中,总线的时钟线SCL连接所述通用输入输出端口的第一管脚,所述数据线SDA连接所述通用输入输出端口的第二管脚。主设备的存储器,用于存储数据通信过程中产生的各种数据信息和可执行程序指令,例如用于存储各种应用程序或实现各种具体功能的算法。
主设备的处理器可以控制多机通信系统600中的其它组件以执行期望的功能。例如,处理器能够包括一个或多个嵌入式处理器、处理器核心、微型处理器、逻辑电路、硬件有限状态机(FSM)、数字信号处理器(DSP)、图像处理单元(GPU)或它们的组合。
主设备的处理器用于执行存储器中存储的程序指令,使得所述处理器执行多机通信系统进行通信时序主设备执行的动作和指令。例如主设备的处理器可以执行存储器中存储的程序指令,以通过GPIO端口的第一管脚和第二管脚模拟高电平和低电平,当模拟低电平时则管脚所在总线的电平拉低。
从设备602可以是任意的需要和主设备进行通信的设备,例如其可以是各种传感器、带电可擦可编程只读存储器(EEPROM)等。其中,多个从设备602可以是不同类型的设备,也可以是相同类型的设备,总线连接的从设备602的数量可以根据具体的需要合理的选择设定,在此不做具体限定。
在一个示例中,多机通信系统600还包括通信接口(未示出),用于多机通信系统600中各个组件之间以及多机通信系统600的各个组件和该系统之外的其他装置之间进行通信。
通信接口是可以是目前已知的任意通信协议的接口,例如有线接口或无线接口,其中,通信接口可以包括一个或者多个串口、USB接口、以太网端口、WiFi、有线网络、DVI接口,设备集成互联模块或其他适合的各种端口、接口,或者连接。多机通信系统600还可以接入基于通信标准的无线网络,如WiFi、2G、3G、4G、5G或它们的组合。在一个示例性实施例中,通信接口经由广播信道接收来自外部广播管理系统的广播信号或广播相关信息。在一个示例性实施例中,所述通信接口还包括近场通信(NFC)模块,以促进短程通信。例如,在NFC模块可基于射频识别(RFID)技术,红外数据协会(IrDA)技术,超宽带(UWB)技术,蓝牙(BT)技术和其他技术来实现。
在一个示例中,所述多机通信系统600还包括输入装置(未示出)可以是用户用来输入指令的装置,并且可以包括键盘、轨迹球、鼠标、麦克风和触摸屏等中的一个或多个,或其它控制按钮构成的输入装置。
在一个示例中,多机通信系统600还包括输出装置(未示出),可以向外部(例如用户)输出各种信息(例如图像或声音),并且可以包括显示器、扬声器等中的一个或多个。
本申请的I2C总线的外部电路非常简单,仅需一根数据线和一根时钟线,所有传输协议均通过软件实现,因此在外部设备较多且对传输速度没有特别高要求的应用场景下,I2C总线是更好的选择。在支持I2C通信的外围器件逐渐增多和I2C总线的传输速度不断提高的前提下,通过软件模拟I2C协议是对没有I2C模块的单片机的一种补充,使这些单片机也可以通过I2C总线搭建工作系统。
鉴于前述技术问题的存在,本申请提供了一种实现方法基于I2C总线的多机通信的实现方法,应用于多机通信系统,所述多机通信系统包括主设备、至少一个从设备和总线,其中,所述总线连接所述主设备的通用输入输出端口和所述从设备,所述实现方法包括:所述主设备发送开始信号,以开始和从设备通信;所述主设备发送命令标识,其中,所述命令标识包括被寻址从设备的地址、读写位中的至少一种;所述被寻址从设备接收所述命令标识,并根据所述命令标识反馈第一应答信号;所述主设备获取所述第一应答信号,以确认是否和所述被寻址从设备建立连接;当所述主设备获取到第一应答信号后,所述主设备向所述被寻址从设备发送数据信息,或者,接收所述被寻址从设备发送的数据信息;所述被寻址从设备接收所述主设备发送的数据信息,或者,所述被寻址从设备向所述主设备发送数据信息。
根据本发明实施例的实现方法基于I2C总线的多机通信的实现方法,能够使不具有串行数据接口的主设备例如单片机基于通用输入输出端口(GPIO)模拟串行通信协议,实现了总线上主设备和从设备的数据通信,为没有串行数据接口的主设备提供了一种系统搭建的可选方案,并且本申请实施例的多机通信系统硬件更加简单,通过串行通信协议(例如I2C协议)中的单主多从技术,可以降低成本。
下面,参考图1至图5对本申请的实现方法基于I2C总线的多机通信的实现方法进行描述,其中该实现方法可以基于前述的多机通信系统实现。在不冲突的前提下,本申请的实施例中的特征可以相互结合。
本申请实施例提供一种基于I2C总线的多机通信的实现方法,该方法应用于多机通信系统,所述多机通信系统包括主设备、至少一个从设备和总线例如I2C总线,其中,所述总线连接所述主设备的通用输入输出端口和所述从设备,所述总线包括时钟线和数据线,其中,所述时钟线连接所述通用输入输出端口的第一管脚,所述数据线连接所述通用输入输出端口的第二管脚,所述开始信号为所述时钟线高电平时所述数据线由高电平变为低电平。
作为示例,如图1所示,所述实现方法包括以下步骤S1至步骤S6:
首先,在步骤S1中,所述主设备发送开始信号,以开始和从设备通信。
如图2所示,在主设备发送开始信号(也即START信号)之前,还包括初始化的步骤,初始化的目的是使总线的数据线SDA和时钟线SCL全部呈现高电平。
用GPIO模拟开始信号和停止信号,如图4和图5的时序图所示,主设备通过发布开始信号(START信号)和停止信号(STOP信号)来开始和结束通信,其余时间SDA线和SCL线均为高电平。
开始信号和停止信号是在时钟线SCL为高电平期间改变数据线SDA的电平,例如START信号为时钟线高电平时数据线由高电平变为低电平,对应图5中起始条件(STARTcondition)S部分,停止信号为时钟高电平时数据线由低电平变为高电平,对应图5中停止条件(STOP condition)P部分。
接着,在步骤S2中,所述主设备发送命令标识,其中,所述命令标识包括被寻址从设备的地址、读写位中的至少一种。
被寻址从设备也即指主设备需要建立通信的从设备。I2C总线通过主设备发起通信,从设备响应通信。总线上的每一个从设备都有唯一地址,例如7位地址,其中高4位由器件(也即从设备)的生产厂商决定,低3位由软件设置确定,因此在同一I2C总线上,最多可同时连接8个完全相同的器件。主设备通过广播从器件地址选择需要建立通信的从设备。被寻址从设备的地址共有7位,如图4所示,紧接着的第8位是数据方向位(R/W,也即读写位),其中,‘0’表示发送(写),‘1’表示请求数据(读)。
接着,在步骤S3中,被寻址从设备接收所述命令标识,并根据所述命令标识反馈第一应答信号。
被寻址从设备接收所述命令标识,例如如图3所示,被寻址从设备再初始化后,等待开始信号,之后接收被寻址从设备的地址,当判断接收的地址与自身的地址一致时,也即地址正确(yes)时,接收r/w(也即接收读写位),之后发送第一应答信号(ACK),若地址不正确(no),则等待主设备发送的停止信号,当接收到停止信号后,停止本次通信,回到等待信号步骤,以进行下一次的通信。
所述第一应答信号包括有效应答信号和无效应答信号,当所述第一应答信号为所述有效应答信号时,所述主设备和所述被寻址从设备建立连接,所述第一应答信号为无效应答信号时,则所述主设备不与所述被寻址从设备建立连接,而发送停止信号,以结束和被寻址从设备的通信,其中,所述有效应答信号指示所述地址与从设备的地址一致。
被寻址从设备在接收到命令标识后向主设备发送第一应答信号,有效应答信号(ACK)是在响应的时钟脉冲期间,接收器(例如被寻址从设备)必须将SDA线拉低使它在这个时钟脉冲的高电平期间保持稳定的低电平(例如0)。其中,相关的响应时钟脉冲由主设备产生。在响应的时钟脉冲期间,发送器(例如主设备)释放数据线SDA(高),也即将数据线SDA的电平拉高。
无效应答信号也称非应答(not ACK)信号,无效应答信号是在时钟线SCL为高电平期间保持数据线SDA也为高电平(例如1)。
如图3所示,当第一应答信号为无效应答信号时,则等待主设备发送停止信号,当接收到停止信号后,停止本次通信,回到等待信号步骤,以进行下一次的通信。
继续如图3所示,若所述第一应答信号为有效应答信号且未接收到主设备发送的停止信号时,从设备开始接收主设备发送的数据信息。
接着,如图1所示,在步骤S4中,所述主设备获取所述第一应答信号,以确认是否和所述被寻址从设备建立连接。
有效应答信号(ACK)是在响应的时钟脉冲期间,接收器(例如被寻址从设备)必须将SDA线拉低使它在这个时钟脉冲的高电平期间保持稳定的低电平(例如0)。其中,相关的响应时钟脉冲由主设备产生。在响应的时钟脉冲期间,发送器(例如主设备)释放数据线SDA(高),也即将数据线SDA的电平拉高。
无效应答信号也称非应答(not ACK)信号,无效应答信号是在时钟线SCL为高电平期间保持数据线SDA也为高电平(例如1)。
如图2所示,当所述第一应答信号为有效应答信号时,确定主设备和被寻址从设备建立连接,主设备可开始向被寻址从设备发送数据信息。
如图2所示,当所述第一应答信号为无效应答信号时,主设备发送停止信号,结束本次通信,并回到发送开始信号,以进行下一次通信。
接着,继续如图1所示,在步骤S5中,当所述主设备获取到第一应答信号后,所述主设备向所述被寻址从设备发送数据信息,或者,接收所述被寻址从设备发送的数据信息。
当所述主设备和被寻址从设备确认建立连接后,所述主设备向所述被寻址从设备发送数据信息。其中,所述主设备每发送预设字节的数据信息后,所述主设备获取所述从设备反馈的第二应答信号,所述第二应答信号用于指示所述从设备是否已接收到该预设字节的数据信息。其中预设字节例如为1字节。
数据每次发送1字节,接收设备(例如被寻址从设备)反馈第二应答信号,以确认是否接受成功。示例性地,如图2所示,所述第二应答信号包括有效应答信号和无效应答信号,当所述第二应答信号为所述有效应答信号时,所述主设备向所述被寻址从设备发送下一预定字节的数据信息,当所述第二应答信号为无效应答信号时,则所述主设备发送停止信号,结束本次通信请求,并重新发送开始信号,进行下一次的通信。
数据传输必须带响应,相关的响应时钟脉冲由主设备产生。在响应的时钟脉冲期间,发送器释放数据线SDA(高),也即将数据线SDA的电平拉高。有效应答信号(ACK)是在响应的时钟脉冲期间,接收器(例如被寻址从设备)必须将SDA线拉低使它在这个时钟脉冲的高电平期间保持稳定的低电平。
无效应答信号也称非应答(not ACK)信号,无效应答信号是在时钟线SCL为高电平期间保持数据线SDA也为高电平(例如1)。
如图2所示,主设备向被寻址从设备每发送1字节数据,被寻址从设备就会反馈一次第二应答信号,执行该循环,直到需要发送的数据信息全部发送完成。
接着,继续如图1所示,在步骤S6中,所述被寻址从设备接收所述主设备发送的数据信息,或者,所述被寻址从设备向所述主设备发送数据信息。
所述主设备每发送预设字节的数据信息后,所述被寻址从设备反馈所述第二应答信号。
其中,被寻址从设备接收到主设备发送的一个预设字节(例如1个字节)的数据后,就会反馈一次第二应答信号,而主设备接收到第二应答信号后,再发送下一个预设字节的数据,重复该循环过程,直到全部数据发送和接收完成。
如图2所示,在所述主设备完成发送或接收数据信息之后,还包括:所述主设备发送停止信号,以结束和所述被寻址从设备的通信。如图3所示,当被寻址从设备接收到停止信号后,停止接收数据,结束本次通信过程,回到等待开始信号,以进行下一次的通信。
数据传输一般由主设备产生的停止位P(也即停止信号)终止。但是,如果主设备仍希望在总线上通讯,它可以产生重复起始条件和寻址另一个从设备(也即从机),而不是首先产生一个停止条件。在这种传输中可能有不同的读/写格式结合。
值得一提的是,本申请的各个步骤在不矛盾的情况下可以穿插或者同时进行,或者还可以调整顺序进行。
通过实验对本申请的实现方法进行了验证,在试验过程中使用的实验器件例如为三块单核单片机M2e,使用两根线连接两块单片机的通用输入输出端口IO0和IO1,通过软件实现GPIO端口的I2C总线数据传输。实验第一部分通过两根杜邦线将主设备和从设备连接,并让主设备循环发起通信,并验证从设备是否能够正确的收取主设备发送出的数据。
两块实验器件通过面包板连接,连通总线,地线和主板向总线高电平端VCC提供3.3V的输出电压。
如图2所示,主设备的发送逻辑分为发送START信号,发送从设备地址,发送读写位,发送数据,发送STOP信号五步。如图3所示,从设备的接收逻辑为等待START信号,接收设备地址,若地址一致则接收数据,等待STOP信号。值得注意的是,从设备是没有时钟线的控制权的,同时也没有开始和结束数据传输的权利,所有的通信逻辑都是由主设备决定的。
从试验结果可以看出,主设备在发送数据时,完成了发送START信号,发送地址,发送读写位,接收应答信号,发送数据0x55,接收应答信号,发送STOP信号的完整过程。通过循环发送,验证该模拟总线的稳定性和数据传输的准确率达到要求。
从试验结果还可以看出,从设备在完成初始化后,就处于等待START信号的状态,当主设备发送了开始信号后,从设备开始接收地址,地址匹配后,接收读写位,之后发送ACK信号反馈主设备。打印从设备接收的数据,与主设备发送的0x55一致,接收数据完成后,再次发送ACK信号,接收到STOP信号后,结束通信,继续等待主设备下一次的通信请求。
综上所述,根据本申请的实现方法可以具有以下优点:
1、对于没有I2C端口的单片机,在使用I2C器件搭建系统时,使用两个通用输入输出端口(GPIO)模拟I2C数据总线是一种可行的办法,为没有I2C总线端口的单片机提供了一种系统搭建的可选方案;
2、当预定搭建的智能系统(例如通信系统)中包含过多的从设备时,I2C总线的外部电路非常简单,仅需一根数据线和一根时钟线,所有传输协议均通过软件实现。因此可以用于在外部设备较多且对传输速度没有特别高要求的场景下使用,通过本申请的实现方法实现了对I2C协议中单主多从的主要应用情况的软件模拟,使用通用输入输出端口实现I2C协议的数据传输,相比传统的SPI通信需要给每一个外接设备单独连接一条选通线,需要的硬件成本比较高的情况,本申请的方法使用I2C协议中单主多从技术,可以降低成本。
本申请还提供一种基于I2C总线的多机通信系统,该所述多机通信系统可以参考前文的描述,如图6所示,包括:主设备,至少一个从设备和总线,所述总线连接所述主设备的通用输入输出端口和所述从设备;其中,所述主设备用于:发送开始信号,以开始和从设备通信;发送命令标识,其中,所述命令标识包括被寻址从设备的地址、读写位中的至少一种;所述被寻址从设备用于:接收所述命令标识,并根据所述命令标识反馈第一应答信号;所述主设备还用于:获取所述第一应答信号,以确认是否和所述被寻址从设备建立连接;当获取到第一应答信号后,向所述被寻址从设备发送数据信息,或者,接收所述被寻址从设备发送的数据信息;所述被寻址从设备用于:接收所述主设备发送的数据信息,或者,向所述主设备发送数据信息。
在一个示例中,所述主设备用于向所述被寻址从设备发送数据信息,包括:所述主设备每发送预设字节的数据信息后,所述主设备获取所述从设备反馈的第二应答信号,所述第二应答信号用于指示所述从设备是否已接收到该预设字节的数据信息。
在一个示例中,所述被寻址从设备用于接收所述主设备发送的数据信息,包括:所述主设备每发送预设字节的数据信息后,所述被寻址从设备反馈所述第二应答信号。
在一个示例中,所述总线包括时钟线和数据线,其中,所述时钟线连接所述通用输入输出端口的第一管脚,所述数据线连接所述通用输入输出端口的第二管脚,所述开始信号为所述时钟线高电平时所述数据线由高电平变为低电平。
在一个示例中,所述主设备还用于:在完成发送或接收数据信息之后,发送停止信号,以结束和所述被寻址从设备的通信。
在一个示例中,串行通信协议包括以下协议中的一种:I2C通信协议、SPI通信协议。
另外,本申请实施例还提供了一种计算机存储介质,例如计算机可读存储介质,其上存储有计算机程序。在所述计算机存储介质上可以存储一个或多个计算机程序指令,处理器可以运行存储器存储的所述程序指令,以实现本文所述的本申请实施例中(由处理器实现)的功能以及/或者其它期望的功能,例如以执行根据本申请实施例的实现方法相应步骤,在所述计算机可读存储介质中还可以存储各种应用程序和各种数据,例如所述应用程序使用和/或产生的各种数据等。
例如,所述计算机可读存储介质例如可以包括智能电话的存储卡、平板电脑的存储部件、个人计算机的硬盘、只读存储器(ROM)、可擦除可编程只读存储器(EPROM)、便携式紧致盘只读存储器(CD-ROM)、USB存储器、或者上述存储介质的任意组合。所述计算机可读存储介质可以是一个或多个计算机可读存储介质的任意组合。
由于本申请实施例的多机通信系统和计算机存储介质可以执行前述的实现方法相应步骤,因此,其也具有前述实现方法的优点。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本申请所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。例如,以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个设备,或一些特征可以忽略,或不执行。
在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。
类似地,应当理解,为了精简本发明并帮助理解各个发明方面中的一个或多个,在对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该本发明的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如相应的权利要求书所反映的那样,其发明点在于可以用少于某个公开的单个实施例的所有特征的特征来解决相应的技术问题。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。
本领域的技术人员可以理解,除了特征之间相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。
此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。
应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。
以上所述,仅为本发明的具体实施方式或对具体实施方式的说明,本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。本发明的保护范围应以权利要求的保护范围为准。
Claims (16)
1.一种基于I2C总线的多机通信的实现方法,其特征在于,应用于多机通信系统,所述多机通信系统包括主设备、至少一个从设备和总线,其中,所述总线连接所述主设备的通用输入输出端口和所述从设备,所述数据通信方法包括:
所述主设备发送开始信号,以开始和从设备通信;
所述主设备发送命令标识,其中,所述命令标识包括被寻址从设备的地址、读写位中的至少一种;
所述被寻址从设备接收所述命令标识,并根据所述命令标识反馈第一应答信号;
所述主设备获取所述第一应答信号,以确认是否和所述被寻址从设备建立连接;
当所述主设备获取到第一应答信号后,所述主设备向所述被寻址从设备发送数据信息,或者,接收所述被寻址从设备发送的数据信息;
所述被寻址从设备接收所述主设备发送的数据信息,或者,所述被寻址从设备向所述主设备发送数据信息。
2.如权利要求1所述的实现方法,其特征在于,所述主设备向所述被寻址从设备发送数据信息,包括:
所述主设备每发送预设字节的数据信息后,所述主设备获取所述从设备反馈的第二应答信号,所述第二应答信号用于指示所述从设备是否已接收到该预设字节的数据信息。
3.如权利要求2所述的实现方法,其特征在于,所述被寻址从设备接收所述主设备发送的数据信息,包括:
所述主设备每发送预设字节的数据信息后,所述被寻址从设备反馈所述第二应答信号。
4.如权利要求1所述的实现方法,其特征在于,所述总线包括时钟线和数据线,其中,所述时钟线连接所述通用输入输出端口的第一管脚,所述数据线连接所述通用输入输出端口的第二管脚,所述开始信号为所述时钟线高电平时所述数据线由高电平变为低电平。
5.如权利要求4所述的实现方法,其特征在于,在所述主设备完成发送或接收数据信息之后,还包括:
所述主设备发送停止信号,以结束和所述被寻址从设备的通信。
6.如权利要求5所述的实现方法,其特征在于,所述停止信号为所述时钟线高电平时所述数据线由低电平变为高电平。
7.如权利要求1所述的实现方法,其特征在于,当所述第一应答信号为所述有效应答信号时,所述主设备和所述被寻址从设备建立连接,所述有效应答信号指示所述地址与被寻址从设备的地址一致。
8.如权利要求3所述的实现方法,其特征在于,所述第二应答信号包括有效应答信号和无效应答信号,当所述第二应答信号为所述有效应答信号时,所述主设备向所述被寻址从设备发送下一预定字节的数据信息,当所述第二应答信号为无效应答信号时,则所述主设备发送停止信号。
9.如权利要求7或8所述的实现方法,其特征在于,所述有效应答信号为在响应的始终脉冲期间所述数据线的电平由所述从设备拉低并保持在低电平。
10.如权利要求1所述的实现方法,其特征在于,串行通信协议包括以下协议中的一种:I2C通信协议、SPI通信协议。
11.一种基于I2C总线的多机通信系统,其特征在于,所述多机通信系统包括:主设备,至少一个从设备和总线,所述总线连接所述主设备的通用输入输出端口和所述从设备;其中,
所述主设备用于:
发送开始信号,以开始和从设备通信;
发送命令标识,其中,所述命令标识包括被寻址从设备的地址、读写位中的至少一种;
所述被寻址从设备用于:
接收所述命令标识,并根据所述命令标识反馈第一应答信号;
所述主设备还用于:
获取所述第一应答信号,以确认是否和所述被寻址从设备建立连接;
当获取到第一应答信号后,向所述被寻址从设备发送数据信息,或者,接收所述被寻址从设备发送的数据信息;
所述被寻址从设备用于:
接收所述主设备发送的数据信息,或者,向所述主设备发送数据信息。
12.如权利要求11所述的多机通信系统,其特征在于,所述主设备用于向所述被寻址从设备发送数据信息,包括:
所述主设备每发送预设字节的数据信息后,所述主设备获取所述从设备反馈的第二应答信号,所述第二应答信号用于指示所述从设备是否已接收到该预设字节的数据信息。
13.如权利要求12所述的多机通信系统,其特征在于,所述被寻址从设备用于接收所述主设备发送的数据信息,包括:
所述主设备每发送预设字节的数据信息后,所述被寻址从设备反馈所述第二应答信号。
14.如权利要求11所述的多机通信系统,其特征在于,所述总线包括时钟线和数据线,其中,所述时钟线连接所述通用输入输出端口的第一管脚,所述数据线连接所述通用输入输出端口的第二管脚,所述开始信号为所述时钟线高电平时所述数据线由高电平变为低电平。
15.如权利要求14所述的多机通信系统,其特征在于,所述主设备还用于:在完成发送或接收数据信息之后,发送停止信号,以结束和所述被寻址从设备的通信。
16.如权利要求11所述的多机通信系统,其特征在于,串行通信协议包括以下协议中的一种:I2C通信协议、SPI通信协议。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011249072.1A CN112416841A (zh) | 2020-11-10 | 2020-11-10 | 基于i2c总线的多机通信的实现方法及多机通信系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011249072.1A CN112416841A (zh) | 2020-11-10 | 2020-11-10 | 基于i2c总线的多机通信的实现方法及多机通信系统 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN112416841A true CN112416841A (zh) | 2021-02-26 |
Family
ID=74781312
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011249072.1A Pending CN112416841A (zh) | 2020-11-10 | 2020-11-10 | 基于i2c总线的多机通信的实现方法及多机通信系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416841A (zh) |
Cited By (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112947287A (zh) * | 2021-03-29 | 2021-06-11 | 联想(北京)信息技术有限公司 | 一种控制方法、控制器及电子设备 |
CN113114550A (zh) * | 2021-04-07 | 2021-07-13 | 中国科学院苏州生物医学工程技术研究所 | 一种i2c通信控制方法、设备及存储介质 |
CN113190395A (zh) * | 2021-03-15 | 2021-07-30 | 新华三信息技术有限公司 | 一种状态监控方法及装置 |
CN113868178A (zh) * | 2021-09-09 | 2021-12-31 | 浪潮电子信息产业股份有限公司 | 一种基于i2c总线的通信方法、系统及存储介质 |
CN113875162A (zh) * | 2019-05-20 | 2021-12-31 | 意法半导体(格勒诺布尔2)公司 | Nfc读取器与双nfc接口应答器之间的数据交换 |
CN113890781A (zh) * | 2021-09-23 | 2022-01-04 | 河北汇金集团股份有限公司 | 基于定时器扩展的通信方法、系统及存储介质 |
CN114253898A (zh) * | 2021-12-27 | 2022-03-29 | 上海集成电路研发中心有限公司 | 总线装置及数据读写电路 |
CN114578299A (zh) * | 2021-06-10 | 2022-06-03 | 中国人民解放军63698部队 | 一种无线远程控制信标设备产生射频信号的方法及系统 |
CN114900393A (zh) * | 2022-06-17 | 2022-08-12 | 重庆奥普泰通信技术有限公司 | 改进式spi通信方法、装置及存储介质 |
CN115543906A (zh) * | 2022-11-23 | 2022-12-30 | 荣耀终端有限公司 | 一种基于i2c总线的数据读写方法和装置 |
CN116166594A (zh) * | 2023-04-26 | 2023-05-26 | 闪极科技(深圳)有限公司 | 一种单地址多从机的iic总线电路及其传输方法和装置 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050005049A1 (en) * | 2003-07-03 | 2005-01-06 | Luis Montalvo | Method and data structure for random access via a bus connection |
EP1498823A2 (en) * | 2003-07-03 | 2005-01-19 | Thomson Licensing S.A. | Method and data structure for random acces via a bus connection |
CN101208679A (zh) * | 2005-04-29 | 2008-06-25 | 皇家飞利浦电子股份有限公司 | 集成电路间从设备的设备标识编码 |
CN105786753A (zh) * | 2016-02-22 | 2016-07-20 | 上海斐讯数据通信技术有限公司 | 一种i2c总线上的主从设备间的传输数据的方法及设备 |
CN106066834A (zh) * | 2015-04-21 | 2016-11-02 | 黑莓有限公司 | 具有多设备消息传输的总线通信 |
CN107861893A (zh) * | 2017-10-16 | 2018-03-30 | 广东高云半导体科技股份有限公司 | I3c验证从设备、主从设备的通信验证系统及方法 |
-
2020
- 2020-11-10 CN CN202011249072.1A patent/CN112416841A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050005049A1 (en) * | 2003-07-03 | 2005-01-06 | Luis Montalvo | Method and data structure for random access via a bus connection |
EP1498823A2 (en) * | 2003-07-03 | 2005-01-19 | Thomson Licensing S.A. | Method and data structure for random acces via a bus connection |
CN1577308A (zh) * | 2003-07-03 | 2005-02-09 | 汤姆森特许公司 | 经总线连接进行随机访问的方法和数据结构 |
CN101208679A (zh) * | 2005-04-29 | 2008-06-25 | 皇家飞利浦电子股份有限公司 | 集成电路间从设备的设备标识编码 |
CN106066834A (zh) * | 2015-04-21 | 2016-11-02 | 黑莓有限公司 | 具有多设备消息传输的总线通信 |
CN105786753A (zh) * | 2016-02-22 | 2016-07-20 | 上海斐讯数据通信技术有限公司 | 一种i2c总线上的主从设备间的传输数据的方法及设备 |
CN107861893A (zh) * | 2017-10-16 | 2018-03-30 | 广东高云半导体科技股份有限公司 | I3c验证从设备、主从设备的通信验证系统及方法 |
Non-Patent Citations (1)
Title |
---|
ZHENWENXIAN: "GPIO模拟I2C程序实现", 《HTTPS://BLOG.CSDN.NET/ZHENWENXIAN/ARTICLE/DETAILS/8466886/》, 5 January 2013 (2013-01-05), pages 1 - 15 * |
Cited By (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113875162B (zh) * | 2019-05-20 | 2023-02-17 | 意法半导体(格勒诺布尔2)公司 | Nfc读取器与双nfc接口应答器之间的数据交换装置 |
CN113875162A (zh) * | 2019-05-20 | 2021-12-31 | 意法半导体(格勒诺布尔2)公司 | Nfc读取器与双nfc接口应答器之间的数据交换 |
CN113190395A (zh) * | 2021-03-15 | 2021-07-30 | 新华三信息技术有限公司 | 一种状态监控方法及装置 |
CN113190395B (zh) * | 2021-03-15 | 2023-08-18 | 新华三信息技术有限公司 | 一种状态监控方法及装置 |
CN112947287A (zh) * | 2021-03-29 | 2021-06-11 | 联想(北京)信息技术有限公司 | 一种控制方法、控制器及电子设备 |
CN113114550A (zh) * | 2021-04-07 | 2021-07-13 | 中国科学院苏州生物医学工程技术研究所 | 一种i2c通信控制方法、设备及存储介质 |
CN114578299A (zh) * | 2021-06-10 | 2022-06-03 | 中国人民解放军63698部队 | 一种无线远程控制信标设备产生射频信号的方法及系统 |
CN113868178A (zh) * | 2021-09-09 | 2021-12-31 | 浪潮电子信息产业股份有限公司 | 一种基于i2c总线的通信方法、系统及存储介质 |
CN113868178B (zh) * | 2021-09-09 | 2024-02-13 | 浪潮电子信息产业股份有限公司 | 一种基于i2c总线的通信方法、系统及存储介质 |
CN113890781A (zh) * | 2021-09-23 | 2022-01-04 | 河北汇金集团股份有限公司 | 基于定时器扩展的通信方法、系统及存储介质 |
CN114253898A (zh) * | 2021-12-27 | 2022-03-29 | 上海集成电路研发中心有限公司 | 总线装置及数据读写电路 |
CN114900393A (zh) * | 2022-06-17 | 2022-08-12 | 重庆奥普泰通信技术有限公司 | 改进式spi通信方法、装置及存储介质 |
CN115543906A (zh) * | 2022-11-23 | 2022-12-30 | 荣耀终端有限公司 | 一种基于i2c总线的数据读写方法和装置 |
CN116166594A (zh) * | 2023-04-26 | 2023-05-26 | 闪极科技(深圳)有限公司 | 一种单地址多从机的iic总线电路及其传输方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112416841A (zh) | 基于i2c总线的多机通信的实现方法及多机通信系统 | |
US7562172B2 (en) | I2C Slave/master interface enhancement using state machines | |
US7979597B2 (en) | Programming parallel I2C slave devices from a single I2C data stream | |
US8667204B2 (en) | Method to differentiate identical devices on a two-wire interface | |
US8417864B2 (en) | Cascade-able serial bus device with clock and management and cascade methods using the same | |
CN105700732B (zh) | 用于传输触摸传感器信息的装置、系统和方法 | |
JP2008539497A (ja) | 集積回路間におけるスレーブ装置の装置識別コーディング | |
US20090234998A1 (en) | Connection system | |
TW202014904A (zh) | I3c上的低等待時間虛擬通用輸入/輸出 | |
AU2016369271A1 (en) | Enhanced serial peripheral interface with hardware flow-control | |
TWI649981B (zh) | 無線通訊裝置及其通訊配對的方法 | |
CN101907683B (zh) | 数字基带芯片中i2c模块的自动测试方法 | |
TWI528161B (zh) | 資料傳輸系統以及資料傳輸方法 | |
US6665757B1 (en) | Communication interface having a master activating/deactivating a first signal with a clock signal after a predetermined time after a slave activating/deactivating the first signal | |
WO2013049980A1 (zh) | 一种转接装置及转接方法 | |
CN108920392A (zh) | 一种数据接口与spi的转换装置及方法 | |
Kalinsky et al. | Introduction to I2C | |
CN104899164B (zh) | 集成电路总线的地址寻址方法、集成电路总线设备和系统 | |
CN111130678B (zh) | 数据传输方法、装置、设备及计算机可读存储介质 | |
CN112416837B (zh) | 将数据从spi模块转发至uart模块的方法、电路和电子装置 | |
JP4431768B2 (ja) | 携帯型電子装置、読み出し方法及び書き込み方法 | |
JP3134821B2 (ja) | 通信システム | |
KR200439053Y1 (ko) | 직렬통신 채널을 이용하여 프로세서와 상호작용하는재설정가능칩이 구비된 장치 및 시스템 | |
CN113326220B (zh) | 一种外设电子标签信息获取方法及设备 | |
TWI818834B (zh) | 微控制器及應用其之序列周邊介面系統 |
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 |