一种基于gpio的通信方法

文档序号:567674 发布日期:2021-05-18 浏览:2次 >En<

阅读说明:本技术 一种基于gpio的通信方法 (Communication method based on GPIO ) 是由 罗继 胡胜发 于 2021-01-28 设计创作,主要内容包括:本发明公开了一种基于GPIO的通信方法,通过利用两个GPIO线路轮流作为信号线和数据线以实现主端设备和从端设备之间的数据传输,具体地,主端设备通过GPIO输出电平或利用从端的上下拉来通知从端设备接收数据和发送数据给从端设备,从端设备通过切换自身GPIO内部上下拉来给主端设备应答信号。本发明无需通过延时来模拟时钟或者波特率来达到数据同步,而是使用握手应答的方式进行同步从而达到稳定通信的目的,能有效节省通信时间,而且能自适应通信设备的内部环境变化,如频率改变,发生中断等。(The invention discloses a communication method based on GPIO, which uses two GPIO lines as a signal line and a data line in turn to realize data transmission between a master end device and a slave end device, specifically, the master end device informs the slave end device to receive data and send data to the slave end device through GPIO output level or pull-up and pull-down of the slave end, and the slave end device responds signals to the master end device by switching the internal pull-up and pull-down of the GPIO. The invention does not need to simulate the clock or baud rate by time delay to achieve data synchronization, but uses a handshake response mode to perform synchronization so as to achieve the aim of stable communication, can effectively save communication time, and can be adaptive to the internal environment change of communication equipment, such as frequency change, interruption and the like.)

一种基于GPIO的通信方法

技术领域

本发明涉及电子技术领域,尤其是涉及一种基于GPIO的通信方法。

背景技术

有些芯片为了节省芯片面积,硬件上没有集成I2C,SPI等通信接口,或者集成的个数较少,导致在实际应用中通信接口不够用,所以在应用中普遍存在需要使用普通GPIO进行设备间通信的应用场景。

使用普通GPIO进行设备间通信的做法通常是利用软件去模拟成熟的通信协议,如I2C通信协议、UART通信协议等。GPIO模拟这些协议的底层逻辑就是通过延时来模拟时钟或者波特率来达到数据同步,这种做法会增加传输时间的开销,而且一旦设备处理每bit数据的时间发生变化,需重新花费时间进行联调;还有就是在通信中需要关闭中断,因为没有交互,如果从端接收中途发生中断,则会丢失或者收到错误信息,所以在通信中无法处理更加紧急的事情。

发明内容

本发明旨在提供一种基于GPIO的通信方法,以解决上述技术问题,从而能够利用GPIO稳定且高效地实现设备间的通信。

为了解决上述技术问题,本发明实施例提供了一种基于GPIO的通信方法,所述通信方法应用于主端设备与从端设备之间,所述主端设备的主端第一GPIO端口通过第一GPIO线路与所述从端设备的从端第一GPIO端口连接,所述主端设备的主端第二GPIO端口通过第二GPIO线路与所述从端设备的从端第二GPIO端口连接;

所述通信方法包括步骤:

S1、将所述主端第一GPIO端口、所述从端第一GPIO端口、所述主端第二GPIO端口、所述从端第二GPIO端口的输入输出模式及上下拉调整至初始化状态;

S2、所述主端设备通过所述第一GPIO线路对所述从端设备进行数据传输通知,并通过所述第二GPIO线路将数据传输至所述从端设备;

S3、所述从端设备接收到数据后,通过所述第一GPIO线路对所述主端设备反馈数据接收应答信号,并修改所述从端第二GPIO端口的上下拉为其当前电平的相反电平;

S4、所述主端设备通过所述第二GPIO线路对所述从端设备进行数据传输通知,并通过所述第一GPIO线路将数据传输至所述从端设备;

S5、所述从端设备接收到数据后,通过所述第二GPIO线路对所述主端设备反馈数据接收应答信号,并修改所述从端第一GPIO端口的上下拉为其当前电平的相反电平;

S6、重复步骤S2至S5直至数据传输完毕。

进一步地,步骤S1具体包括:

将所述主端第一GPIO端口、所述从端第一GPIO端口、所述主端第二GPIO端口、所述从端第二GPIO端口的输入输出模式均设置为输入;

将所述主端第一GPIO端口、所述从端第一GPIO端口、所述主端第二GPIO端口、所述从端第二GPIO端口的上下拉均设置为上拉。

进一步地,步骤S2具体为:所述主端设备将所述主端第一GPIO端口和所述主端第二GPIO端口的上下拉配置为关闭,继而修改所述主端第一GPIO端口为输出模式并通过所述主端第一GPIO端口输出低电平以对所述从端设备进行数据开始传输通知,再修改所述主端第二GPIO端口为输出模式并通过所述第二GPIO线路将数据传输至所述从端设备之后,修改所述主端第一GPIO端口为输入模式使其端口电平翻转以对所述从端设备进行数据准备就绪通知;

步骤S3具体为:所述从端设备接收到数据后,先修改所述从端第二GPIO端口的上下拉为其当前电平的相反电平,再通过修改所述从端第一GPIO端口的上下拉为其当前电平的相反电平以对所述主端设备反馈数据接收应答信号;

步骤S4具体为:所述主端设备修改所述主端第一GPIO端口为输出模式并通过所述第一GPIO线路将数据传输至所述从端设备之后,修改所述主端第二GPIO端口为输入模式使其端口电平翻转以对所述从端设备进行数据准备就绪通知;

步骤S5具体为:所述从端设备接收到数据后,先修改所述从端第一GPIO端口的上下拉为其当前电平的相反电平,再通过修改所述从端第二GPIO端口的上下拉为其当前电平的相反电平以对所述主端设备反馈数据接收应答信号。

进一步地,步骤S6还包括:

当数据传输完毕时,所述主端设备及所述从端设备均恢复至所述初始化状态。

进一步地,在步骤S6之前,还包括:

当所述从端设备的数据接收等待时长超出预设的第一时间阈值,或所述主端设备的应答信号等待时长超出预设的第二时间阈值时,停止所述主端设备和所述从端设备之间的数据传输并恢复至所述初始化状态。

进一步地,在进行数据传输时,所述主端第一GPIO端口及所述主端第二GPIO端口的上下拉始终处于关闭状态。

进一步地,所述从端设备会根据预设的上层传输协议将接收到的目标单元数据作为数据长度信息,以使所述从端设备根据所述数据长度信息确定本次数据传输完毕的时机。

与现有技术相比,本发明具有如下有益效果:

本发明提供了一种基于GPIO的通信方法,通过利用两个GPIO线路轮流作为信号线和数据线以实现主端设备和从端设备之间的数据传输,具体地,主端设备通过GPIO输出电平或利用从端的上下拉来通知从端设备接收数据和发送数据给从端设备,从端设备通过切换自身GPIO内部上下拉来给主端设备应答信号。本发明无需通过延时来模拟时钟或者波特率来达到数据同步,而是使用握手应答的方式进行同步从而达到稳定通信的目的,能有效节省通信时间,而且能自适应通信设备的内部环境变化,如频率改变,发生中断等。

附图说明

图1是本发明一实施例提供的基于GPIO的通信方法的流程示意图;

图2是本发明一实施例提供的基于GPIO的通信方法的另一流程示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整的描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

请参见图1-2,本发明实施例提供了一种基于GPIO的通信方法,所述通信方法应用于主端设备与从端设备之间,所述主端设备的主端第一GPIO端口通过第一GPIO线路与所述从端设备的从端第一GPIO端口连接,所述主端设备的主端第二GPIO端口通过第二GPIO线路与所述从端设备的从端第二GPIO端口连接;

所述通信方法包括步骤:

S1、将所述主端设备及从端设备的所有GPIO端口的输入输出模式均设置为输入,且所有GPIO端口的上下拉均设置为上拉;需要说明的是,在进行数据传输时,初始化需要将主端设备的GPIO端口的上下拉进行关闭;

S2、所述主端设备将所述主端第一GPIO端口和所述主端第二GPIO端口的上下拉配置为关闭,继而修改所述主端第一GPIO端口为输出模式并通过所述主端第一GPIO端口输出低电平以对所述从端设备进行数据开始传输通知,再修改所述主端第二GPIO端口为输出模式并通过所述第二GPIO线路将数据传输至所述从端设备之后,修改所述主端第一GPIO端口为输入模式使其端口电平翻转以对所述从端设备进行数据准备就绪通知;

S3、所述从端设备接收到数据后,先修改所述从端第二GPIO端口的上下拉为其当前电平的相反电平,再通过修改所述从端第一GPIO端口的上下拉为其当前电平的相反电平以对所述主端设备反馈数据接收应答信号;

S4、所述主端设备修改所述主端第一GPIO端口为输出模式并通过所述第一GPIO线路将数据传输至所述从端设备之后,修改所述主端第二GPIO端口为输入模式使其端口电平翻转以对所述从端设备进行数据准备就绪通知;

S5、所述从端设备接收到数据后,先修改所述从端第一GPIO端口的上下拉为其当前电平的相反电平,再通过修改所述从端第二GPIO端口的上下拉为其当前电平的相反电平以对所述主端设备反馈数据接收应答信号;

S6、重复步骤S2至S5直至数据传输完毕;当数据传输完毕时,所述主端设备及所述从端设备均恢复至所述初始化状态。

需要说明的是,在本发明实施例中,所述从端设备将接收到的第一个单元数据作为数据长度信息,所述从端设备根据所述数据长度信息确定本次数据传输完毕的时机。

在本发明实施例中,数据传输过程中,即在步骤S6之前还包括:

当所述从端设备的数据接收等待时长超出预设的第一时间阈值,或所述主端设备的应答信号等待时长超出预设的第二时间阈值时,停止所述主端设备和所述从端设备之间的数据传输并恢复至所述初始化状态。

基于上述方案,为便于更好的理解本发明实施例提供的基于GPIO的通信方法,以下进行详细说明:

首先需要说明的是,本发明是通信的底层设计,本发明方案通过握手方式逐bit传输数据,在系统接收到这些数据后,可以协商规定好具体的上层通信协议,如第一个byte为设备号,第二个为传输数据长度等信息;

本发明需要用到两个GPIO线路,两端设备的GPIO端口均具有输入输出功能、内部上下拉切换功能,这两个GPIO在下文称G1和G2。

G1和G2的角色不会固定为信号线和数据线,而是轮流做信号线和数据线。

从端通过切换GPIO的内部上下拉来给主端应答信号,而主端通过GPIO输出电平来通知从端和发送数据,主端通知从端还可以通过利用从端的上下拉,因为一个设备一旦做了主端,则需要关闭自身的上下拉,剩下从端的上下拉,所以主端一旦释放GPIO的输出,则GPIO电平会跟随从端的上下拉。

具体地,主端设备与从端设备的通信步骤如下:

1)初始化,主从双方的两个GPIO都设置为输入,上拉,外部G1接G1,G2接G2;

2)开始通信,主端关闭自己G1/2的上下拉,再拉低G1通知从端,开始传输数据;

3)主端准备好数据在G2上输出,则释放G1,G1变为高电平(1);

4)从端检测到G1变为高电平,则采集G2的电平为一个bit的数据(如1);

5)从端修改G2的上/下拉为G2现在电平的相反电平(0),然后修改G1为下拉(0),通知主端已接收完毕,再等待G2的相反电平信号为下一个bit的数据采集信号;

6)主端检测到G1变为低电平,则修改G1输出下一个bit的数据,然后释放G2(1->0);

7)从端检测到G2电平改变,则采集G1为下一个bit的数据(如0);

8)从端修改G1的上/下拉为G1现在电平的相反电平(1),然后修改G2为上拉(1),通知主端已接收完毕,再等待G1的相反电平信号为下一个bit的数据采集信号;

9)主端检测到G2变为高电平,则修改G2输出下一个bit的数据,然后释放G1(0->1);

10)重复步骤4-9,直到传输结束。

需要说明的是,对于以上方法或流程实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明实施例并不受所描述的动作顺序的限制,因为依据本发明实施例,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作并不一定是本发明实施例所必须的。

需要说明的是,本发明实施例的特点包括:

1、在具体实施时需要规定上层通信协议,这里简单规定从端接收到的第一个单元数据为本次传输的数据长度,单位:word;

2、两个需要通信的设备,外部硬件上需要将G1相连,G2相连,外部无需上下拉;

3、主端设备准备好数据,然后发信号给从端,通知从端准备接收数据;

4、从端接收到信号,开始接收数据,每接收一个bit都会给主端应答;

5、按照上述握手方式,当从端设备接收满一个word时,需要解析出此次数据传输的长度,然后继续接收主端设备的数据;

6、当发送和接收的数据达到此次数据传输的长度则完成传输,从端解析数据并处理。主/从端恢复默认态,等待下一次传输发起;

7、或者等待信号/应答超时(时间按需求定),则主从设备会停止发送或者接收数据,恢复默认状态,等待下一次传输。

与现有技术相比,本发明具有如下有益效果:

通过实施本发明的通信方法,无需通过延时来模拟时钟或者波特率来达到数据同步,而是使用握手应答的方式进行同步从而达到稳定通信的目的,能有效节省通信时间,而且能自适应通信设备的内部环境变化,如频率改变,发生中断等。

以上所述是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也视为本发明的保护范围。

10页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种Type-C接口保护电路、方法、装置、存储介质和电子设备

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!