CN110765058A - Gpio实现spi从机功能方法、***、设备及介质 - Google Patents
Gpio实现spi从机功能方法、***、设备及介质 Download PDFInfo
- Publication number
- CN110765058A CN110765058A CN201910866165.XA CN201910866165A CN110765058A CN 110765058 A CN110765058 A CN 110765058A CN 201910866165 A CN201910866165 A CN 201910866165A CN 110765058 A CN110765058 A CN 110765058A
- Authority
- CN
- China
- Prior art keywords
- cpu
- slave
- mcu
- spi
- signal
- 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
- 238000000034 method Methods 0.000 title claims abstract description 55
- 230000006870 function Effects 0.000 claims description 58
- 238000004590 computer program Methods 0.000 claims description 14
- 230000004044 response Effects 0.000 claims description 13
- 230000009471 action Effects 0.000 claims description 7
- 230000008901 benefit Effects 0.000 description 8
- 230000008569 process Effects 0.000 description 8
- 238000010586 diagram Methods 0.000 description 6
- 238000012545 processing Methods 0.000 description 5
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000012905 input function Methods 0.000 description 3
- 230000007246 mechanism Effects 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000001934 delay Effects 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000000630 rising effect Effects 0.000 description 1
- 230000001960 triggered 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
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
本申请涉及GPIO实现SPI从机功能方法、***、设备及介质,方法包括:当MCU将时钟信号变为有效,MCU通过所述GPIO3管脚向CPU发出中断,CPU进入中断处理程序;当CPU进入中断处理程序,并判断从设备使能信号有效,则MCU发送给CPU一个比特数据;CPU在中断程序中读取GPIO1管脚的主输出从输入信号,从MCU读取数据;每产生一中断的时钟信号,CPU读取MCU发来的一个比特数据,并向MCU发送一个回应的比特数据;CPU读取每读取完一字节的比特数据,则将读取的比特数据组成一个字节。通过本方法可以在不支持SPI从机功能的CPU上,实现SPI从机功能,结构简单实现容易,并且成本低。
Description
技术领域
本申请涉及嵌入式驱动领域,特别是涉及一种基于CPU的GPIO实现SPI从机功能方法及***、计算机设备、可读存储介质。
背景技术
SPI(Serial Peripheral Interface)串行***设备接口,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间,提供方便,正是出于这种简单易用的特性,现在越来越多的芯片集成了这种通信协议。
现有技术中,大部分主控CPU只能做SPI主机功能,也有非常少量的CPU支持SPI从机功能,但都是硬件实现的,扩展性不好。如果要在不支持SPI从机功能的CPU上,实现SPI从机功能,非常麻烦,并且成本高。
因此,现有技术有待改进。
发明内容
本发明要解决的技术问题是,提供一种基于CPU的GPIO实现SPI从机功能方法及***、计算机设备、可读存储介质,旨在解决现有技术中要在不支持SPI从机功能的CPU上,实现SPI从机功能,非常麻烦,并且成本高的问题。
一种基于CPU的GPIO实现SPI从机功能方法,其中,所述方法包括:
将CPU分别通过:接主输出从输入信号的GPIO1管脚、接主输入从输出信号的GPIO2管脚、接时钟信号的GPIO3管脚、以及接从设备使能信号的GPIO4管脚与MCU连接,并将CPU作为SPI协议中的从机,MCU作为SPI协议中的主机;
选定时钟信号的GPIO3管脚支持向CPU发送中断,中断类型设置为边缘触发;
当MCU将时钟信号变为有效,MCU通过所述GPIO3管脚向CPU发出中断,CPU进入中断处理程序;
当CPU进入中断处理程序,并判断从设备使能信号有效,则MCU发送给CPU一个比特数据;
CPU在中断程序中读取GPIO1管脚的主输出从输入信号,从MCU读取数据;同时通过GPIO2管脚的主输入从输出信号,向MCU发送数据;
每产生一中断的时钟信号,CPU读取MCU发来的一个比特数据,并向MCU发送一个回应的比特数据;
CPU读取每读取完一字节的比特数据,则将读取的比特数据组成一个字节。
所述基于CPU的GPIO实现SPI从机功能方法,其中,相对CPU,用GPIO1作为主输出从输入信号MOSI,是输入信号;GPIO2作为主输入从输出MISO,是输出信号;GPIO3作为时钟信号SCLK,是输入信号;GPIO4作为从设备使能信号CS,是输入信号。
所述基于CPU的GPIO实现SPI从机功能方法,其中,所述当MCU将时钟信号变为有效包括:
当GPIO3由低电平拉升到高电平时,立即向CPU发送中断请求;CPU响应中断请求。
所述基于CPU的GPIO实现SPI从机功能方法,其中,所述当CPU进入中断处理程序,并判断从设备使能信号有效,则MCU发送给CPU一个比特数据的步骤包括:
CPU进入中断处理程序;
当CPU进入中断处理程序,判断从设备使能信号是否有效;
当从设备使能信号有效则SPI周期开始,则读取GPIO1 MOSI,MCU发送给CPU一个比特数据。
所述基于CPU的GPIO实现SPI从机功能方法,其中,所述判断从设备使能信号是否有效的步骤还包括:
如果从设备使能信号CS为高电平,表示SPI周期以及结束。
所述基于CPU的GPIO实现SPI从机功能方法,其中,所述每产生一中断的时钟信号,CPU读取MCU发来的一个比特数据,并向MCU发送一个回应的比特数据的步骤包括:
根据当前SPI命令的实际作用,通过GPIO2管脚的主设备数据输入信号写入回应字节中的一个比特,按照字节的最高位先发送的顺序写;
每一个CPU中断,接收一个比特,并且向MCU发送一个比特的数据,直到从设备使能信号为高电平,结束SPI时序;并将接收和发送比特的长度置为0,直到下一次SPI周期开始。
一种基于CPU的GPIO实现SPI从机功能***,其中,所述***包括:作为SPI协议中主机的MCU,以及作为SPI协议中从机的CPU;
作为主机的CPU分别通过:接MOSI(主输出从输入信号)的GPIO1管脚、接MISO(主输入从输出信号)的GPIO2管脚、接SCLK(时钟信号)的GPIO3管脚、以及CS(从设备使能信号)的GPIO4管脚与作为主机的MCU连接;
选定时钟信号的GPIO3管脚支持向CPU发送中断,中断类型设置为边缘触发;
当MCU将时钟信号变为有效,MCU通过所述GPIO3管脚向CPU发出中断,CPU进入中断处理程序;
当CPU进入中断处理程序,并判断从设备使能信号有效,则MCU发送给CPU一个比特数据;
CPU在中断程序中读取GPIO1管脚的主输出从输入信号,从MCU读取数据;同时通过GPIO2管脚的主输入从输出信号,向MCU发送数据;
每产生一中断的时钟信号,CPU读取MCU发来的一个比特数据,并向MCU发送一个回应的比特数据;
CPU读取每读取完一字节的比特数据,则将读取的比特数据组成一个字节。
所述的基于CPU的GPIO实现SPI从机功能***,其中,所述***,还包括:
配置单元,配置用GPIO1作为主输出从输入信号MOSI,是输入信号;GPIO2作为主输入从输出MISO,是输出信号;GPIO3作为时钟信号SCLK,是输入信号;GPIO4作为从设备使能信号CS,是输入信号;
判断读取单元,用于控制CPU进入中断处理程序;当CPU进入中断处理程序,判断从设备使能信号是否有效;当从设备使能信号有效则SPI周期开始,则读取GPIO1 MOSI,MCU发送给CPU一个比特数据;
发送控制单元,用于根据当前SPI命令的实际作用,通过GPIO2管脚的主设备数据输入信号写入回应字节中的一个比特,按照字节的最高位先发送的顺序写;
响应控制单元,用于每一个CPU中断,接收一个比特,并且向MCU发送一个比特的数据,直到从设备使能信号为高电平,结束SPI时序;并将接收和发送比特的长度置为0,直到下一次SPI周期开始。
一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其中,所述处理器包括:作为从机的CPU和作为主机的MCU;所述处理器执行所述计算机程序时实现任一项所述方法的步骤。
一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被处理器执行时实现任一项所述的方法的步骤。
与现有技术相比,本发明实施例具有以下优点:
根据本发明实施方式提供的方法,首先将CPU分别通过:接主输出从输入信号的GPIO1管脚、接主输入从输出信号的GPIO2管脚、接时钟信号的GPIO3管脚、以及接从设备使能信号的GPIO4管脚与MCU连接,并将CPU作为SPI协议中的从机,MCU作为SPI协议中的主机;选定时钟信号的GPIO3管脚支持向CPU发送中断,中断类型设置为边缘触发;当MCU将时钟信号变为有效,MCU通过所述GPIO3管脚向CPU发出中断,CPU进入中断处理程序;当CPU进入中断处理程序,并判断从设备使能信号有效,则MCU发送给CPU一个比特数据;CPU在中断程序中读取GPIO1管脚的主输出从输入信号,从MCU读取数据;同时通过GPIO2管脚的主输入从输出信号,向MCU发送数据;每产生一中断的时钟信号,CPU读取MCU发来的一个比特数据,并向MCU发送一个回应的比特数据;CPU读取每读取完一字节的比特数据,则将读取的比特数据组成一个字节。通过本方法可以在不支持SPI从机功能的CPU上,实现SPI从机功能,结构简单实现容易,并且成本低。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例中一种基于CPU的GPIO实现SPI从机功能***原理框图。
图2为本发明实施例中SPI时序波形示意图。
图3为本发明实施例中一种基于CPU的GPIO实现SPI从机功能方法的配置流程示意图。
图4为本发明实施例中一种基于CPU的GPIO实现SPI从机功能方法的初始化流程示意图。
图5为本发明实施例中一种基于CPU的GPIO实现SPI从机功能方法的实施例流程图。
图6为本发明实施例中计算机设备的内部结构图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
下面结合附图,详细说明本发明的各种非限制性实施方式。
发明人经过研究发现,现有的大部分主控CPU只能做SPI主机功能,如果要在不支持SPI从机功能的CPU上,实现SPI从机功能,非常麻烦,并且成本高。
为了解决上述问题,在本发明实施例中,提供了一种基于CPU的GPIO实现SPI从机功能***;如图1所示,本实施例的一种基于CPU的GPIO实现SPI从机功能***,包括:
作为从机的CPU,以及作为主机的MCU;即本发明实施例中将CPU作为SPI协议中的从机,MCU作为SPI协议中的主机;
如图1所示,将作为主机的CPU分别通过:接MOSI(主输出从输入信号)的GPIO1管脚、接MISO(主输入从输出信号)的GPIO2管脚、接SCLK(时钟信号)的GPIO3管脚、以及CS(从设备使能信号)的GPIO4管脚与作为主机的MCU连接。
其中,MOSI为–Master Output Slave Input,主设备数据输出,从设备数据输入;
MISO为–Master Input Slave Output,主设备数据输入,从设备数据输出;
SCLK为–Serial Clock,时钟信号,由主设备产生;
CS为–Chip Select,从设备使能信号,由主设备控制。
其中,SPI,是英语Serial Peripheral Interface的缩写,为串行***设备接口。SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚,同时为PCB的布局上节省空间。
其中,SPI的通信原理为,以主从方式工作,这种模式通常有一个主设备和一个或多个从设备,需要至少4根线,当单向传输时3根也可以。也是所有基于SPI的设备共有的,它们是MISO(主设备数据输入)、MOSI(主设备数据输出)、SCLK(时钟)、CS(从设备使能信号)。
本发明实施例中的基于CPU的GPIO实现SPI从机功能***,在具体实施时,参考图1和图2所示,选定SCLK的GPIO3管脚能支持向CPU发送中断,中断类型可以设置为边缘触发。一旦MCU将SCLK(时钟信号)拉高变为有效后,MCU的GPIO3向CPU发出中断,CPU进入中断处理程序。然后在中断程序中(站在从机CPU)读取GPIO1 MOSI,表示从MCU读取数据;同时向GPIO2MISO写数据,表示向MCU发送数据。每一次SCLK中断,CPU可以读取一个比特,发送一个比特。
基于上述实施例所述的基于CPU的GPIO实现SPI从机功能***,本发明实施例提供了一种基于CPU的GPIO实现SPI从机方法,
请参阅图1,图1示出了本发明实施例中基于CPU的GPIO实现SPI从机功能方法,所述方法包括:
整个过程分为设置步骤,初始化步骤,读写操作步骤。
其中设置步骤:参考图3所示,设置GPIO1为输入功能,设置GPIO2为输出功能,设置GPIO3为输入功能,设置GPIO4为输入功能,设置GPIO3上升沿中断,挂载GPIO3中断处理函数gpio3_irs(),接收比特个数为0,发送比特个数为0;使能GPIO3中断。
初始化流程如图4所示,S10、中断处理函数gpio3_irs()入口,入步骤S11;
S11,判断GPIO4是否等于0,当为是进入步骤S12,当为否,则进入步骤S21;
即判断GPIO4管脚的从设备使能信号是否等于0(低电平)。
S12,读取GPIO1一个比特,并进入步骤S13;
即当GPIO4管脚的从设备使能信号等于0,说明读取的比特数不够组成一个字节了,继续执行步骤S12,读取GPIO1一个比特。
S13,写GPIO2特定内容,并进入步骤S14;
作为从机的CPU通过GPIO2管脚发送一个比特数给作为主机的MCU。
S14,接收比特个数加1,发送比特个数加1,并进入步骤S15;
S21,读取的比特组成一个字节,并进入步骤S22;
即当GPIO4管脚的从设备使能信号不等于0,说明读取的比特数够组成一个字节了,执行S21,读取的比特组成一个字节。
S22,接收比特数为0,发送比特个数为0,并进入步骤S15;
S15,中断处理函数gpio3_irs()出口;
参考图4所示,本发明核心部分是中断处理函数gpio3_irs(),其处理作为主机的MCU发起的SPI时序周期。当GPIO3管脚的时钟信号由低电平拉升到高电平时,立即向作为从机的CPU发送中断请求。作为从机的CPU响应中断请求,执行中断处理函数gpio1_irs()。每一次中断函数被调用,作为从机的CPU通过GPIO1管脚MOSI(主设备数据输出,从设备数据输入)从作为主机的MCU读取一个比特,同时通过GPIO2管脚MISO(主设备数据输入,从设备数据输出)向作为主机的MCU发送一个比特。
其中,读写操作步骤,如图4所示,作为从机的CPU在通过GPIO3管脚的时钟信号进入中断处理函数时,先判断GPIO4管脚是否为低电平(0),因为CS(从设备使能信号)必须为低电平才表示SPI周期开始(参考图2所示)。如果CS(从设备使能信号)为高电平,表示SPI周期以及结束,所以先判断CS(从设备使能信号)是否有效,如果CS(从设备使能信号)有效,则读取GPIO1MOSI(主设备数据输出),这是MCU发送给CPU的一个比特数据。并且根据当前SPI命令的实际作用,向GPIO2 MISO写入回应字节中的一个比特,按照MSB(字节的最高位先发送)的顺序写。
本发明实施例中,每一个CPU中断都是接收一个比特,并且向MCU发送一个比特的数据,直到CS为高电平,结束SPI时序。将接收和发送比特的长度置为0,直到下一次SPI周期开始。
由上可见,通过本发明实施例,可以在不支持SPI从机功能的CPU上,实现SPI从机功能,结构简单实现容易,并且成本低。
所述的基于CPU的GPIO实现SPI从机功能***,在一种实施方式中,所述***,还包括:
配置单元,配置用GPIO1作为主输出从输入信号MOSI,是输入信号;GPIO2作为主输入从输出MISO,是输出信号;GPIO3作为时钟信号SCLK,是输入信号;GPIO4作为从设备使能信号CS,是输入信号;具体如上所述;
判断读取单元,用于控制CPU进入中断处理程序;当CPU进入中断处理程序,判断从设备使能信号是否有效;当从设备使能信号有效则SPI周期开始,则读取GPIO1 MOSI,MCU发送给CPU一个比特数据;具体如上所述;
发送控制单元,用于根据当前SPI命令的实际作用,通过GPIO2管脚的主设备数据输入信号写入回应字节中的一个比特,按照字节的最高位先发送的顺序写;具体如上所述;
响应控制单元,用于每一个CPU中断,接收一个比特,并且向MCU发送一个比特的数据,直到从设备使能信号为高电平,结束SPI时序;并将接收和发送比特的长度置为0,直到下一次SPI周期开始;具体如上所述。
基于上述实施例,本发明还提供了一种基于CPU的GPIO实现SPI从机功能方法,如图5所示,所述方法包括:
S1、将CPU分别通过:接主输出从输入信号的GPIO1管脚、接主输入从输出信号的GPIO2管脚、接时钟信号的GPIO3管脚、以及接从设备使能信号的GPIO4管脚与MCU连接,并将CPU作为SPI协议中的从机,MCU作为SPI协议中的主机;
本步骤的好处是当CPU的硬件SPI接口不够用,或者是为了方便硬件布线时,可将GPIO口模拟SPI接口进行使用。
S2、选定时钟信号的GPIO3管脚支持向CPU发送中断,中断类型设置为边缘触发;
步骤好处是利用中断机制,不需要CPU去轮询,节省CPU时间,提高***的实时性。
S3、当MCU将时钟信号变为有效,MCU通过所述GPIO3管脚向CPU发出中断,CPU进入中断处理程序。
本步骤的好处是中断触发时,相当于SPI的片选拉低,开始进入数据传输的过程。
S4、当CPU进入中断处理程序,并判断从设备使能信号有效,则MCU发送给CPU一个比特数据;
本步骤这个其实是按照SPI协议去处理;
S5、CPU在中断程序中读取GPIO1管脚的主输出从输入信号,从MCU读取数据;同时通过GPIO2管脚的主输入从输出信号,向MCU发送数据;
本步骤这个也是按照SPI协议去处理;
S6、每产生一中断的时钟信号,CPU读取MCU发来的一个比特数据,并向MCU发送一个回应的比特数据;
本步骤按照SPI协议去处理;
S7、CPU读取每读取完一字节的比特数据,则将读取的比特数据组成一个字节。
本步骤按照SPI协议去处理;
所述基于CPU的GPIO实现SPI从机功能方法,其中,相对CPU,用GPIO1作为主输出从输入信号MOSI,是输入信号;GPIO2作为主输入从输出MISO,是输出信号;GPIO3作为时钟信号SCLK,是输入信号;GPIO4作为从设备使能信号CS,是输入信号。
所述基于CPU的GPIO实现SPI从机功能方法,其中,所述当MCU将时钟信号变为有效包括:
当GPIO3由低电平拉升到高电平时,立即向CPU发送中断请求;CPU响应中断请求。
所述基于CPU的GPIO实现SPI从机功能方法,其中,所述当CPU进入中断处理程序,并判断从设备使能信号有效,则MCU发送给CPU一个比特数据的步骤包括:
CPU进入中断处理程序;
当CPU进入中断处理程序,判断从设备使能信号是否有效;
当从设备使能信号有效则SPI周期开始,则读取GPIO1 MOSI,MCU发送给CPU一个比特数据。
所述基于CPU的GPIO实现SPI从机功能方法,其中,所述判断从设备使能信号是否有效的步骤还包括:
如果从设备使能信号CS为高电平,表示SPI周期以及结束。
所述基于CPU的GPIO实现SPI从机功能方法,其中,所述每产生一中断的时钟信号,CPU读取MCU发来的一个比特数据,并向MCU发送一个回应的比特数据的步骤包括:
根据当前SPI命令的实际作用,通过GPIO2管脚的主设备数据输入信号写入回应字节中的一个比特,按照字节的最高位先发送的顺序写;
每一个CPU中断,接收一个比特,并且向MCU发送一个比特的数据,直到从设备使能信号为高电平,结束SPI时序;并将接收和发送比特的长度置为0,直到下一次SPI周期开始。
举例说明如下:
如图1所示,假设作为主机的MCU主机为A,作为从机的CPU从机为B,现A向B发送一个字节0x90数据,之后B向A回复一个字节0xAA;本发明基于CPU的GPIO实现SPI从机功能方法,步骤如下:
step1:MCU主机A拉低CS(从设备使能信号);
step2:MCU主机A将0x90的第7位的电平送到MOSI(主设备数据输出,从设备数据输入)线上,然后拉高CLK时钟线,并延时若干个时钟周期,再将0x90这个字节左移1位,最后拉低时钟线;这个过程中,CPU从机B检测到CLK时钟线被拉高,触发了中断,检测CS线是否为低,如果是的话,则将MOSI线上的电平收进来,存放至某变量的第0位,随后将该变量左移1位;
step3:A将以上step2循环8次,同时B在每次CLK线拉低时,做出相应的操作;
step4:循环结束后,A发送完了0x90,拉高CS,B收到了0x90,B根据0x90的指令,得知是需要回复A设备一个数据0xAA,进入下一步骤;
step5:A拉低CS;
step6:A拉高CLK时钟线,延时若干时钟周期,读取MISO线上的电平,存放至某变量的第0位,随后将该变量左移1位;这个过程中B检测到CLK时钟线被拉高,将0xAA的第7位的电平送到MISO线上,并将0xAA这个字节左移1位;
step7:A将以上step6循环8次,同时B在每次CLK线拉低时,做出相应的操作;
step8:循环结束后,A收到了0xAA,拉高CS,B在这个过程中发出了0xAA;
step9:over结束。
由上可见,通过本发明实施例,可以在不支持SPI从机功能的CPU上,实现SPI从机功能,结构简单实现容易,并且成本低。
基于上述实施例,本发明还提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其中,所述处理器包括:作为从机的CPU和作为主机的MCU;所述处理器执行所述计算机程序时实现任一项所述方法的步骤。
在一个实施例中,本发明提供了一种计算机设备,该设备可以是终端,内部结构如图6所示。该计算机设备包括通过***总线连接的处理器、存储器、网络接口、显示屏和输入***。其中,所述处理器包括:作为从机的CPU和作为主机的MCU,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作***和计算机程序。该内存储器为非易失性存储介质中的操作***和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种自然语言模型的生成方法。该计算机设备的显示屏可以是液晶显示屏或者电子墨水显示屏,该计算机设备的输入***可以是显示屏上覆盖的触摸层,也可以是计算机设备外壳上设置的按键、轨迹球或触控板,还可以是外接的键盘、触控板或鼠标等。
本领域技术人员可以理解,图6所示的仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
本发明实施例提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
将CPU分别通过:接主输出从输入信号的GPIO1管脚、接主输入从输出信号的GPIO2管脚、接时钟信号的GPIO3管脚、以及接从设备使能信号的GPIO4管脚与MCU连接,并将CPU作为SPI协议中的从机,MCU作为SPI协议中的主机;好处是当CPU的硬件SPI接口不够用,或者是为了方便硬件布线时,可将GPIO口模拟SPI接口进行使用;
选定时钟信号的GPIO3管脚支持向CPU发送中断,中断类型设置为边缘触发;好处是利用中断机制,不需要CPU去轮询,节省CPU时间,提高***的实时性;
当MCU将时钟信号变为有效,MCU通过所述GPIO3管脚向CPU发出中断,CPU进入中断处理程序;好处是中断触发时,相当于SPI的片选拉低,开始进入数据传输的过程;
当CPU进入中断处理程序,并判断从设备使能信号有效,则MCU发送给CPU一个比特数据;这个其实是按照SPI协议去处理;
CPU在中断程序中读取GPIO1管脚的主输出从输入信号,从MCU读取数据;同时通过GPIO2管脚的主输入从输出信号,向MCU发送数据;这个也是按照SPI协议去处理;
每产生一中断的时钟信号,CPU读取MCU发来的一个比特数据,并向MCU发送一个回应的比特数据;按照SPI协议去处理;
CPU读取每读取完一字节的比特数据,则将读取的比特数据组成一个字节。
按照SPI协议去处理;
综上所述,与现有技术相比,本发明实施例具有以下优点:
根据本申请实施方式提供的基于CPU的GPIO实现SPI从机功能方法及***、计算机设备、可读存储介质,当MCU将时钟信号变为有效,MCU通过所述GPIO3管脚向CPU发出中断,CPU进入中断处理程序;当CPU进入中断处理程序,并判断从设备使能信号有效,则MCU发送给CPU一个比特数据;CPU在中断程序中读取GPIO1管脚的主输出从输入信号,从MCU读取数据;每产生一中断的时钟信号,CPU读取MCU发来的一个比特数据,并向MCU发送一个回应的比特数据;CPU读取每读取完一字节的比特数据,则将读取的比特数据组成一个字节。通过本方法可以在不支持SPI从机功能的CPU上,实现SPI从机功能,结构简单实现容易,并且成本低。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (10)
1.一种基于CPU的GPIO实现SPI从机功能方法,其特征在于,所述方法包括:
将CPU分别通过:接主输出从输入信号的GPIO1管脚、接主输入从输出信号的GPIO2管脚、接时钟信号的GPIO3管脚、以及接从设备使能信号的GPIO4管脚与MCU连接,并将CPU作为SPI协议中的从机,MCU作为SPI协议中的主机;
选定时钟信号的GPIO3管脚支持向CPU发送中断,中断类型设置为边缘触发;
当MCU将时钟信号变为有效,MCU通过所述GPIO3管脚向CPU发出中断,CPU进入中断处理程序;
当CPU进入中断处理程序,并判断从设备使能信号有效,则MCU发送给CPU一个比特数据;
CPU在中断程序中读取GPIO1管脚的主输出从输入信号,从MCU读取数据;同时通过GPIO2管脚的主输入从输出信号,向MCU发送数据;
每产生一中断的时钟信号,CPU读取MCU发来的一个比特数据,并向MCU发送一个回应的比特数据;
CPU读取每读取完一字节的比特数据,则将读取的比特数据组成一个字节。
2.根据权利要求1所述基于CPU的GPIO实现SPI从机功能方法,其特征在于,相对CPU,用GPIO1作为主输出从输入信号MOSI,是输入信号;GPIO2作为主输入从输出MISO,是输出信号;GPIO3作为时钟信号SCLK,是输入信号;GPIO4作为从设备使能信号CS,是输入信号。
3.根据权利要求1所述基于CPU的GPIO实现SPI从机功能方法,其特征在于,所述当MCU将时钟信号变为有效包括:
当GPIO3由低电平拉升到高电平时,立即向CPU发送中断请求;CPU响应中断请求。
4.根据权利要求1所述基于CPU的GPIO实现SPI从机功能方法,其特征在于,所述当CPU进入中断处理程序,并判断从设备使能信号有效,则MCU发送给CPU一个比特数据的步骤包括:
CPU进入中断处理程序;
当CPU进入中断处理程序,判断从设备使能信号是否有效;
当从设备使能信号有效则SPI周期开始,则读取GPIO1 MOSI,MCU发送给CPU一个比特数据。
5.根据权利要求4所述基于CPU的GPIO实现SPI从机功能方法,其特征在于,所述判断从设备使能信号是否有效的步骤还包括:
如果从设备使能信号CS为高电平,表示SPI周期以及结束。
6.根据权利要求5所述基于CPU的GPIO实现SPI从机功能方法,其特征在于,所述每产生一中断的时钟信号,CPU读取MCU发来的一个比特数据,并向MCU发送一个回应的比特数据的步骤包括:
根据当前SPI命令的实际作用,通过GPIO2管脚的主设备数据输入信号写入回应字节中的一个比特,按照字节的最高位先发送的顺序写;
每一个CPU中断,接收一个比特,并且向MCU发送一个比特的数据,直到从设备使能信号为高电平,结束SPI时序;并将接收和发送比特的长度置为0,直到下一次SPI周期开始。
7.一种基于CPU的GPIO实现SPI从机功能***,其特征在于,所述***包括:作为SPI协议中主机的MCU,以及作为SPI协议中从机的CPU;
作为主机的CPU分别通过:接MOSI(主输出从输入信号)的GPIO1管脚、接MISO(主输入从输出信号)的GPIO2管脚、接SCLK(时钟信号)的GPIO3管脚、以及CS(从设备使能信号)的GPIO4管脚与作为主机的MCU连接;
选定时钟信号的GPIO3管脚支持向CPU发送中断,中断类型设置为边缘触发;
当MCU将时钟信号变为有效,MCU通过所述GPIO3管脚向CPU发出中断,CPU进入中断处理程序;
当CPU进入中断处理程序,并判断从设备使能信号有效,则MCU发送给CPU一个比特数据;
CPU在中断程序中读取GPIO1管脚的主输出从输入信号,从MCU读取数据;同时通过GPIO2管脚的主输入从输出信号,向MCU发送数据;
每产生一中断的时钟信号,CPU读取MCU发来的一个比特数据,并向MCU发送一个回应的比特数据;
CPU读取每读取完一字节的比特数据,则将读取的比特数据组成一个字节。
8.根据权利要求7所述的基于CPU的GPIO实现SPI从机功能***,其特征在于,所述***,还包括:
配置单元,配置用GPIO1作为主输出从输入信号MOSI,是输入信号;GPIO2作为主输入从输出MISO,是输出信号;GPIO3作为时钟信号SCLK,是输入信号;GPIO4作为从设备使能信号CS,是输入信号;
判断读取单元,用于控制CPU进入中断处理程序;当CPU进入中断处理程序,判断从设备使能信号是否有效;当从设备使能信号有效则SPI周期开始,则读取GPIO1 MOSI,MCU发送给CPU一个比特数据;
发送控制单元,用于根据当前SPI命令的实际作用,通过GPIO2管脚的主设备数据输入信号写入回应字节中的一个比特,按照字节的最高位先发送的顺序写;
响应控制单元,用于每一个CPU中断,接收一个比特,并且向MCU发送一个比特的数据,直到从设备使能信号为高电平,结束SPI时序;并将接收和发送比特的长度置为0,直到下一次SPI周期开始。
9.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器包括:作为从机的CPU和作为主机的MCU;所述处理器执行所述计算机程序时实现权利要求1至6中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至6中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910866165.XA CN110765058A (zh) | 2019-09-12 | 2019-09-12 | Gpio实现spi从机功能方法、***、设备及介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910866165.XA CN110765058A (zh) | 2019-09-12 | 2019-09-12 | Gpio实现spi从机功能方法、***、设备及介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN110765058A true CN110765058A (zh) | 2020-02-07 |
Family
ID=69329573
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910866165.XA Pending CN110765058A (zh) | 2019-09-12 | 2019-09-12 | Gpio实现spi从机功能方法、***、设备及介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110765058A (zh) |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984581A (zh) * | 2020-08-14 | 2020-11-24 | 广州邦讯信息***有限公司 | 一种基于Linux的SPI总线主从设备通讯***、方法及装置 |
CN112069103A (zh) * | 2020-09-07 | 2020-12-11 | 歌尔科技有限公司 | 一种多模块与主机通信的方法及*** |
CN112269338A (zh) * | 2020-10-23 | 2021-01-26 | 阳光电源股份有限公司 | 基于gpio的数字控制器通信方法及*** |
CN112417802A (zh) * | 2020-11-12 | 2021-02-26 | 深圳市创智成科技股份有限公司 | 一种模拟存储芯片的方法、***、设备及存储介质 |
CN113176751A (zh) * | 2021-04-28 | 2021-07-27 | 青岛歌尔智能传感器有限公司 | 数据传输方法、设备及计算机可读存储介质 |
CN113419985A (zh) * | 2021-06-15 | 2021-09-21 | 珠海市一微半导体有限公司 | Spi***自动读取数据的控制方法及spi*** |
CN113590520A (zh) * | 2021-06-15 | 2021-11-02 | 珠海一微半导体股份有限公司 | Spi***自动写入数据的控制方法及spi*** |
CN114721317A (zh) * | 2022-06-02 | 2022-07-08 | 中国船舶重工集团公司第七0七研究所 | 一种基于spi控制器网络通讯控制***及方法 |
CN115834739A (zh) * | 2023-02-16 | 2023-03-21 | 石家庄科林电气股份有限公司 | 一种台区智能融合终端spi通信中不定长数据帧的接收方法 |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819512A (zh) * | 2012-06-28 | 2012-12-12 | 惠州市德赛西威汽车电子有限公司 | 一种基于spi的全双工通信装置及其方法 |
CN105308585A (zh) * | 2013-06-05 | 2016-02-03 | 大陆-特韦斯贸易合伙股份公司及两合公司 | 用于数据通信的方法、通信控制器和电路装置 |
CN107301138A (zh) * | 2017-06-01 | 2017-10-27 | 深圳震有科技股份有限公司 | 一种串行总线桥接方法及串行总线*** |
CN109726163A (zh) * | 2018-12-30 | 2019-05-07 | 广东大普通信技术有限公司 | 一种基于spi的通信***、方法、设备和储存介质 |
US10318179B1 (en) * | 2017-12-27 | 2019-06-11 | Nxp B.V. | Host device to embedded multi-media card device communication |
CN109902053A (zh) * | 2017-12-07 | 2019-06-18 | 厦门雅迅网络股份有限公司 | 一种基于双控制器的spi通信方法、终端设备及存储介质 |
-
2019
- 2019-09-12 CN CN201910866165.XA patent/CN110765058A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819512A (zh) * | 2012-06-28 | 2012-12-12 | 惠州市德赛西威汽车电子有限公司 | 一种基于spi的全双工通信装置及其方法 |
CN105308585A (zh) * | 2013-06-05 | 2016-02-03 | 大陆-特韦斯贸易合伙股份公司及两合公司 | 用于数据通信的方法、通信控制器和电路装置 |
CN107301138A (zh) * | 2017-06-01 | 2017-10-27 | 深圳震有科技股份有限公司 | 一种串行总线桥接方法及串行总线*** |
CN109902053A (zh) * | 2017-12-07 | 2019-06-18 | 厦门雅迅网络股份有限公司 | 一种基于双控制器的spi通信方法、终端设备及存储介质 |
US10318179B1 (en) * | 2017-12-27 | 2019-06-11 | Nxp B.V. | Host device to embedded multi-media card device communication |
CN109726163A (zh) * | 2018-12-30 | 2019-05-07 | 广东大普通信技术有限公司 | 一种基于spi的通信***、方法、设备和储存介质 |
Non-Patent Citations (2)
Title |
---|
邓彬伟: "嵌入式***中可配置式GPIO模拟SPI总线方法的设计与实现", 《电子技术》 * |
郭静华等: "SPI总线从机接口实时模拟的实现", 《东北农业大学学报》 * |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111984581B (zh) * | 2020-08-14 | 2022-05-10 | 广州邦讯信息***有限公司 | 一种基于Linux的SPI总线主从设备通讯***、方法及装置 |
CN111984581A (zh) * | 2020-08-14 | 2020-11-24 | 广州邦讯信息***有限公司 | 一种基于Linux的SPI总线主从设备通讯***、方法及装置 |
CN112069103A (zh) * | 2020-09-07 | 2020-12-11 | 歌尔科技有限公司 | 一种多模块与主机通信的方法及*** |
CN112269338A (zh) * | 2020-10-23 | 2021-01-26 | 阳光电源股份有限公司 | 基于gpio的数字控制器通信方法及*** |
CN112417802B (zh) * | 2020-11-12 | 2022-04-19 | 深圳市创智成科技股份有限公司 | 一种模拟存储芯片的方法、***、设备及存储介质 |
CN112417802A (zh) * | 2020-11-12 | 2021-02-26 | 深圳市创智成科技股份有限公司 | 一种模拟存储芯片的方法、***、设备及存储介质 |
CN113176751A (zh) * | 2021-04-28 | 2021-07-27 | 青岛歌尔智能传感器有限公司 | 数据传输方法、设备及计算机可读存储介质 |
CN113590520A (zh) * | 2021-06-15 | 2021-11-02 | 珠海一微半导体股份有限公司 | Spi***自动写入数据的控制方法及spi*** |
CN113419985A (zh) * | 2021-06-15 | 2021-09-21 | 珠海市一微半导体有限公司 | Spi***自动读取数据的控制方法及spi*** |
CN113590520B (zh) * | 2021-06-15 | 2024-05-03 | 珠海一微半导体股份有限公司 | Spi***自动写入数据的控制方法及spi*** |
CN114721317A (zh) * | 2022-06-02 | 2022-07-08 | 中国船舶重工集团公司第七0七研究所 | 一种基于spi控制器网络通讯控制***及方法 |
CN114721317B (zh) * | 2022-06-02 | 2022-09-16 | 中国船舶重工集团公司第七0七研究所 | 一种基于spi控制器网络通讯控制***及方法 |
CN115834739A (zh) * | 2023-02-16 | 2023-03-21 | 石家庄科林电气股份有限公司 | 一种台区智能融合终端spi通信中不定长数据帧的接收方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110765058A (zh) | Gpio实现spi从机功能方法、***、设备及介质 | |
US5729683A (en) | Programming memory devices through the parallel port of a computer system | |
KR101988260B1 (ko) | 임베디드 멀티미디어 카드, 및 이의 동작 방법 | |
KR102111741B1 (ko) | 임베디드 멀티미디어 카드 및 이의 동작 방법 | |
CN106681953B (zh) | 使用i2c总线与主机连接的从机及其通信方法 | |
KR20140036094A (ko) | 비휘발성 메모리 카드를 제어하는 호스트, 이를 포함하는 시스템 및 이의 동작 방법 | |
US10509595B2 (en) | System and method for communication in a semiconductor device | |
CN115858431B (zh) | 数据传输控制方法、控制器及电子设备 | |
TW200935234A (en) | System and method for setting access and modification for synchronous serial interface NAND | |
CN112559410A (zh) | 一种基于fpga的lio总线扩展uart外设***及方法 | |
CN112131156B (zh) | 一种数据传输方法、***及电子设备和存储介质 | |
CN113849433A (zh) | 一种总线控制器的执行方法、装置、总线控制器、计算机设备和存储介质 | |
CN115309687A (zh) | 跨数据帧的串行***接口(spi)自动寄存器地址增量 | |
US6366877B1 (en) | Method and device for emulation of peripheral input/output (I/O) controller of a computer system | |
JP2000066994A (ja) | Lpc/isaブリッジ及びそのブリッジ方法 | |
JP3477306B2 (ja) | 拡張入出力インターフェイス | |
CN110765060A (zh) | Mdio总线到并行总线转换方法及装置、设备、介质 | |
KR100423017B1 (ko) | 마이크로컴퓨터 | |
CN116340217A (zh) | 数据处理方法及相关装置 | |
US20050144331A1 (en) | On-chip serialized peripheral bus system and operating method thereof | |
CN112685344B (zh) | Dma编程电路及基于dma编程电路的编程方法 | |
CN113986808B (zh) | 一种发送bmc码的方法、***及计算机设备 | |
US20230305816A1 (en) | Device and method for handling programming language function | |
CN113326220B (zh) | 一种外设电子标签信息获取方法及设备 | |
JP2000112878A (ja) | デ―タ処理装置内の転送要求タイミングを制御するための装置および方法 |
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 | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20200207 |