1.本发明涉及通讯技术领域,一种低成本芯片间可靠通讯方法。
背景技术:2.目前越来越多的物联网产品(比如门锁等)使用wifi soc、蓝牙soc芯片作为主控芯片。相比传统的主控芯片+wifi/蓝牙芯片的架构,使用wifi/蓝牙soc芯片,可以有效降低软硬件设计复杂度,降低总体成本。但同时wifi/蓝牙soc在软硬件设计上也带来了一定的局限性:
3.首先wifi/蓝牙soc资源优先用于和保证wifi协议栈,蓝牙协议栈的实现,多余的资源才可用于相关应用软件的开发,同时wifi/蓝牙soc芯片的外围资源相比通用处理器少很多,比如gpio数量,uart数量,spi数量,i2c数量等等。所以很多时候我们需要使用gpio模拟来实现在两个wifi/蓝牙soc芯片之间的通讯。传统的做法是利用gpio模拟uart,gpio模拟spi或gpio模拟i2c的方式,用在两个wifi/蓝牙soc之间通讯,但这种操作无法保证可靠性,会存在大概率丢失数据的问题,因为soc芯片的资源要优先用于和保证wifi/蓝牙协议栈的实现,所以无法保证gpio模拟中断的实时性,中断延时是随机不可控的,所以传统的gpio模拟uart,spi,i2c等,并不适用于wifi/蓝牙soc芯片之间gpio模拟通讯的实现。有鉴于此,需要研究一种适用于wifi/蓝牙soc芯片之间的可靠通讯方法。
技术实现要素:4.本发明要解决的技术问题,在于提供一种低成本芯片间可靠通讯方法,可用于两个soc之间的可靠性通讯,可保证数据通讯的可靠性,不受wifi协议栈,蓝牙协议栈等因数的影响。
5.本发明是这样实现的:一种低成本芯片间可靠通讯方法,包括如下步骤:
6.步骤s1、在两芯片上各取两gpio模拟两线制总线,所述两线制总线包括一个data线和一个sync线,所述data线用于数据的传输,所述sync线用于数据发送的触发和数据接收的应答;
7.步骤s2、定义一个字节包括9位,第一位为起始位,后八位为数据位,且起始位必须为低电平;
8.步骤s3、在每一个数据位设置两个时钟周期,包括一个发送时钟周期和一个应答时钟周期,所述发送时钟周期由发送端输出,所述应答时钟周期由接收端输出,且均采用上升沿触发的机制;
9.步骤s4、在发送数据时,发送端输出发送时钟周期,等待应答时钟周期,在检测到应答的上升沿中断之后,就认为接收端已经读取了数据,继续发送下一位数据,以此循环发送数据;
10.步骤s5、在接收数据时,判断字节首位是否为低电平,若是,则在接收到sync的上升沿中断后读取data线电平,获取数据位数据,输出应答时钟,重复此过程直至完成所有数
据位的接收;否则直接退出,不输出应答时钟。
11.进一步的,在data线上,定义1为高电平,0为低电平,在sync线上,定义1为高电平,0为低电平。
12.进一步的,所述data线和sync线外部分别加设有一上拉电阻,使得在空闲状态时,外部电阻拉高,data线和sync线都处于高电平,芯片两端gpio都处于输入状态。
13.进一步的,所述步骤s4具体包括:
14.步骤s41、在发送数据之前,首先要检测总线是否空闲状态,以及sync线是否处于高电平,如果两者有其一不满足则说明对端已经发起了数据通讯,不能发送数据,结束流程;如果两个条件都满足则说明总线处于空闲状态,开始数据发送;
15.步骤s42、在发送数据时,关闭sync线的中断功能,同时输出低电平,data线也切换到输出状态;
16.步骤s43、发送起始位,sync线输出低电平,data输出低电平,延时一个特定时间;
17.步骤s44、准备输出发送时钟周期,关闭cpu中断,sync线配置为输入,这时候sync线就会逐步变为高电平,延时等待一个特定时间,以便等待sync线完全变为高电平,这时使能sync线的上升沿中断,打开cpu中断,等待sync线上升沿中断的触发,在检测到sync线上升沿中断之后,说明对方已经收到此位数据,同时关闭sync线中断,延时特定时间,然后循环这个过程发送数据位的数据,直到所有数据位都发送完毕。
18.进一步的,所述步骤s5具体包括:
19.步骤s51、在接收数据时,平时总线处于空闲状态,同时sync线处于使能上升沿中断状态,检测到sync线上升沿中断之后,若总线之前处于空闲状态,则进入接收状态;
20.步骤s52、若接收到一个字节的第一位,则判断是否为低电平,若是,则进入步骤s53,否则直接退出,结束流程;
21.步骤s53、接收到上升沿中断之后,读取data电平,获取数据位数据,准备输出应答时钟,首先关闭sync中断,sync配置为输出低,延时一个特定时间,保持sync为低,然后锁定cpu中断,sync配置为输入,延时一个特定时间,以便sync上升到足够高的电平,使能sync的上升沿中断,同时打开cpu中断,至此完成了一个数据位的完整接受,重复此过程直至完成所有数据位的接收,在接收超时之后,重新把总线状态切换到空闲状态。
22.进一步的,所述data线为单向控制,发送端推挽输出,接收端输入,所述sync线为双向控制,发送端和接收端需要不停的在发送和接收之间做切换。
23.进一步的,所述两芯片为两个soc,且所述两个soc采用wifi soc和蓝牙soc,wifi soc和wifi soc,蓝牙soc和蓝牙soc中任一一种组合方式。
24.本发明具有如下优点:本发现通过将两个低成本芯片上的gpio模拟成两线制总线,并定义相应的总线通讯规则,采用数据位双时钟周期的机制,保证了数据通讯的可靠性,使其不受任何中断延迟的影响,有效提高两低成本芯片之间的通讯可靠性。
附图说明
25.下面参照附图结合实施例对本发明作进一步的说明。
26.图1为本发明一种低成本芯片间可靠通讯方法的执行流程图。
27.图2为本发明一具体实施例中模拟通讯时序图。
具体实施方式
28.如图1至图2所示,本发明提供的一种低成本芯片间可靠通讯方法,包括如下步骤:
29.步骤s1、在两芯片上各取两gpio模拟两线制总线,所述两线制总线包括一个data线(数据线)和一个sync线(同步线),所述data线用于数据的传输,所述sync线用于数据发送的触发和数据接收的应答;其中,所述两芯片为两个soc,比如门锁设备内设置的两个soc,且所述两个soc采用wifi soc和蓝牙soc,wifi soc和wifi soc,蓝牙soc和蓝牙soc中任一一种组合方式。
30.步骤s2、定义一个字节包括9位,第一位为起始位,后八位为数据位,且起始位必须为低电平;可参见图2;
31.步骤s3、在每一个数据位设置两个时钟周期,包括一个发送时钟周期和一个应答时钟周期,所述发送时钟周期由发送端输出,所述应答时钟周期由接收端输出,且均采用上升沿触发的机制;
32.步骤s4、在发送数据时,发送端输出发送时钟周期,等待应答时钟周期,在检测到应答的上升沿中断之后,就认为接收端已经读取了数据,继续发送下一位数据,以此循环发送数据;
33.步骤s5、在接收数据时,判断字节首位是否为低电平,若是,则在接收到sync的上升沿中断后读取data线电平,获取数据位数据,输出应答时钟,重复此过程直至完成所有数据位的接收;否则直接退出,不输出应答时钟。
34.如图2所示,一个数据位有两个时钟周期,第一个为数据发送时钟周期,由发送端控制,第二个位应答时钟周期,由数据接收端控制,数据位的发送时钟周期由发送端输出,采用上升沿触发的机制,接收端检测到上升沿中断,就可以采集数据线上的数据。数据位的应答周期由接收端输出,也采用上升沿触发的机器。发送端在输出发送时钟周期之后,就开始等待应答时钟周期,检测到应答的上升沿中断之后,就可以认为接收端已经读取了数据,可以继续发送下一位数据,以此循环发送数据。
35.在一较佳实施例中,在data线上,定义1为高电平,0为低电平,在sync线上,定义1为高电平,0为低电平。
36.在一较佳实施例中,所述data线和sync线外部分别加设有一上拉电阻,使得在空闲状态时,外部电阻拉高,data线和sync线都处于高电平,芯片两端gpio都处于输入状态。
37.在一较佳实施例中,所述步骤s4具体包括:
38.步骤s41、在发送数据之前,首先要检测总线是否空闲状态,以及sync线是否处于高电平,如果两者有其一不满足则说明对端已经发起了数据通讯,不能发送数据(否则就会引发总线冲突),结束流程;如果两个条件都满足则说明总线处于空闲状态,开始数据发送;
39.步骤s42、在发送数据时,关闭sync线的中断功能,同时输出低电平,data线也切换到输出状态;
40.步骤s43、发送起始位,sync线输出低电平,data输出低电平,延时一个特定时间(可根据具体情况调整,比如20微秒,50微秒,100微秒等);
41.步骤s44、准备输出发送时钟周期,关闭cpu中断,sync线配置为输入,这时候sync线就会逐步变为高电平,延时等待一个特定时间,比如2微秒,以便等待sync线完全变为高电平,这时使能sync线的上升沿中断(为了等待接受方输出的应答时钟周期),打开cpu中
断,等待sync线上升沿中断的触发,在检测到sync线上升沿中断之后,说明对方已经收到此位数据,同时关闭sync线中断,延时特定时间,然后循环这个过程发送数据位的数据,直到所有数据位都发送完毕。
42.在一较佳实施例中,所述步骤s5具体包括:
43.步骤s51、在接收数据时,平时总线处于空闲状态(两个都为高),同时sync线处于使能上升沿中断状态,检测到sync线上升沿中断之后,若总线之前处于空闲状态,则进入接收状态;
44.步骤s52、若接收到一个字节的第一位,则判断是否为低电平,若是,则进入步骤s53,否则直接退出,结束流程;
45.步骤s53、接收到上升沿中断之后,读取data电平,获取数据位数据,准备输出应答时钟,首先关闭sync中断,sync配置为输出低,延时一个特定时间,比如5微秒,保持sync为低,然后锁定cpu中断,sync配置为输入,延时一个特定时间,以便sync上升到足够高的电平,使能sync的上升沿中断(用于等待下一个数据位的发送时钟周期),同时打开cpu中断,至此完成了一个数据位的完整接受,重复此过程直至完成所有数据位的接收,在接收超时之后,重新把总线状态切换到空闲状态。
46.在一较佳实施例中,所述上拉电阻的阻值为4.7k欧姆,具体阻值可根据实际情况调整。
47.在一较佳实施例中,所述data线为单向控制,发送端推挽输出,接收端输入,所述sync线为双向控制,发送端和接收端需要不停的在发送和接收之间做切换。
48.本发明通过将两个低成本芯片上的gpio模拟成两线制总线,并定义相应的总线通讯规则,采用数据位双时钟周期的机制,保证了数据通讯的可靠性,使其不受任何中断延迟的影响,从而实现两个低成本芯片之间的可靠通讯。
49.虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。
技术特征:1.一种低成本芯片间可靠通讯方法,其特征在于:包括如下步骤:步骤s1、在两芯片上各取两gpio模拟两线制总线,所述两线制总线包括一个data线和一个sync线,所述data线用于数据的传输,所述sync线用于数据发送的触发和数据接收的应答;步骤s2、定义一个字节包括9位,第一位为起始位,后八位为数据位,且起始位必须为低电平;步骤s3、在每一个数据位设置两个时钟周期,包括一个发送时钟周期和一个应答时钟周期,所述发送时钟周期由发送端输出,所述应答时钟周期由接收端输出,且均采用上升沿触发的机制;步骤s4、在发送数据时,发送端输出发送时钟周期,等待应答时钟周期,在检测到应答的上升沿中断之后,就认为接收端已经读取了数据,继续发送下一位数据,以此循环发送数据;步骤s5、在接收数据时,判断字节首位是否为低电平,若是,则在接收到sync的上升沿中断后读取data线电平,获取数据位数据,输出应答时钟,重复此过程直至完成所有数据位的接收;否则直接退出,不输出应答时钟。2.根据权利要求1所述的方法,其特征在于:在data线上,定义1为高电平,0为低电平,在sync线上,定义1为高电平,0为低电平。3.根据权利要求1所述的方法,其特征在于:所述data线和sync线外部分别加设有一上拉电阻,使得在空闲状态时,外部电阻拉高,data线和sync线都处于高电平,芯片两端gpio都处于输入状态。4.根据权利要3所述的方法,其特征在于:所述步骤s4具体包括:步骤s41、在发送数据之前,首先要检测总线是否空闲状态,以及sync线是否处于高电平,如果两者有其一不满足则说明对端已经发起了数据通讯,不能发送数据,结束流程;如果两个条件都满足则说明总线处于空闲状态,开始数据发送;步骤s42、在发送数据时,关闭sync线的中断功能,同时输出低电平,data线也切换到输出状态;步骤s43、发送起始位,sync线输出低电平,data输出低电平,延时一个特定时间;步骤s44、准备输出发送时钟周期,关闭cpu中断,sync线配置为输入,这时候sync线就会逐步变为高电平,延时等待一个特定时间,以便等待sync线完全变为高电平,这时使能sync线的上升沿中断,打开cpu中断,等待sync线上升沿中断的触发,在检测到sync线上升沿中断之后,说明对方已经收到此位数据,同时关闭sync线中断,延时特定时间,然后循环这个过程发送数据位的数据,直到所有数据位都发送完毕。5.根据权利要3所述的方法,其特征在于:所述步骤s5具体包括:步骤s51、在接收数据时,平时总线处于空闲状态,同时sync线处于使能上升沿中断状态,检测到sync线上升沿中断之后,若总线之前处于空闲状态,则进入接收状态;步骤s52、若接收到一个字节的第一位,则判断是否为低电平,若是,则进入步骤s53,否则直接退出,结束流程;步骤s53、接收到上升沿中断之后,读取data电平,获取数据位数据,准备输出应答时钟,首先关闭sync中断,sync配置为输出低,延时一个特定时间,保持sync为低,然后锁定
cpu中断,sync配置为输入,延时一个特定时间,以便sync上升到足够高的电平,使能sync的上升沿中断,同时打开cpu中断,至此完成了一个数据位的完整接受,重复此过程直至完成所有数据位的接收,在接收超时之后,重新把总线状态切换到空闲状态。6.根据权利要1所述的方法,其特征在于:所述data线为单向控制,发送端推挽输出,接收端输入,所述sync线为双向控制,发送端和接收端需要不停的在发送和接收之间做切换。7.根据权利要求1所述的方法,其特征在于:所述两芯片为两个soc,且所述两个soc采用wifisoc和蓝牙soc,wifisoc和wifisoc,蓝牙soc和蓝牙soc中任一一种组合方式。
技术总结本发明提供一种低成本芯片间可靠通讯方法,包括:在两芯片上各取两GPIO模拟两线制总线,所述两线制总线包括一个DATA线和一个SYNC线;定义一个字节包括9位,第一位为起始位,后八位为数据位,且起始位为低电平;在每一个数据位设置两个时钟周期,包括一个发送时钟周期和一个应答时钟周期;在发送数据时,发送端输出发送时钟周期,等待应答时钟周期,在检测到应答的上升沿中断之后,继续发送下一位数据,以此循环发送数据;在接收数据时,判断字节首位是否为低电平,若是,则在接收到SYNC的上升沿中断后读取DATA线电平,获取数据位数据,输出应答时钟,重复此过程直至完成所有数据位的接收;否则直接退出。本发明方法实现两低成本芯片间的可靠性通讯。芯片间的可靠性通讯。芯片间的可靠性通讯。
技术研发人员:赵进云 谢纯珀
受保护的技术使用者:福建魔方电子科技有限公司
技术研发日:2022.08.05
技术公布日:2022/12/1