CN111984581B - 一种基于Linux的SPI总线主从设备通讯***、方法及装置 - Google Patents
一种基于Linux的SPI总线主从设备通讯***、方法及装置 Download PDFInfo
- Publication number
- CN111984581B CN111984581B CN202010818799.0A CN202010818799A CN111984581B CN 111984581 B CN111984581 B CN 111984581B CN 202010818799 A CN202010818799 A CN 202010818799A CN 111984581 B CN111984581 B CN 111984581B
- Authority
- CN
- China
- Prior art keywords
- data
- slave device
- interrupt notification
- master
- master device
- 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/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
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
本申请实施例公开了一种基于Linux的SPI总线主从设备通讯***、方法及装置。本申请实施例提供的技术方案,通过在从设备主动发送数据至主设备时,由从设备通过第二GPIO线发送第二中断通知至主设备,在发送第二中断通知后进入数据发送准备状态。主设备通过接收第二中断通知,响应于第二中断通知进入数据接收准备状态,并提供时钟脉冲给从设备。最终由从设备基于主设备提供的时钟脉冲发送数据至主设备。采用上述技术手段,可以实现SPI从设备的主动通讯功能,简化从设备主动发送数据的繁杂流程,降低SPI从设备主动通讯的难度。此外,本申请实施例通过中断通知以告知接收端停止数据发送,可以避免数据传输交叠导致数据错误的情况。
Description
技术领域
本申请实施例涉及SPI总线通信技术领域,尤其涉及一种基于Linux的SPI总线主从设备通讯***、方法及装置。
背景技术
SPI作为一种串行通讯协议,其在用于设备进行数据传输时支持主从模式的设置。使用SPI总线传输数据时,数据是一位一位的传输的。由主设备的SCLK提供时钟脉冲,主设备的CS片选选中从设备,MOSI和MISO则基于此脉冲完成数据传输。数据输出通过MOSI线,数据在时钟上升沿或下降沿时改变,在紧接着的下降沿或上升沿被读取,完成一位数据传输。数据的接收也使用同样原理。这样,在至少8次时钟信号的改变(上沿和下沿为一次),就可以完成8位数据的传输。由于SCLK信号线只能由主设备控制发出,从设备不能控制。因此,在一个基于SPI的设备通讯设备中,需要至少有一个主设备的存在。
而不管是主设备发送数据或者接收数据,还是从设备发送数据或者接收数据,都需要主设备提供时钟发起才能进行数据的传输。一般而言,对于简单的嵌入式控制器MCU(譬如Cortex-M3的STM32),其支持实现主从设备的配置。但是在复杂的嵌入式处理器MPU中(譬如Cortex-A8的am335x),由于其操作***为Linux***,而Linux***关于SPI的控制器驱动只提供主设备模式的实现及使用。这种情况下,从设备要传输数据给主设备,需要等待主设备的时钟发起,整个过程相对较为繁杂。而如若需要实现Linux主设备的SPI从模式的驱动功能,由于涉及到处理器原厂的驱动更改,其实现难度相对较大。
发明内容
本申请实施例提供一种基于Linux的SPI总线主从设备通讯***、方法及装置,能够实现SPI从设备的主动通讯功能,并避免主从设备数据传输交叠导致数据错误的情况。
在第一方面,本申请实施例提供了一种基于Linux的SPI总线主从设备通讯***,包括:主设备、从设备及SPI总线;
所述SPI总线连接所述主设备和所述从设备,用于进行所述主设备与所述从设备的数据传输,所述SPI总线包含第一GPIO线和第二GPIO线;
所述主设备使用Linux操作***,所述主设备用于在主动发送数据至所述从设备时,通过所述第一GPIO线发送第一中断通知至所述从设备,在发送所述第一中断通知后进入数据发送准备状态,提供时钟进行数据传输,所述第一中断通知用于指示所述从设备进入数据接收准备状态;
所述从设备用于在主动发送数据至所述主设备时,通过所述第二GPIO线发送第二中断通知至所述主设备,在发送所述第二中断通知后进入数据发送准备状态,基于所述主设备提供的时钟进行数据传输,所述第二中断通知用于指示所述主设备进入数据接收准备状态,向所述从设备提供时钟。
在第二方面,本申请实施例提供了一种基于Linux的SPI总线主从设备通讯方法,应用于如本申请实施例第一方面所述的基于Linux的SPI总线主从设备通讯***,包括:
在从设备主动发送数据至主设备时,所述从设备通过第二GPIO线发送第二中断通知至所述主设备,在发送所述第二中断通知后进入数据发送准备状态;
所述主设备接收所述第二中断通知,响应于所述第二中断通知进入数据接收准备状态,并提供时钟脉冲给所述从设备;
所述从设备基于所述主设备提供的时钟脉冲发送数据至所述主设备。
进一步的,在所述主设备接收所述第二中断通知,响应于所述第二中断通知进入数据接收准备状态之后,还包括:
所述主设备通过第一GPIO线发送数据接收准备状态信息至所述从设备。
进一步的,响应于所述第二中断通知进入数据接收准备状态,包括:
所主设备响应于所述第二中断通知停止发送数据至所述从设备,并在停止数据发送后进入数据接收准备状态。
进一步的,所述第二中断通知包含所述从设备发送的数据的第一优先级信息;
对应的,在响应于所述第二中断通知进入数据接收准备状态之前,还包括:
所述主设备基于所述第一优先级信息与当前发送至所述从设备的数据的第二优先级信息进行比对,判断是否实时进行所述第二中断通知的响应。
进一步的,在所述主设备基于所述第一优先级信息与当前发送至所述从设备的数据的第二优先级信息进行比对之后,还包括:
若所述第二优先级信息高于所述第一优先级信息,所述主设备发送等待通知至所述从设备,在发送完当前数据后再进行所述第二中断通知的响应,所述等待通知用于指示所述从设备保持接收所述主设备发送的数据。
在第三方面,本申请实施例提供了另一种基于Linux的SPI总线主从设备通讯方法,应用于如本申请实施例第一方面所述的基于Linux的SPI总线主从设备通讯***,包括:
在主设备主动发送数据至从设备时,所述主设备通过第一GPIO线发送第一中断通知至所述从设备,在发送所述第一中断通知后进入数据发送准备状态;
所述从设备接收所述第一中断通知,响应于所述第一中断通知进入数据接收准备状态;
所述主设备提供时钟脉冲并基于时钟脉冲发送数据至所述从设备。
进一步的,所述主设备通过第一GPIO线发送第一中断通知至所述从设备,包括:
所述主设备基于当前接收所述从设备发送的数据的第三优先级信息与主动发送至所述从设备的数据的第四优先级信息进行比对;
若所述第三优先级信息高于所述第四优先级信息,实时进行所述第一中断通知的发送;若所述第四优先级信息高于所述第三优先级信息,等待接收完所述从设备发送的数据后进行所述第一中断通知的发送。
在第四方面,本申请实施例提供了另一种基于Linux的SPI总线主从设备通讯装置,包括:
通知模块,用于在从设备主动发送数据至主设备时,由所述从设备通过第二GPIO线发送第二中断通知至所述主设备,在发送所述第二中断通知后进入数据发送准备状态;
响应模块,用于通过所述主设备接收所述第二中断通知,响应于所述第二中断通知进入数据接收准备状态,并提供时钟脉冲给所述从设备;
发送模块,用于通过所述从设备基于所述主设备提供的时钟脉冲发送数据至所述主设备。
在第五方面,本申请实施例提供了一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行如第二、三方面所述的基于Linux的SPI总线主从设备通讯方法。
本申请实施例通过在从设备主动发送数据至主设备时,由从设备通过第二GPIO线发送第二中断通知至主设备,在发送第二中断通知后进入数据发送准备状态。主设备通过接收第二中断通知,响应于第二中断通知进入数据接收准备状态,并提供时钟脉冲给从设备。最终由从设备基于主设备提供的时钟脉冲发送数据至主设备。采用上述技术手段,可以实现SPI从设备的主动通讯功能,并通过提供GPIO进行中断通知的发送,可以简化从设备主动发送数据的繁杂流程,降低SPI从设备主动通讯的难度。
此外,本申请实施例通过中断通知以告知接收端停止数据发送,并进入数据接收准备状态,可以避免主从设备间任一端同时进行数据接收及发送的情况,进而避免数据传输交叠导致数据错误的情况,保障数据传输的可靠性。
附图说明
图1是本申请实施例一提供的一种基于Linux的SPI总线主从设备通讯***的结构示意图;
图2是本申请实施例一提供的一种基于Linux的SPI总线主从设备通讯方法的流程图;
图3是本申请实施例一提供的另一种基于Linux的SPI总线主从设备通讯方法的流程图;
图4是本申请实施例一中第一中断通知的发送流程图;
图5是本申请实施例二提供的一种基于Linux的SPI总线主从设备通讯装置的结构示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面结合附图对本申请具体实施例作进一步的详细描述。可以理解的是,此处所描述的具体实施例仅仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部内容。在更加详细地讨论示例性实施例之前应当提到的是,一些示例性实施例被描述成作为流程图描绘的处理或方法。虽然流程图将各项操作(或步骤)描述成顺序的处理,但是其中的许多操作可以被并行地、并发地或者同时实施。此外,各项操作的顺序可以被重新安排。当其操作完成时所述处理可以被终止,但是还可以具有未包括在附图中的附加步骤。所述处理可以对应于方法、函数、规程、子例程、子程序等等。
本申请提供的基于Linux的SPI总线主从设备通讯***及方法,旨在通过在SPI总线四线制通信的基础上增设两条GPIO线,以通过GPIO线进行中断通知的发送,进而实现主从设备间数据的主动发送。简化从设备主动发送数据的繁杂流程,降低SPI从设备主动通讯的难度。相对于传统的使用Linux操作***的设备,其控制器驱动只提供主模式的实现及使用,如果需要实现SPI从模式的驱动功能,需要进行处理器原厂的驱动更改,其实现难度相对较大。基于此问题,在Linux中,使用SPI总线进行主从设备通讯时,一般的做法就是Linux***设备只作为主设备使用,接入SPI从设备一端使用的一些是简单的传感器(譬如SPI接口的温湿度传感器)。这些SPI从设备不具备主动上送数据的能力,需要数据发送时,都是通过等待主设备的时钟发起才进行数据传输。其数据传输效率、可靠性相对较低。基于此,提供本申请实施例的基于Linux的SPI总线主从设备通讯***及方法,以解决现有对接Linux***主设备的SPI从设备难以主动进行数据传输的技术问题。
实施例一:
图1给出了本申请实施例一提供的一种基于Linux的SPI总线主从设备通讯***的结构示意图,参照体1,该基于Linux的SPI总线主从设备通讯***,包括主设备11、从设备12及SPI总线13;
所述SPI总线连接所述主设备11和所述从设备12,用于进行所述主设备11与所述从设备12的数据传输,所述SPI总线包含第一GPIO线和第二GPIO线;
所述主设备11使用Linux操作***,所述主设备11用于在主动发送数据至所述从设备12时,通过所述第一GPIO线发送第一中断通知至所述从设备12,在发送所述第一中断通知后进入数据发送准备状态,提供时钟进行数据传输,所述第一中断通知用于指示所述从设备12进入数据接收准备状态;
所述从设备12用于在主动发送数据至所述主设备11时,通过所述第二GPIO线发送第二中断通知至所述主设备11,在发送所述第二中断通知后进入数据发送准备状态,基于所述主设备11提供的时钟进行数据传输,所述第二中断通知用于指示所述主设备11进入数据接收准备状态,向所述从设备12提供时钟。
具体的,本申请实施例通过在SPI总线四线制通信的基础上扩展连接两条GPIO线。其中第一GPIO线作为下行IO线,用于主设备向从设备发送中断通知,定义该中断通知为第一中断通知。第二GPIO线作为上行IO线,用于从设备向主设备发送中断通知,定义该中断通知为第二中断通知。可以理解的是,当主设备在主动发送数据给从设备时,为了避免此时从设备正在发送数据给主设备而导致主从设备同时进行数据收发,使得数据交叠进而出现数据错误的情况,本申请实施例通过第一中断通知以使从设备做好数据接收准备,进而避免数据交叠错误的情况。同理,对于从设备主动发送数据给主设备的情况,通过该第二中断通知以使主设备做好数据接收准备,进而避免数据交叠错误的情况。并且,从设备在主动发送数据给主设备时,利用该第二中断通知以获取主设备提供的时钟脉冲,进而基于该时钟脉冲进行数据发送,以此实现SPI从设备的主动数据通讯,降低通讯难度,提升数据传输效率。
参照图1,本申请实施例的主设备运行在Linux操作***的设备,其可以是am335x主设备,而从设备可以采用STM32从设备。两者通过SPI总线连接。主设备与从设备进行数据传输时,由主设备的SCLK提供时钟脉冲,主设备的CS片选选中从设备,MOSI和MISO则基于SCLK提供的时钟脉冲完成主从设备间的数据传输。其中,MOSI用于下行数据传输,MISO用于上行数据传输。需要说明的是,本申请基于Linux的SPI总线主从设备通讯***对主从设备的选用不做固定限制,只保证主设备为运行在Linux操作***的设备即可,在此不多赘述。
本申请实施例利用两根扩展的GPIO线,对于主从两端的设备仅仅是多使用两个GPIO资源,在硬件连接上多了两条走线,以此在节省硬件资源的基础上,其成本也基本没有增加。通过这样简易的改造处理后,能够间接实现Linux操作***的SPI从设备驱动的功能,也能保证数据传输的可靠性,解决在Linux操作***中的SPI从设备主动上送数据的问题。
具体的,图2给出了本申请实施例一提供的一种基于Linux的SPI总线主从设备通讯方法的流程图,本实施例中提供的基于Linux的SPI总线主从设备通讯方法可以由上述基于Linux的SPI总线主从设备通讯***执行,该基于Linux的SPI总线主从设备通讯***可以通过软件和/或硬件的方式实现,该基于Linux的SPI总线主从设备通讯***可以是两个或多个物理实体构成。
下述以该基于Linux的SPI总线主从设备通讯***为执行基于Linux的SPI总线主从设备通讯方法的主体为例,进行描述。参照图2,该基于Linux的SPI总线主从设备通讯方法具体包括:
S110、在从设备主动发送数据至主设备时,所述从设备通过第二GPIO线发送第二中断通知至所述主设备,在发送所述第二中断通知后进入数据发送准备状态;
S120、所述主设备接收所述第二中断通知,响应于所述第二中断通知进入数据接收准备状态,并提供时钟脉冲给所述从设备;
S130、所述从设备基于所述主设备提供的时钟脉冲发送数据至所述主设备。
本申请实施例的基于Linux的SPI总线主从设备通讯***在从设备与主设备主动通讯时,利用该第二GPIO线发送第二中断通知,基于该第二中断通知实现从设备向主设备主动发送数据。具体的,在从设备主动发送数据给从设备时,首先通过该GPIO线发送第二中断通知至该主设备。并且在发送该第二中断通知之后,从设备进入数据发送准备状态,准备进行数据的发送。本申请实施例中,中断通知可以是一个时钟信号的上升沿或者下降沿,设备基于两条GPIO线时钟的变化获取该中断通知。此外,根据实际设置,中断通知也可以是其他形式的信号,本申请实施例对此不做固定限制。
进一步的,主设备在接收到该第二中断通知后,即可对该第二中断通知进行响应。并且,若当前主设备正在发送数据给从设备,则主设备响应于所述第二中断通知停止发送数据至所述从设备,并在停止数据发送后进入数据接收准备状态。可以理解的是,通过在响应该第二中断通知时,停止发送数据至从设备,可以避免后续主设备同时发送数据给从设备,又从从设备一端接收数据,导致出现数据交叠、数据错误的情况,保障上行数据的可靠性。因此,本申请实施例的主设备在接收到第二中断通知后,会停止向从设备发送数据,并进入数据接收准备状态,以准备接收从设备发送的数据。
更进一步的,在主设备进入数据接收准备状态后,所述主设备通过第一GPIO线发送数据接收准备状态信息至所述从设备。以告知从设备当前主设备已进入数据接收准备状态。基于主设备的这一数据接收准备状态信息,从设备可以明确当前主设备所述的状态。并且,若从设备此前正在接收主设备发送的数据,则暂停这部分数据的接收,以避免后续出现数据交叠、数据错误的情况。
在一些实施例中,所述第二中断通知包含所述从设备发送的数据的第一优先级信息;对应的,在响应于所述第二中断通知进入数据接收准备状态之前,所述主设备还基于所述第一优先级信息与当前发送至所述从设备的数据的第二优先级信息进行比对,判断是否实时进行所述第二中断通知的响应。可以理解的是,优先级信息标识了数据传输的优先级,通过比对上述第一优先级信息和第二优先级信息,即可确定主设备正在发送给从设备的数据与准备接收从设备发送的数据之间的优先级比较结果。若第一优先级信息高于第二优先级信息,即从设备准备发送给主设备的数据的优先级高于主设备正在发送给从设备的数据的优先级。则为了避免数据收发冲突导致出现数据错误,本申请实施例通过比对上述第一优先级信息和第二优先级信息,选择优先级信息高的数据执行相应的接收或者发送操作。若第一优先级信息高于所述第二优先级信息,则主设备实时响应该第二中断通知,进入数据接收准备状态。反之,则不对该第二中断通知进行响应。具体的,若所述第二优先级信息高于所述第一优先级信息,所述主设备发送等待通知至所述从设备,在发送完当前数据后再进行所述第二中断通知的响应,所述等待通知用于指示所述从设备保持接收所述主设备发送的数据。可以理解的是,通过优先级信息比对,若主设备当前发送给从设备的数据的优先级相对较高,则需要优先发送该数据,并在发送完这部分数据之后,方才进行数据接收。而对于从设备一端,需要保持接收主设备发送的这部分数据,在接收完这部分数据后再进行主动发送数据给主设备的流程。
最终,当主设备进入数据接收准备状态之后,则表示可以开始进行从设备发送数据的接收,此时主设备通过SCLK线提供时钟给从设备,以便于从设备基于该时钟进行数据发送,保障时钟同步。在从设备发送数据时,通过MISO线发送数据给主设备,以此完成从设备与主设备的主动通讯。
另一方面,参照图3,本申请实施例还提供了另一种基于Linux的SPI总线主从设备通讯方法,其中,该基于Linux的SPI总线主从设备通讯方法的流程包括:
S210、在主设备主动发送数据至从设备时,所述主设备通过第一GPIO线发送第一中断通知至所述从设备,在发送所述第一中断通知后进入数据发送准备状态;
S220、所述从设备接收所述第一中断通知,响应于所述第一中断通知进入数据接收准备状态;
S230、所述主设备提供时钟脉冲并基于时钟脉冲发送数据至所述从设备。
本申请实施例中在主设备向从设备主动发送数据时,同样通过中断通知实现。定义该中断通知为第一中断通知,第一中断通知通过第一GPIO线发送给从设备。同理,从设备基于这一中断通知进入数据接收准备状态,以便于后续主设备提供时钟脉冲并基于时钟脉冲发送数据至从设备,由从设备接收这一数据,完成主设备主动向从设备的数据传输。同样的,通过该第一中断通知,若此时从设备正在发送数据给主设备,为了避免数据交叠冲突,此时从设备可以暂停数据发送,进入数据接收准备状态。待接收完主设备发送的数据后,再进行此前暂停的数据发送。
在一个实施例中,主设备还可以通过比对准备发送的数据与从设备发送的数据的优先级,判断是否实时发送第一中断通知给从设备。其中,判断是否实时发送第一中断通知的流程包括:
S2101、所述主设备基于当前接收所述从设备发送的数据的第三优先级信息与主动发送至所述从设备的数据的第四优先级信息进行比对;
S2102、若所述第三优先级信息高于所述第四优先级信息,实时进行所述第一中断通知的发送;若所述第四优先级信息高于所述第三优先级信息,等待接收完所述从设备发送的数据后进行所述第一中断通知的发送。
具体的,参照图4,提供第一中断通知的发送流程图,参照上述从设备主动通讯的方式,本申请实施例在主设备准备发送数据至从设备时,同样通过比对当前从设备发送数据与主设备准备发送的数据的优先级,确定优先级高的数据进行优先处理。可以理解的是,通过确定主设备当前接收从设备发送的数据的第三优先级信息,以及主设备准备发送至从设备的数据的第四优先级信息,对该第三优先级信息和第四优先级信息进行比对,进而判断第三优选级信息是否高于第四优选级信息。若是,则主设备实时进行所述第一中断通知的发送,并暂停当前对从设备发送数据的接收。反之若第三优选级信息不高于第四优选级信息,则主设备保持当前对从设备发送数据的接收,等待接收完所述从设备发送的数据后进行所述第一中断通知的发送。在完成中断通知的发送后,主设备通过提供时钟脉冲给从设备并进行数据的发送,以此完成主设备与从设备的通信。
上述,通过在从设备主动发送数据至主设备时,由从设备通过第二GPIO线发送第二中断通知至主设备,在发送第二中断通知后进入数据发送准备状态。主设备通过接收第二中断通知,响应于第二中断通知进入数据接收准备状态,并提供时钟脉冲给从设备。最终由从设备基于主设备提供的时钟脉冲发送数据至主设备。采用上述技术手段,可以实现SPI从设备的主动通讯功能,并通过提供GPIO进行中断通知的发送,可以简化从设备主动发送数据的繁杂流程,降低SPI从设备主动通讯的难度。此外,本申请实施例通过中断通知以告知接收端停止数据发送,并进入数据接收准备状态,可以避免主从设备间任一端同时进行数据接收及发送的情况,进而避免数据传输交叠导致数据错误的情况,保障数据传输的可靠性。
实施例二:
在上述实施例的基础上,图5为本申请实施例二提供的一种基于Linux的SPI总线主从设备通讯装置的结构示意图。参考图5,本实施例提供的基于Linux的SPI总线主从设备通讯装置具体包括:通知模块21、响应模块22和发送模块23;
其中,通知模块21用于在从设备主动发送数据至主设备时,由所述从设备通过第二GPIO线发送第二中断通知至所述主设备,在发送所述第二中断通知后进入数据发送准备状态;
响应模块22用于通过所述主设备接收所述第二中断通知,响应于所述第二中断通知进入数据接收准备状态,并提供时钟脉冲给所述从设备;
发送模块23用于通过所述从设备基于所述主设备提供的时钟脉冲发送数据至所述主设备。
上述,通过在从设备主动发送数据至主设备时,由从设备通过第二GPIO线发送第二中断通知至主设备,在发送第二中断通知后进入数据发送准备状态。主设备通过接收第二中断通知,响应于第二中断通知进入数据接收准备状态,并提供时钟脉冲给从设备。最终由从设备基于主设备提供的时钟脉冲发送数据至主设备。采用上述技术手段,可以实现SPI从设备的主动通讯功能,并通过提供GPIO进行中断通知的发送,可以简化从设备主动发送数据的繁杂流程,降低SPI从设备主动通讯的难度。此外,本申请实施例通过中断通知以告知接收端停止数据发送,并进入数据接收准备状态,可以避免主从设备间任一端同时进行数据接收及发送的情况,进而避免数据传输交叠导致数据错误的情况,保障数据传输的可靠性。
本申请实施例二提供的基于Linux的SPI总线主从设备通讯装置可以用于执行上述实施例一提供的基于Linux的SPI总线主从设备通讯方法,具备相应的功能和有益效果。
实施例三:
本申请实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行一种基于Linux的SPI总线主从设备通讯方法,该基于Linux的SPI总线主从设备通讯方法包括:在从设备主动发送数据至主设备时,所述从设备通过第二GPIO线发送第二中断通知至所述主设备,在发送所述第二中断通知后进入数据发送准备状态;所述主设备接收所述第二中断通知,响应于所述第二中断通知进入数据接收准备状态,并提供时钟脉冲给所述从设备;所述从设备基于所述主设备提供的时钟脉冲发送数据至所述主设备。
和/或在主设备主动发送数据至从设备时,所述主设备通过第一GPIO线发送第一中断通知至所述从设备,在发送所述第一中断通知后进入数据发送准备状态;所述从设备接收所述第一中断通知,响应于所述第一中断通知进入数据接收准备状态;所述主设备提供时钟脉冲并基于时钟脉冲发送数据至所述从设备。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机***存储器或随机存取存储器,诸如DRAM、DDR RAM、SRAM、EDO RAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机***中,或者可以位于不同的第二计算机***中,第二计算机***通过网络(诸如因特网)连接到第一计算机***。第二计算机***可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括驻留在不同位置中(例如在通过网络连接的不同计算机***中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
当然,本申请实施例所提供的一种包含计算机可执行指令的存储介质,其计算机可执行指令不限于如上所述的基于Linux的SPI总线主从设备通讯方法,还可以执行本申请任意实施例所提供的基于Linux的SPI总线主从设备通讯方法中的相关操作。
上述实施例中提供的基于Linux的SPI总线主从设备通讯***装置、存储介质可执行本申请任意实施例所提供的基于Linux的SPI总线主从设备通讯方法,未在上述实施例中详尽描述的技术细节,可参见本申请任意实施例所提供的基于Linux的SPI总线主从设备通讯方法。
上述仅为本申请的较佳实施例及所运用的技术原理。本申请不限于这里所述的特定实施例,对本领域技术人员来说能够进行的各种明显变化、重新调整及替代均不会脱离本申请的保护范围。因此,虽然通过以上实施例对本申请进行了较为详细的说明,但是本申请不仅仅限于以上实施例,在不脱离本申请构思的情况下,还可以包括更多其他等效实施例,而本申请的范围由权利要求的范围决定。
Claims (9)
1.一种基于Linux的SPI总线主从设备通讯***,其特征在于,包括:主设备、从设备及SPI总线;
所述SPI总线连接所述主设备和所述从设备,用于进行所述主设备与所述从设备的数据传输,所述SPI总线包含第一GPIO线和第二GPIO线;
所述主设备使用Linux操作***,所述主设备用于在主动发送数据至所述从设备时,通过所述第一GPIO线发送第一中断通知至所述从设备,在发送所述第一中断通知后进入数据发送准备状态,提供时钟进行数据传输,所述第一中断通知用于指示所述从设备进入数据接收准备状态;
所述从设备用于在主动发送数据至所述主设备时,通过所述第二GPIO线发送第二中断通知至所述主设备,在发送所述第二中断通知后进入数据发送准备状态,基于所述主设备提供的时钟进行数据传输,其中,所述第二中断通知包含所述从设备发送的数据的第一优先级信息,在响应于所述第二中断通知进入数据接收准备状态之前,还包括所述主设备基于所述第一优先级信息与当前发送至所述从设备的数据的第二优先级信息进行比对,判断是否实时进行所述第二中断通知的响应,所述第二中断通知用于指示所述主设备进入数据接收准备状态,向所述从设备提供时钟。
2.一种基于Linux的SPI总线主从设备通讯方法,应用于如权利要求1所述的基于Linux的SPI总线主从设备通讯***,其特征在于,包括:
在从设备主动发送数据至主设备时,所述从设备通过第二GPIO线发送第二中断通知至所述主设备,在发送所述第二中断通知后进入数据发送准备状态;
所述主设备接收所述第二中断通知,响应于所述第二中断通知进入数据接收准备状态,并提供时钟脉冲给所述从设备,其中,所述第二中断通知包含所述从设备发送的数据的第一优先级信息,在响应于所述第二中断通知进入数据接收准备状态之前,还包括所述主设备基于所述第一优先级信息与当前发送至所述从设备的数据的第二优先级信息进行比对,判断是否实时进行所述第二中断通知的响应;
所述从设备基于所述主设备提供的时钟脉冲发送数据至所述主设备。
3.根据权利要求2所述的基于Linux的SPI总线主从设备通讯方法,其特征在于,在所述主设备接收所述第二中断通知,响应于所述第二中断通知进入数据接收准备状态之后,还包括:
所述主设备通过第一GPIO线发送数据接收准备状态信息至所述从设备。
4.根据权利要求2所述的基于Linux的SPI总线主从设备通讯方法,其特征在于,响应于所述第二中断通知进入数据接收准备状态,包括:
所述主设备响应于所述第二中断通知停止发送数据至所述从设备,并在停止数据发送后进入数据接收准备状态。
5.根据权利要求2所述的基于Linux的SPI总线主从设备通讯方法,其特征在于,在所述主设备基于所述第一优先级信息与当前发送至所述从设备的数据的第二优先级信息进行比对之后,还包括:
若所述第二优先级信息高于所述第一优先级信息,所述主设备发送等待通知至所述从设备,在发送完当前数据后再进行所述第二中断通知的响应,所述等待通知用于指示所述从设备保持接收所述主设备发送的数据。
6.一种基于Linux的SPI总线主从设备通讯方法,应用于如权利要求1所述的基于Linux的SPI总线主从设备通讯***,其特征在于,包括:
在主设备主动发送数据至从设备时,所述主设备通过第一GPIO线发送第一中断通知至所述从设备,在发送所述第一中断通知后进入数据发送准备状态;
所述从设备接收所述第一中断通知,响应于所述第一中断通知进入数据接收准备状态;
所述主设备提供时钟脉冲并基于时钟脉冲发送数据至所述从设备。
7.根据权利要求6所述的基于Linux的SPI总线主从设备通讯方法,其特征在于,所述主设备通过第一GPIO线发送第一中断通知至所述从设备,包括:
所述主设备基于当前接收所述从设备发送的数据的第三优先级信息与主动发送至所述从设备的数据的第四优先级信息进行比对;
若所述第三优先级信息高于所述第四优先级信息,实时进行所述第一中断通知的发送;若所述第四优先级信息高于所述第三优先级信息,等待接收完所述从设备发送的数据后进行所述第一中断通知的发送。
8.一种基于Linux的SPI总线主从设备通讯装置,其特征在于,包括:
通知模块,用于在从设备主动发送数据至主设备时,由所述从设备通过第二GPIO线发送第二中断通知至所述主设备,在发送所述第二中断通知后进入数据发送准备状态;
响应模块,用于通过所述主设备接收所述第二中断通知,响应于所述第二中断通知进入数据接收准备状态,并提供时钟脉冲给所述从设备,其中,所述第二中断通知包含所述从设备发送的数据的第一优先级信息,在响应于所述第二中断通知进入数据接收准备状态之前,还包括所述主设备基于所述第一优先级信息与当前发送至所述从设备的数据的第二优先级信息进行比对,判断是否实时进行所述第二中断通知的响应;
发送模块,用于通过所述从设备基于所述主设备提供的时钟脉冲发送数据至所述主设备。
9.一种包含计算机可执行指令的存储介质,其特征在于,所述计算机可执行指令在由计算机处理器执行时用于执行如权利要求2-5和/或权利要求6-7任一所述的基于Linux的SPI总线主从设备通讯方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010818799.0A CN111984581B (zh) | 2020-08-14 | 2020-08-14 | 一种基于Linux的SPI总线主从设备通讯***、方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010818799.0A CN111984581B (zh) | 2020-08-14 | 2020-08-14 | 一种基于Linux的SPI总线主从设备通讯***、方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111984581A CN111984581A (zh) | 2020-11-24 |
CN111984581B true CN111984581B (zh) | 2022-05-10 |
Family
ID=73433948
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010818799.0A Active CN111984581B (zh) | 2020-08-14 | 2020-08-14 | 一种基于Linux的SPI总线主从设备通讯***、方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111984581B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113407478B (zh) * | 2021-08-23 | 2021-11-30 | 上海泰矽微电子有限公司 | 一种实现spi从设备主动申请传输的方法 |
CN114968876B (zh) * | 2022-07-27 | 2022-10-04 | 福思(杭州)智能科技有限公司 | 数据通信方法、***、电子装置和存储介质 |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101552733A (zh) * | 2009-05-15 | 2009-10-07 | 深圳华为通信技术有限公司 | 一种基于spi实现数据传输的方法和*** |
CN101605128A (zh) * | 2009-04-22 | 2009-12-16 | 网经科技(苏州)有限公司 | Linux主从设备通过以太网接口进行通信的方法 |
CN108710597A (zh) * | 2018-05-17 | 2018-10-26 | 福建升腾资讯有限公司 | 一种利用gpio优化mcu通信的方法及*** |
CN108763140A (zh) * | 2018-04-23 | 2018-11-06 | 深圳市文鼎创数据科技有限公司 | 一种双向通信的方法、***及终端设备 |
CN109726163A (zh) * | 2018-12-30 | 2019-05-07 | 广东大普通信技术有限公司 | 一种基于spi的通信***、方法、设备和储存介质 |
CN110765058A (zh) * | 2019-09-12 | 2020-02-07 | 深圳震有科技股份有限公司 | Gpio实现spi从机功能方法、***、设备及介质 |
CN110798269A (zh) * | 2019-09-24 | 2020-02-14 | 深圳震有科技股份有限公司 | 基于gpio实现pcm从机功能的方法及*** |
CN110955625A (zh) * | 2019-11-22 | 2020-04-03 | 上海麦腾物联网技术有限公司 | 一种基于spi的全双工实时通信的方法及装置 |
CN111490920A (zh) * | 2019-01-29 | 2020-08-04 | 杭州海康汽车技术有限公司 | 一种基于spi的数据传输方法、***及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR101352140B1 (ko) * | 2009-11-05 | 2014-01-14 | 한국전자통신연구원 | 데이터 통신 시스템 |
CN102722462A (zh) * | 2012-05-05 | 2012-10-10 | 美的集团有限公司 | 一种同步通信装置及其控制方法 |
CN103744825A (zh) * | 2013-12-31 | 2014-04-23 | 北京中宇新泰科技发展有限公司 | 一种扩展兼容spi接口双向实时通讯方法 |
CN107832250B (zh) * | 2017-11-02 | 2020-10-30 | 北京中电华大电子设计有限责任公司 | 一种基于spi的主从通讯时序方法 |
-
2020
- 2020-08-14 CN CN202010818799.0A patent/CN111984581B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101605128A (zh) * | 2009-04-22 | 2009-12-16 | 网经科技(苏州)有限公司 | Linux主从设备通过以太网接口进行通信的方法 |
CN101552733A (zh) * | 2009-05-15 | 2009-10-07 | 深圳华为通信技术有限公司 | 一种基于spi实现数据传输的方法和*** |
CN108763140A (zh) * | 2018-04-23 | 2018-11-06 | 深圳市文鼎创数据科技有限公司 | 一种双向通信的方法、***及终端设备 |
CN108710597A (zh) * | 2018-05-17 | 2018-10-26 | 福建升腾资讯有限公司 | 一种利用gpio优化mcu通信的方法及*** |
CN109726163A (zh) * | 2018-12-30 | 2019-05-07 | 广东大普通信技术有限公司 | 一种基于spi的通信***、方法、设备和储存介质 |
CN111490920A (zh) * | 2019-01-29 | 2020-08-04 | 杭州海康汽车技术有限公司 | 一种基于spi的数据传输方法、***及装置 |
CN110765058A (zh) * | 2019-09-12 | 2020-02-07 | 深圳震有科技股份有限公司 | Gpio实现spi从机功能方法、***、设备及介质 |
CN110798269A (zh) * | 2019-09-24 | 2020-02-14 | 深圳震有科技股份有限公司 | 基于gpio实现pcm从机功能的方法及*** |
CN110955625A (zh) * | 2019-11-22 | 2020-04-03 | 上海麦腾物联网技术有限公司 | 一种基于spi的全双工实时通信的方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN111984581A (zh) | 2020-11-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11010327B2 (en) | I3C point to point | |
CN111984581B (zh) | 一种基于Linux的SPI总线主从设备通讯***、方法及装置 | |
US11256651B2 (en) | Multiple master, multi-slave serial peripheral interface | |
WO2019074906A1 (en) | I3C INTRABAND INTERRUPTIONS DIRECTED TO MULTIPLE EXECUTION ENVIRONMENTS | |
CN110896372B (zh) | 一种i2c链路切换方法、终端及存储介质 | |
JPH10293744A (ja) | Pciバス・システム | |
US20190213165A1 (en) | Priority scheme for fast arbitration procedures | |
CN111490920A (zh) | 一种基于spi的数据传输方法、***及装置 | |
US20200201804A1 (en) | I3c device timing adjustment to accelerate in-band interrupts | |
WO2019013926A1 (en) | I3C ACCELERATED BY THIRD PARTY INITIATED | |
US20190171589A1 (en) | Clock line driving for single-cycle data over clock signaling and pre-emption request in a multi-drop bus | |
US20170371830A1 (en) | Accelerated i3c master stop | |
US20190171611A1 (en) | Protocol-framed clock line driving for device communication over master-originated clock line | |
US11520729B2 (en) | I2C bus architecture using shared clock and dedicated data lines | |
CN114968863A (zh) | 一种基于dma控制器的数据传输方法 | |
CN113886297A (zh) | 一种基于dma的spi并发通讯se装置及方法 | |
US20210141757A1 (en) | Adaptive address arbitration optimization on an i3c bus | |
KR20230019830A (ko) | 시스템 전력 관리 인터페이스에 대한 확인응답들의 제공 | |
JPS5833970B2 (ja) | プロセッサ間通信方式 | |
JP3206585B2 (ja) | バス制御装置、マスタ装置及びスレーブ装置並びにバス制御方法 | |
JP2004104163A (ja) | データ通信方法およびシステム | |
JP2006197417A (ja) | 通信制御方法及びシステム | |
CN116414421A (zh) | 程序刷写方法、装置、设备及计算机可读存储介质 | |
JPH11252150A (ja) | ネットワーク接続装置、及びネットワーク接続制御方法 | |
CN117439832A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |