SPI从设备和I2C从设备共用GPIO的方法、电路和电子设备与流程

文档序号:17721200发布日期:2019-05-22 02:10阅读:697来源:国知局
SPI从设备和I2C从设备共用GPIO的方法、电路和电子设备与流程

本发明属于总线通信技术领域,具体涉及一种spi从设备和i2c从设备共用gpio的方法和电子设备。



背景技术:

本部分的陈述仅仅是提供了与本发明公开相关的背景技术信息,不必然构成在先技术。

spi(serialperipheralinterface串行外设接口)是一种串行同步通讯协议,由一个主设备和一个或多个从设备组成,主设备启动一个与从设备的同步通讯,从而完成数据的交换。spi接口由sdi(串行数据输入),sdo(串行数据输出),sck(串行移位时钟),cs(从使能信号)四种信号构成,cs决定了唯一的与主设备通信的从设备,如没有cs信号,则只能存在一个从设备,主设备通过产生移位时钟来发起通讯。通讯时,数据由sdo输出,sdi输入,数据在时钟信号的上升或下降沿由sdo输出,在紧接着的下降或上升沿由sdi读入,这样经过8/16次时钟的改变,完成8/16位数据的传输。

i2c采用两接口通信,其中一根是串行数据接口(sda),一根串行时钟接口(scl),实现了双工的同步数据传输。i2c接口线少,控制方式简单,在主从通信中,可以有多个i2c总线器件同时接到i2c总线上,通过地址来识别通信对象。但是传输速率有限,不适合传输大量数据。

现有总线通信过程中,需要分别使用不同的处理器的输入输出接口以分别连接i2c从设备和spi从设备,导致需要配置的输入输出接口过多,电子设备的结构较为复杂。



技术实现要素:

鉴于以上内容,有必要提供一种spi从设备和i2c从设备共用gpio的方法和电子设备,可以共用输入输出接口来连接spi从设备和i2c从设备以降低需要配置的输入输出接口。

一种spi从设备和i2c从设备共用gpio的方法,包括以下步骤:

总线确定步骤:根据数据读写请求判断需要使用的总线模式为i2c总线模式或者spi总线模式;

i2c通信步骤:如果需要使用的总线模式为i2c总线模式,则通过第一接口向所述i2c从设备发送时钟信号,以及配合所述时钟信号通过第二接口与所述i2c从设备传输数据;

spi通信步骤:如果需要使用的总线模式为spi总线模式,则通过所述第一接口向所述spi从设备发送时钟信号,以及配合所述时钟信号通过所述第二接口向所述spi从设备写入数据,和/或通过第三接口从所述spi从设备读取数据。

优选地,所述spi通信步骤还包括:

如果需要使用的总线模式为spi总线模式,还包括通过第四接口向所述spi设备发送使能信号以控制所述spi设备进入工作状态。

优选地,在所述i2c通信步骤和spi通信步骤之前,还包括:总线状态判断步骤,包括:

确定总线标志位为第一状态或者第二状态;

如果所述总线标志位为第一状态,则延时等待;

如果所述总线标志位为第二状态,则设置该总线标志为第一状态,以及,

所述i2c传输步骤还包括:与所述i2c从设备传输数据之后,设置所述总线标志位为第一状态;

所述spi传输步骤还包括:与所述spi从设备读取数据和写入数据之后,设置所述总线标志位为第一状态。

优选地,所述i2c通信步骤还包括:

如果总线标识为spi标识,则设置所述总线标识为i2c标识,并且设置所述第一接口和第二接口为输出模式并且输出低电平,然后设置所述第一接口和第二接口为输入模式后,通过所述第一接口传输时钟信号和通过所述第二接口传输数据;

所述spi通信步骤还包括:

如果总线标识为i2c标识,则设置所述总线标识为spi标识,并且设置所述第一接口和第二接口为输出模式,然后通过所述第一接口发送时钟信号,以及通过所述第二接口向所述spi从设备写入数据和/或通过第三接口从所述spi从设备读取数据。

优选地,根据时钟频率设置所述i2c通信步骤或所述spi通信步骤中的时钟信号的频率以设置传输数据的读写速度。

优选地,在所述判断步骤之前,还包括:

初始化步骤:设置所述第一接口和第二接口为输出模式,设置所述第三接口为输入模式以及第四接口为输出模式。

一种spi从设备和i2c从设备共用gpio的电路,包括:

处理器,包括第一接口、第二接口和第三接口;

i2c从设备,所述i2c从设备的时钟接口连接所述第一接口,数据接口连接所述第二接口,当需要使用的总线模式为i2c模式时,通过所述第一接口向所述i2c从设备发送时钟信号,以及配合所述时钟信号通过所述第二接口与所述i2c从设备传输数据;

spi从设备,所述spi从设备的时钟接口连接所述第一接口,数据输入接口连接所述第二接口,以及数据输出接口连接所述第三接口;在需要使用的所述总线模式为spi模式时,则通过所述第一接口向所述spi从设备发送时钟信号,以及配合所述时钟信号通过所述第二接口向所述spi从设备写入数据和/或通过第三接口从所述spi从设备读取数据。

优选地,所述处理器还包括第四接口,

所述第四接口连接所述spi从设备的使能端,在需要使用的所述总线模式为spi模式时,通过所述第四接口向所述spi设备发送使能信号以控制所述spi设备进入工作状态。

优选地,所述spi从设备为闪存,所述i2c从设备为读写存储器,所述第一接口通过第一上拉电阻连接电源,以及所述第二接口通过第二上拉电阻连接所述电源。

一种电子设备,包括上述的电路。

相较于现有技术,上述的spi从设备和i2c从设备共用gpio的方法和电子设备通过数据读写请求确定需要使用的总线模式,利用spi从设备和i2c从设备共用第一接口和第二接口以节省输入输出接口的数量,实现i2c总线和spi总线模式的切换与互斥,具有输入输出接口线少,控制方式简化,器件封装形式小,通信速率提高的优点。

附图说明

为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1是spi从设备和i2c从设备共用gpio的电路的结构示意图。

图2是spi从设备和i2c从设备共用gpio的方法在一实施方式中的流程图。

图3是spi从设备和i2c从设备共用gpio的方法在另一实施方式中的流程图。

主要元件符号说明

如下具体实施方式将结合上述附图进一步说明本发明。

具体实施方式

为了能够更清楚地理解本发明的上述目的、特征和优点,下面结合附图和具体实施方式对本发明进行详细描述。需要说明的是,在不冲突的情况下,本申请的实施方式及实施方式中的特征可以相互组合。在下面的描述中阐述了很多具体细节以便于充分理解本发明,所描述的实施方式仅仅是本发明一部分实施方式,而不是全部的实施方式。基于本发明中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本发明保护的范围。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施方式的目的,不是旨在于限制本发明。

在本发明的各实施例中,为了便于描述而非限制本发明,本发明专利申请说明书以及权利要求书中使用的术语"连接"并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。

图1是spi从设备30和i2c从设备20共用gpio的电路的结构示意图。如图1所示,该电路包括处理器10、i2c从设备20和spi从设备30。

处理器10包含但不限于中央处理器(centralprocessingunit,cpu)、微控制单元(microcontrollerunit,mcu)、单片机等用于解释计算机指令以及处理计算机软件中的数据的装置。处理器10具有多个通用输入输出接口(generalpurposeinputoutput,gpio)。输入输出接口又称总线扩展器,利用工业标准i2c、smbus或spi接口简化了i/o口的扩展,每个gpio端口可通过软件分别配置成输入或输出。在一个或多个实施方式中,处理器10包括第一接口11、第二接口12、第三接口13和第四接口14,该第一接口11至第四接口14为处理器10的gpio接口,在内部程序运行时配置成输入接口或者输出接口。

i2c从设备20可以通过i2c总线与处理器10交互数据,即处理器10可以向i2c从设备20写入数据,也可以从i2c从设备20读取数据。本实施方式中,该i2c从设备20可以是读写存储器(eeprom),但也可以是其他通过i2c总线与处理器10通信的电子设备,本申请对此不作限制。i2c从设备20具有两个通信接口:串行数据接口21(sda)和串行时钟接口22(scl)。串行数据接口21是i2c数据信号的双向接口,用于传输或接收所有的i2c总线数据。串行时钟接口22(scl)用于接收来自处理器10的i2c的时钟信号。在一个或多个实施方式中,串行时钟接口22连接处理器10的第一接口11,串行数据接口21连接处理器10的第二接口12,并且串行时钟接口22和串行数据接口21均通过上拉电阻串联至电源。

spi从设备30可以通过spi总线与处理器10交互数据,即处理器10可以向spi从设备30写入数据,也可以从spi从设备30读取数据。在一个或多个实施例中,该spi从设备30可以是闪存(flash),但也可以是其他通过i2c总线与处理器10通信的电子设备,本申请对此不作限制。spi从设备30具有四个通信接口:串行数据时钟接口31(sclk)、串行数据输入接口32(sdi)、串行数据输出接口33(sdo)、使能接口34(cs)。

在一些实施方式中,串行数据时钟接口31(sclk)连接处理器10的第一接口11,用于接收处理器10产生的时钟信号。串行数据输入接口32(sdi)与处理器10的第二接口12连接,用于接收处理器10的输出的数据。串行数据输出接口33(sdo)与处理器10的第三接口13连接,用于向处理器10输出数据。使能接口34(cs)与处理器10的第四接口14连接,用于接收确定是否被处理器10选中的控制信号,也就是说只有使能接口34(cs)接收到预先规定的使能信号时(高电位或低电位)使得spi从设备30进入工作状态,处理器10对此spi从设备30的操作才有效,这就使在同一条总线上连接多个spi从设备30成为可能。

此外,本申请还提供了一种电子设备,具有上述实施方式中涉及的spi从设备30和i2c从设备20共用gpio的电路。

以下详细描述spi从设备30和i2c从设备20共用gpio的方法的实施方式。

图2是spi从设备30和i2c从设备20共用gpio的方法在一实施方式中的流程图。如图2所示,spi从设备30和i2c从设备20共用gpio的方法包括步骤s201~s203。

步骤s201(总线确定步骤):根据数据读写请求判断需要使用的总线模式为i2c总线模式或者spi总线模式;

步骤s202(i2c通信步骤):如果需要使用的总线模式为i2c总线模式,则通过第一接口11向所述i2c从设备20发送时钟信号,以及配合所述时钟信号通过所述第二接口12与所述i2c从设备20传输数据;

步骤s203(spi通信步骤):如果需要使用的总线模式为spi总线模式,则通过所述第一接口11向所述spi从设备30发送时钟信号,以及配合所述时钟信号通过所述第二接口12向所述spi从设备30写入数据,和/或通过第三接口13从所述spi从设备30读取数据。

上述的spi从设备30和i2c从设备20共用gpio的方法和电子设备通过数据读写请求确定需要使用的总线模式,利用spi从设备30和i2c从设备20共用第一接口11和第二接口12以节省输入输出接口的数量,实现i2c总线和spi总线模式的切换与互斥,具有使用的输入输出接口少,控制方式简化,器件封装形式小,通信速率提高的优点。

图3是spi从设备30和i2c从设备20共用gpio的方法在另一实施方式中的流程图。如图3所示,该spi从设备30和i2c从设备20共用gpio的方法包括步骤

步骤s301(初始化步骤):设置所述第一接口11和第二接口12为输出模式,设置所述第三接口13为输入模式以及第四接口14为输出模式。本步骤中,还包括可以包括设置总线状态标识为第二状态(即空闲状态),将总线标识设置为i2c模式,将第一接口11和第二接口12设置为输入模式,将第四接口14设置为高电平输出。

步骤s302:设置第一接口11在i2c总线模式和spi总线模式下的时钟频率。本步骤中,可以通过配置延时函数来配置第一接口11输出的时钟信号的频率,因而可以调节或者改变i2c总线模式和spi总线模式下读写数据的速度,具体可以根据处理器10的资源(例如计算能力、内存等因素)来设置第一接口11的输出的时钟信号的频率。

步骤s303:(总线确定步骤):根据数据读写请求判断需要使用的总线模式为i2c总线模式或者spi总线模式,如果确定为i2c总线模式,则进入步骤s310(i2c通信步骤),否则进入步骤s320(spi通信步骤)。

步骤s310(总线状态判断步骤):判断总线状态标志是第一状态还是第二状态。本实施方式中,第一状态为繁忙状态(busy),第二状态为空闲状态(idle)。如果判断总线状态标志为第一状态,则进入步骤s311延时等待,等待时间满足后重新返回步骤s310。如果判断总线状态标志为第二状态,则进入步骤s312。

步骤s312:设置总线标志为第一状态(busy),以防止被其他数据传输请求打断本次数据传输。

步骤s313:判断上次数据传输设置的总线标识为i2c还是spi,如果该总线标识为spi,则进入步骤s314;如果该总线标识为i2c,则进入步骤s316。

步骤s314:设置总线标志为i2c,配置第一接口11和第二接口12为输出模式,第一接口11和第二接口12输出低电平。

步骤s315:配置第一接口11和第二接口12为输入模式,发送i2c的停止信号给i2c从设备20。

步骤s316:通过第一接口11向所述i2c从设备20发送时钟信号,以及配合所述时钟信号通过所述第二接口12与所述i2c从设备20传输数据。

步骤s317:输出传输完成后,设置总线标志为第二状态(idle)。

上述的步骤s310~s317为需要使用i2c总线模式下的通信步骤,下面详细描述需要使用spi总线模式下的通信步骤。

步骤s320:(总线状态判断步骤):判断总线状态标志是第一状态还是第二状态。本实施方式中,第一状态为繁忙状态(busy),第二状态为空闲状态(idle)。如果判断总线状态标志为第一状态,则进入步骤s321延时等待,等待时间满足后重新返回步骤s320。如果判断总线状态标志为第二状态,则进入步骤s322。

步骤s322:设置总线标志为第一状态(busy),以防止被其他数据传输请求打断本次数据传输。

步骤s323:判断上次数据传输设置的总线标识为i2c还是spi,如果该总线标识为i2c,则进入步骤s324;如果总线标识为spi,则进入步骤s327。

步骤s324:设置总线标志为spi,配置第一接口11和第二接口12为输出模式,第一接口11和第二接口12输出低电平。

步骤s325:配置第一接口11和第二接口12为输出模式。

步骤s326:根据spi从设备30的模式设置第一接口11输出高电平或者低电平。具体而言,可以根据spi从设备30的数据手册上的模式进行设置。在一些实施方式中,如果spi从设备30的模式标志(mode)为0,则设置第一接口11输出低电平,如果模式标志(mode)为3,则设置第一接口11输出高电平。

步骤s327:设置第四接口14输出低电平,使得该spi从设备30被选中,可以进行读写操作,与spi从设备30进行数据传输。

步骤s328:输出传输完成后,设置总线标志为第二状态(idle)。

上述的spi从设备30和i2c从设备20共用gpio的方法和电子设备通过数据读写请求确定需要使用的总线模式,实现gpio对i2c从设备20与spi从设备30的分时读写操作,且互不影响,利用spi从设备30和i2c从设备20共用第一接口11和第二接口12以节省输入输出接口的数量,实现i2c总线模式和spi总线模式的切换与互斥,解决了处理器10的gpio口不够用的问题,具有使用的输入输出接口少,控制方式简化,器件封装形式小,通信速率提高的优点。

在本发明所提供的几个具体实施方式中,应该理解到,所揭露的系统和方法,可以通过其它的方式实现。对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化涵括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。此外,显然“包括”一词不排除其他单元或步骤,单数不排除复数。系统权利要求中陈述的多个单元或装置也可以由同一个单元或装置通过软件或者硬件来实现。第一,第二等词语用来表示名称,而并不表示任何特定的顺序。

以上实施方式仅用以说明本发明的技术方案而非限制,尽管参照以上较佳实施方式对本发明进行了详细说明,本领域的普通技术人员应当理解,可以对本发明的技术方案进行修改或等同替换都不应脱离本发明技术方案的精神和范围。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1