CN117076373A - 一种通信方法、spi控制器及单片机 - Google Patents
一种通信方法、spi控制器及单片机 Download PDFInfo
- Publication number
- CN117076373A CN117076373A CN202311333768.6A CN202311333768A CN117076373A CN 117076373 A CN117076373 A CN 117076373A CN 202311333768 A CN202311333768 A CN 202311333768A CN 117076373 A CN117076373 A CN 117076373A
- Authority
- CN
- China
- Prior art keywords
- spi
- host
- signal level
- hosts
- data line
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 37
- 238000001514 detection method Methods 0.000 claims description 20
- 238000004590 computer program Methods 0.000 claims description 4
- 230000002093 peripheral effect Effects 0.000 claims description 3
- 230000005540 biological transmission Effects 0.000 description 5
- 230000003111 delayed effect Effects 0.000 description 3
- 238000010586 diagram Methods 0.000 description 3
- 230000006870 function Effects 0.000 description 3
- 230000001934 delay Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
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
-
- 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/40—Bus structure
- G06F13/4063—Device-to-bus coupling
- G06F13/4068—Electrical coupling
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Small-Scale Networks (AREA)
Abstract
本申请公开了一种通信方法、SPI控制器及单片机,涉及芯片领域。在SPI主机与SPI从机进行通信以前,先对NSS信号电平进行检测,若NSS信号电平为高电平,则SPI主机可以将NSS信号电平拉低为低电平,同时为了防止多个SPI主机同时将NSS信号电平拉低为低电平并进入通信状态,此时会延时一段时间后对数据线信号电平进行检测,由于各个SPI主机对应的延时时间段不同,因此延时时间长的SPI主机可以发现延时时间短的SPI主机拉低数据线信号电平的操作,若此时数据线信号电平为高电平,则代表延时时间段内无其他SPI主机与SPI从机正在进行通信,因此SPI主机可以拉低数据线信号电平并与SPI从机进行通信。
Description
技术领域
本申请涉及芯片领域,特别是指一种通信方法、SPI控制器及单片机。
背景技术
串行外设接口(serial peripheral interface,SPI)作为常用的串行数据总线,仅支持一主多从的通信。
在现有技术中,通过在单片机(microcontrollerunit,MCU)芯片外部增加电路模块,对SPI总线进行切换,以实现SPI总线的复用,从而间接实现SPI总线的多主多从通信。然而这种现有技术无法直接实现多主多从的通信,且会额外增加物料清单(bill ofmaterials,BOM)成本。
发明内容
有鉴于此,本申请提供了一种通信方法、SPI控制器及单片机,从而达到直接实现多主多从通信,且节约BOM成本的目的。
本申请提供的一种通信方法,应用于SPI控制器,SPI控制器用于控制多个SPI主机,多个SPI主机均连接同一数据线,具体通过如下方式实现:
控制第一SPI主机对NSS信号电平进行检测,多个SPI主机包括第一SPI主机;
若确定NSS信号电平为高电平,则控制第一SPI主机拉低NSS信号电平为低电平;
延时第一时间段后,控制第一SPI主机对数据线信号电平进行检测,第一时间段为第一SPI主机对应的延时时间段,多个SPI主机中各个SPI主机对应的延时时间段不同;
若确定数据线信号电平为高电平,则控制第一SPI主机拉低数据线信号电平为低电平;
等待第二时间段后,控制第一SPI主机与SPI从机进行通信,第二时间段为第一SPI主机对应的间隔时间段,多个SPI主机中各个SPI主机对应的间隔时间段一致。
可选地,多个SPI主机还包括第二SPI主机,控制第一SPI主机对NSS信号电平进行检测,包括:
同时控制第一SPI主机和第二SPI主机对NSS信号电平进行检测;
则控制第一SPI主机拉低NSS信号电平为低电平,包括:
同时控制第一SPI主机和第二SPI主机拉低NSS信号电平为低电平。
可选地,同时控制第一SPI主机和第二SPI主机拉低NSS信号电平为低电平之后,还包括:
延时第三时间段后,控制第二SPI主机对数据线信号电平进行检测,第三时间段为第二SPI主机对应的延时时间段,第三时间段的时间长度长于第一时间段的时间长度;
确定数据线信号电平为低电平,并控制第二SPI主机向处理器发送第三冲突信息,第三冲突信息指示NSS信号冲突,第一SPI主机正在使用SPI总线进行通信。
可选地,第二时间段的时间长度长于第三时间段的时间长度。
可选地,等待第二时间段之前,多个SPI主机所连接的SPI总线处于开漏模式。
可选地,等待第二时间段之后,多个SPI主机所连接的SPI总线处于推挽模式。
可选地,方法还包括:
若确定NSS信号电平为低电平,则控制第一SPI主机向处理器发送第一冲突信息,第一冲突信息指示NSS信号冲突,第三SPI主机正在使用SPI总线进行通信,多个SPI主机还包括第三SPI主机,多个SPI主机均连接SPI总线。
可选地,方法还包括:
若确定数据线信号电平为低电平,则控制第一SPI主机向处理器发送第二冲突信息,第二冲突信息指示数据线信号冲突,第三SPI主机正在使用SPI总线进行通信,多个SPI主机还包括第三SPI主机,多个SPI主机均连接SPI总线。
本申请还提供了一种SPI控制器,SPI控制器用于控制多个SPI主机,多个SPI主机均连接同一数据线,包括:
检测模块,用于控制第一SPI主机对NSS信号电平进行检测,多个SPI主机包括第一SPI主机;检测模块,还用于延时第一时间段后,控制第一SPI主机对数据线信号电平进行检测,第一时间段为第一SPI主机对应的延时时间段,多个SPI主机中各个SPI主机对应的延时时间段不同;
拉低模块,用于若确定NSS信号电平为高电平,则控制第一SPI主机拉低NSS信号电平为低电平;拉低模块,还用于若确定数据线信号电平为高电平,则控制第一SPI主机拉低数据线信号电平为低电平;
通信模块,用于等待第二时间段后,控制第一SPI主机与SPI从机进行通信,第二时间段为第一SPI主机对应的间隔时间段,多个SPI主机中各个SPI主机对应的间隔时间段一致。
本申请还提供了一种单片机,包括:处理器,处理器与存储器耦合,存储器中存储有至少一条计算机程序指令,至少一条计算机程序指令由处理器加载并执行,以使单片机实现上述通信方法。
因此,本申请的有益效果是:由于SPI控制器可以控制多个SPI主机,通过在SPI主机与SPI从机进行通信以前,先对NSS信号电平进行检测,若NSS信号电平为高电平,则代表此时无其他SPI主机与SPI从机正在进行通信,因此SPI主机可以将NSS信号电平拉低为低电平,同时为了防止多个SPI主机同时将NSS信号电平拉低为低电平并进入通信状态,此时会延时一段时间后对数据线信号电平进行检测,由于各个SPI主机对应的延时时间段不同,因此延时时间长的SPI主机可以发现延时时间短的SPI主机拉低数据线信号电平的操作,若此时数据线信号电平为高电平,则代表延时时间段内无其他SPI主机与SPI从机正在进行通信,因此SPI主机可以拉低数据线信号电平并与SPI从机进行通信。本申请通过在SPI主机与SPI从机进行通信以前,先对可能造成通信冲突的情况进行检测,从而降低通信冲突发生的概率,使得多主SPI总线能够正常工作,因此可以实现SPI多主多从通信,并且由于本申请并未额外增加电路模块,在SPI控制器内部即可实现多主多从通信,因此可以节约BOM成本。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的实施例,对于本领域普通技术人员来讲,还可以根据提供的附图获得其他的附图。
图1为本申请第一实施例的流程图;
图2为本申请第二实施例的流程图;
图3为本申请第三实施例的流程图;
图4为本申请第三实施例的信号示意图;
图5为本申请的一种SPI控制器示意图;
图6为本申请的一种单片机示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
发明人发现,现有技术在MCU芯片外部设置电路模块,通过对外部电路模块进行控制,从而可以对SPI总线进行切换,以实现SPI总线的复用。然而这种方式,实际上是对电路进行控制,从而间接实现SPI总线的多主通信,同时,由于增设了电路模块,还会导致增加BOM成本。
而本申请在不需要增加外部电路的情况下,通过SPI控制器就可以检测到多个SPI主机同时对SPI从机进行通信的冲突,同时可以在检测到通信冲突后,控制SPI主机让出SPI总线,以实现同一时刻仅有一个SPI主机与SPI从机进行通信,因此本申请在MCU芯片内部即可直接实现SPI多主通信功能,并且可以节约系统BOM成本,使得MCU芯片可以适用于更多的应用场景中。
请参阅图1,本申请的第一实施例具体步骤如下:
S101:SPI控制器控制第一SPI主机对NSS信号电平进行检测。
在本申请中,可以存在多个SPI主机以及多个SPI从机,SPI控制器用于控制多个SPI主机,多个SPI主机中的任一SPI主机均可以与多个SPI从机中的任一SPI从机进行通信。第一SPI主机可以是上述多个SPI主机中的任一SPI主机,且第一SPI主机具有与SPI从机进行通信的需要。具体地,多个SPI主机均与同一SPI主线进行连接,并利用同一SPI主线与SPI从机进行通信,此时,多个SPI主机可以均连接同一数据线。需要说明的是,多个SPI主机包括第一SPI主机。
在本申请中,可能存在多个SPI主机同时均需要与SPI从机进行通信的情况,但若多个SPI主机与SPI从机之间均进行数据传输,则会存在冲突。因此,在SPI主机与SPI从机进行通信之前,需要先进行冲突检测。具体地,冲突检测可以分为两个阶段,第一阶段为NSS(Negative of Slave Select,意为“低电平有效的从器件选择”信号)信号冲突检测阶段,第二阶段为数据线信号冲突检测阶段。当SPI主机在冲突检测阶段,确定可与SPI从机进行通信,则可进入正常通信阶段。
需要说明的是,步骤S101至步骤S102为NSS信号冲突检测阶段,步骤S103至步骤S104为数据线信号冲突检测阶段,而步骤S105为正常通信阶段。同时,在冲突检测阶段,SPI总线工作在开漏模式;在正常通信阶段,SPI信号线工作在推挽模式。
在SPI通信中,NSS信号线通常用于从机的选择,因此,NSS信号电平可以反映是否有SPI主机已选择其需要通信的SPI从机。第一SPI主机通过对NSS信号电平进行检测,可以知道其是否有选择SPI从机的条件。
S102:SPI控制器若确定NSS信号电平为高电平,则控制第一SPI主机拉低NSS信号电平为低电平。
由于NSS信号为低电平有效,因此当NSS信号电平为高电平时,则证明当前没有SPI主机选择SPI从机,第一SPI主机可以选择SPI从机;而当NSS信号电平为低电平时,则证明当前已有SPI主机选择SPI从机,第一SPI主机不具备选择SPI从机的条件。
因此,在一些实现方式中,多个SPI主机还包括第三SPI主机,SPI控制器若确定NSS信号电平为低电平,则其中,第一冲突信息指示NSS信号冲突,第三SPI主机正在使用SPI总线进行通信。此时,第一SPI主机让出SPI总线,并停止与SPI从机进行通信,从而避免与正在进行通信的第三SPI主机发生通信冲突。
S103:SPI控制器延时第一时间段后,控制第一SPI主机对数据线信号电平进行检测。
第一时间段为第一SPI主机对应的延时时间段。具体地,可以通过软件设置,将第一时间段设置为第一SPI主机对应的延时时间段。
需要说明的是,多个SPI主机中各个SPI主机对应的延时时间段不同。由于多个SPI主机可能均具有通信需要,且可能同时对NSS信号电平进行检测,并确定NSS信号电平为高电平,因此多个SPI主机若同时拉低NSS信号电平为低电平并进行SPI通信,则也可能造成通信冲突。为了防止这种情况发生,则会为不同SPI主机分配不同的延时时间段,由于各个SPI主机对应的延时时间段不同,从而可以将各个SPI主机可拉低数据线信号电平的时间分隔开,因此延时时间长的SPI主机可以发现延时时间段的SPI主机拉低数据线信号电平的操作,从而降低通信冲突的可能性。
由于数据线信号电平在未传输数据的情况下为默认电平,即高电平,因此第一SPI主机通过对数据线信号电平进行检测,即可以确定此时是否有其他SPI主机正在进行数据传输,从而可以降低数据线信号冲突的可能性。
S104:SPI控制器若确定数据线信号电平为高电平,则控制第一SPI主机拉低数据线信号电平为低电平。
当数据线信号电平为高电平,则证明当前没有其他SPI主机正在进行数据传输,第一SPI主机可以拉低数据线信号电平为低电平,并与SPI从机进行数据传输;当数据线信号电平为低电平,则证明当前已有其他SPI主机正在进行数据传输,若第一SPI主机进行通信则会导致通信冲突。
在一些实现方式中,多个SPI主机还包括第三SPI主机,SPI控制器若确定数据线信号电平为低电平,则控制第一SPI主机向处理器发送第二冲突信息。其中,第二冲突信息指示数据线信号冲突,第三SPI主机正在使用SPI总线进行通信。此时,第一SPI主机让出SPI总线,并停止与SPI从机进行通信,从而避免与正在进行通信的第三SPI主机发生通信冲突。
S105:SPI控制器等待第二时间段后,控制第一SPI主机与SPI从机进行通信。
第二时间段为第一SPI主机对应的间隔时间段,且多个SPI主机中各个SPI主机对应的间隔时间段一致。具体地,若SPI控制器用于控制第一SPI主机、第二SPI主机和第三SPI主机,则第一SPI主机对应的间隔时间段、第二SPI主机对应的间隔时间段和第三SPI主机对应的间隔时间段在时间长度上相等。
第二时间段的时间长度长于各个SPI主机对应的延时时间段的时间长度,此时第一SPI主机可以在各个SPI主机均对数据线信号电平进行检测完后,再进行SPI通信。需要说明的是,由于第一SPI主机已确定数据线信号电平为高电平,因此第一SPI主机的延时时间段应小于其他SPI主机的延时时间段,其他SPI主机对数据线信号电平进行检测,仅能得到数据线信号电平为低电平的结果。而通过在各个SPI主机均已得到对数据线信号电平进行检测的检测结果后,再进行SPI通信,可以进一步降低发生通信冲突的概率。
需要说明的是,第一SPI主机与SPI从机进行通信时,第一SPI主机与SPI从机之间进行数据传输。
在一些实现方式中,SPI控制器等待第二时间段之前,多个SPI主机所连接的SPI总线处于开漏模式;在另一些实现方式中,SPI控制器等待第二时间段之后,多个SPI主机所连接的SPI总线处于推挽模式。
在本申请第一实施例中,通过在SPI主机与SPI从机进行通信以前,先对NSS信号电平进行检测,若NSS信号电平为高电平,则代表此时无其他SPI主机与SPI从机正在进行通信,因此SPI主机可以将NSS信号电平拉低为低电平,同时为了防止多个SPI主机同时将NSS信号电平拉低为低电平并进入通信状态,此时会延时一段时间后对数据线信号电平进行检测,由于各个SPI主机对应的延时时间段不同,因此延时时间长的SPI主机可以发现延时时间短的SPI主机拉低数据线信号电平的操作,若此时数据线信号电平为高电平,则代表延时时间段内无其他SPI主机与SPI从机正在进行通信,因此SPI主机可以拉低数据线信号电平并与SPI从机进行通信。本申请通过在SPI主机与SPI从机进行通信以前,先对可能造成通信冲突的情况进行检测,从而降低通信冲突发生的概率,使得多主SPI总线能够正常工作,因此可以实现SPI多主多从通信,并且由于本申请并未额外增加电路模块,在SPI控制器内部即可实现多主多从通信,因此可以节约BOM成本。
由于在第一SPI主机拉低NSS信号电平后,可能有其他SPI主机需要与SPI从机进行通信,因此第二实施例对这种情况进行说明。
请参阅图2,本申请的第二实施例具体步骤如下:
S201:SPI控制器控制第一SPI主机对NSS信号电平进行检测。
在本实施例中,多个SPI主机还包括第四SPI主机,SPI控制器至少用于控制第一SPI主机和第四SPI主机。
需要说明的是,SPI控制器若确定NSS信号电平为低电平,则执行步骤S202;SPI控制器若确定NSS信号电平为高电平,则执行步骤S203。
S202:SPI控制器控制第一SPI主机向处理器发送第一冲突信息。
需要说明的是,若SPI控制器执行步骤S202,则不再执行后续步骤S203至步骤S209。
S203:SPI控制器控制第一SPI主机拉低NSS信号电平为低电平。
S204:SPI控制器控制第四SPI主机对NSS信号电平进行检测。
S205:SPI控制器确定NSS信号电平为低电平,控制第四SPI主机向处理器发送第三冲突信息。
第三冲突信息指示NSS信号冲突,第一SPI主机正在使用SPI总线进行通信。
需要说明的是,步骤S204至步骤S205可以在步骤S202之后的任一时刻执行。具体地,步骤S204至步骤S205还可以在步骤S206至步骤S207之间执行,还可以在步骤S207至步骤S208之间执行,也可以在步骤S208至步骤S209之间执行。
S206:SPI控制器延时第一时间段后,控制第一SPI主机对数据线信号电平进行检测。
需要说明的是,SPI控制器若确定数据线信号电平为低电平,则执行步骤S207;SPI控制器若确定数据线信号电平为高电平,则执行步骤S208。
S207:SPI控制器控制第一SPI主机向处理器发送第二冲突信息。
需要说明的是,若SPI控制器执行步骤S207,则不再执行后续步骤S208至步骤S209。
S208:SPI控制器控制第一SPI主机拉低数据线信号电平为低电平。
S209:SPI控制器等待第二时间段后,控制第一SPI主机与SPI从机进行通信。
在本申请第二实施例中,由于SPI主机在与SPI从机进行通信之前,均会对NSS信号电平进行检测,因此当第四SPI主机需要进行通信时,可以检测到NSS信号电平已经由第一SPI主机拉低为低电平,第四SPI主机从而可以让出SPI总线,停止可能造成冲突的通信,实现在多主模式下,SPI总线能够正常工作。
由于可能存在多个SPI主机同时对NSS信号电平进行检测的情况,因此第三实施例对这种情况进行说明。
请参阅图3和图4,本申请的第三实施例具体步骤如下:
S301:SPI控制器同时控制第一SPI主机、第二SPI主机和第五SPI主机对NSS信号电平进行检测。
需要说明的是,多个SPI主机至少包括第一SPI主机、第二SPI主机和第五SPI主机。
S302:SPI控制器若确定NSS信号电平为高电平,则同时控制第一SPI主机、第二SPI主机和第五SPI主机拉低NSS信号电平为低电平。
S303:SPI控制器延时第一时间段后,控制第一SPI主机对数据线信号电平进行检测。
具体地,在本实施例中,数据线可以为串行数据输出信号线MOSI(Master OutputSlave Input,MOSI),即图4所示MOSI1、MOSI2和MOSI3分别对应于第一SPI主机、第二SPI主机和第五SPI主机对串行数据输出信号线电平进行检测的情况。
S304:SPI控制器确定数据线信号电平为高电平,并控制第一SPI主机拉低数据线信号电平为低电平。
S305:SPI控制器延时第三时间段后,控制第二SPI主机对数据线信号电平进行检测。
第三时间段为第二SPI主机对应的延时时间段,且第三时间段的时间长度长于第一时间段的时间长度。
需要说明的是,SPI控制器延时第一时间段,以及SPI控制器延时第三时间段均以拉低NSS信号电平为低电平的时刻为起始时间点,但由于第三时间段的时间长度长于第一时间段的时间长度,因此第二SPI主机对数据线信号电平进行检测的时间应晚于第一SPI主机对数据线信号电平进行检测的时间。
S306:SPI控制器确定数据线信号电平为低电平,并控制第二SPI主机向处理器发送第三冲突信息。
由于第三时间段的时间长度长于第一时间段的时间长度,因此当第二SPI主机对数据线信号电平进行检测时,第一SPI主机已经拉低数据线信号电平为低电平,此时第二SPI主机对数据线信号电平进行检测得到的检测结果为:数据线信号电平为低电平。
S307:SPI控制器延时第四时间段后,控制第五SPI主机对数据线信号电平进行检测。
第四时间段为第五SPI主机对应的延时时间段,且第四时间段的时间长度长于第三时间段的时间长度。
需要说明的是,SPI控制器延时第四时间段也以拉低NSS信号电平为低电平的时刻为起始时间点,但由于第四时间段的时间长度也长于第一时间段的时间长度,因此第五SPI主机对数据线信号电平进行检测的时间应晚于第一SPI主机对数据线信号电平进行检测的时间。
S308:SPI控制器确定数据线信号电平为低电平,并控制第五SPI主机向处理器发送第三冲突信息。
由于第四时间段的时间长度长于第一时间段的时间长度,因此当第五SPI主机对数据线信号电平进行检测时,第一SPI主机已经拉低数据线信号电平为低电平,此时第五SPI主机对数据线信号电平进行检测得到的检测结果为:数据线信号电平为低电平。
S309:SPI控制器等待第二时间段后,控制第一SPI主机与SPI从机进行通信。
需要说明的是,第二时间段的时间长度长于第四时间段的时间长度。此时第一时间段、第二时间段、第三时间段和第四时间段根据长度按照从短到长依次排序如下:第一时间段、第三时间段、第四时间段、第二时间段。
在本申请第三实施例中,由于SPI主机在拉低NSS信号电平为低电平之后,还需要对数据线信号电平进行检测,并且,通过对不同SPI主机设置不同的延时时间,因此多个SPI主机对数据线信号电平进行检测的时间不同,此时延时时间长的SPI主机可以发现延时时间短的SPI主机拉低数据线信号电平的操作,并让出SPI总线、停止通信,从而可以降低多个SPI主机同时进行通信而引发的通信冲突的情况,使得SPI总线能够在存在多个SPI主机的情况下正常工作。
请参阅图5,本申请提供了一种SPI控制器500,SPI控制器500用于控制多个SPI主机,多个SPI主机均连接同一数据线,包括:
检测模块501:用于控制第一SPI主机对NSS信号电平进行检测,多个SPI主机包括第一SPI主机。
检测模块501:还用于延时第一时间段后,控制第一SPI主机对数据线信号电平进行检测,第一时间段为第一SPI主机对应的延时时间段,多个SPI主机中各个SPI主机对应的延时时间段不同。
拉低模块502:用于若确定NSS信号电平为高电平,则控制第一SPI主机拉低NSS信号电平为低电平。
拉低模块502:还用于若确定数据线信号电平为高电平,则控制第一SPI主机拉低数据线信号电平为低电平。
通信模块503:用于等待第二时间段后,控制第一SPI主机与SPI从机进行通信,第二时间段为第一SPI主机对应的间隔时间段,多个SPI主机中各个SPI主机对应的间隔时间段一致。
可选地,多个SPI主机还包括第二SPI主机,检测模块501:具体用于同时控制第一SPI主机和第二SPI主机对NSS信号电平进行检测。
则,拉低模块502:具体用于同时控制第一SPI主机和第二SPI主机拉低NSS信号电平为低电平。
可选地,一种SPI控制器500还包括:发送模块504。
检测模块501:还用于延时第三时间段后,控制第二SPI主机对数据线信号电平进行检测,第三时间段为第二SPI主机对应的延时时间段,第三时间段的时间长度长于第一时间段的时间长度。
发送模块504:用于确定数据线信号电平为低电平,并控制第二SPI主机向处理器发送第三冲突信息,第三冲突信息指示NSS信号冲突,第一SPI主机正在使用SPI总线进行通信。
可选地,发送模块504:还用于若确定NSS信号电平为低电平,则控制第一SPI主机向处理器发送第一冲突信息,第一冲突信息指示NSS信号冲突,第三SPI主机正在使用SPI总线进行通信,多个SPI主机还包括第三SPI主机,多个SPI主机均连接SPI总线。
可选地,发送模块504:还用于若确定数据线信号电平为低电平,则控制第一SPI主机向处理器发送第二冲突信息,第二冲突信息指示数据线信号冲突,第三SPI主机正在使用SPI总线进行通信,多个SPI主机还包括第三SPI主机,多个SPI主机均连接SPI总线。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
需要说明的是:上述实施例提供的通信装置在实现通信功能时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将通信装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的通信装置与通信方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
请参阅图6,本申请还提供了一种单片机600,包括:处理器601和存储器602。
处理器601与存储器602耦合,存储器602中存储有至少一条计算机程序指令,至少一条计算机程序指令由处理器601加载并执行,以使单片机实现上述通信方法。
最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
对所公开的实施例的上述说明,使本领域技术人员能够实现或使用本申请。对这些实施例的多种修改对本领域技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本申请的精神或范围的情况下,在其它实施例中实现。因此,本申请将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
Claims (10)
1.一种通信方法,其特征在于,应用于串行外设接口SPI控制器,所述SPI控制器用于控制多个SPI主机,所述多个SPI主机均连接同一数据线,所述方法包括:
控制第一SPI主机对NSS信号电平进行检测,所述多个SPI主机包括所述第一SPI主机;
若确定所述NSS信号电平为高电平,则控制所述第一SPI主机拉低所述NSS信号电平为低电平;
延时第一时间段后,控制所述第一SPI主机对数据线信号电平进行检测,所述第一时间段为所述第一SPI主机对应的延时时间段,所述多个SPI主机中各个SPI主机对应的延时时间段不同;
若确定所述数据线信号电平为高电平,则控制所述第一SPI主机拉低所述数据线信号电平为低电平;
等待第二时间段后,控制所述第一SPI主机与SPI从机进行通信,所述第二时间段为所述第一SPI主机对应的间隔时间段,所述多个SPI主机中各个SPI主机对应的间隔时间段一致。
2.根据权利要求1所述的方法,其特征在于,所述多个SPI主机还包括第二SPI主机,所述控制第一SPI主机对NSS信号电平进行检测,包括:
同时控制所述第一SPI主机和所述第二SPI主机对所述NSS信号电平进行检测;
则所述控制所述第一SPI主机拉低所述NSS信号电平为低电平,包括:
同时控制所述第一SPI主机和所述第二SPI主机拉低所述NSS信号电平为低电平。
3.根据权利要求2所述的方法,其特征在于,所述同时控制所述第一SPI主机和所述第二SPI主机拉低所述NSS信号电平为低电平之后,还包括:
延时第三时间段后,控制所述第二SPI主机对所述数据线信号电平进行检测,所述第三时间段为所述第二SPI主机对应的延时时间段,所述第三时间段的时间长度长于所述第一时间段的时间长度;
确定所述数据线信号电平为低电平,并控制所述第二SPI主机向处理器发送第三冲突信息,所述第三冲突信息指示NSS信号冲突,所述第一SPI主机正在使用SPI总线进行通信。
4.根据权利要求3所述的方法,其特征在于,所述第二时间段的时间长度长于所述第三时间段的时间长度。
5.根据权利要求1所述的方法,其特征在于,所述等待第二时间段之前,所述多个SPI主机所连接的SPI总线处于开漏模式。
6.根据权利要求1所述的方法,其特征在于,所述等待第二时间段之后,所述多个SPI主机所连接的SPI总线处于推挽模式。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若确定所述NSS信号电平为低电平,则控制所述第一SPI主机向处理器发送第一冲突信息,所述第一冲突信息指示NSS信号冲突,第三SPI主机正在使用SPI总线进行通信,所述多个SPI主机还包括所述第三SPI主机,所述多个SPI主机均连接所述SPI总线。
8.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若确定所述数据线信号电平为低电平,则控制所述第一SPI主机向处理器发送第二冲突信息,所述第二冲突信息指示数据线信号冲突,第三SPI主机正在使用SPI总线进行通信,所述多个SPI主机还包括所述第三SPI主机,所述多个SPI主机均连接所述SPI总线。
9.一种SPI控制器,其特征在于,所述SPI控制器用于控制多个SPI主机,所述多个SPI主机均连接同一数据线,所述SPI控制器包括:
检测模块,用于控制第一SPI主机对NSS信号电平进行检测,所述多个SPI主机包括所述第一SPI主机;所述检测模块,还用于延时第一时间段后,控制所述第一SPI主机对数据线信号电平进行检测,所述第一时间段为所述第一SPI主机对应的延时时间段,所述多个SPI主机中各个SPI主机对应的延时时间段不同;
拉低模块,用于若确定所述NSS信号电平为高电平,则控制所述第一SPI主机拉低所述NSS信号电平为低电平;所述拉低模块,还用于若确定所述数据线信号电平为高电平,则控制所述第一SPI主机拉低所述数据线信号电平为低电平;
通信模块,用于等待第二时间段后,控制所述第一SPI主机与SPI从机进行通信,所述第二时间段为所述第一SPI主机对应的间隔时间段,所述多个SPI主机中各个SPI主机对应的间隔时间段一致。
10.一种单片机,其特征在于,所述单片机包括:处理器,所述处理器与存储器耦合,所述存储器中存储有至少一条计算机程序指令,所述至少一条计算机程序指令由所述处理器加载并执行,以使所述单片机实现权利要求1-8中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311333768.6A CN117076373B (zh) | 2023-10-16 | 2023-10-16 | 一种通信方法、spi控制器及单片机 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311333768.6A CN117076373B (zh) | 2023-10-16 | 2023-10-16 | 一种通信方法、spi控制器及单片机 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117076373A true CN117076373A (zh) | 2023-11-17 |
CN117076373B CN117076373B (zh) | 2024-02-27 |
Family
ID=88717615
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311333768.6A Active CN117076373B (zh) | 2023-10-16 | 2023-10-16 | 一种通信方法、spi控制器及单片机 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117076373B (zh) |
Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100153601A1 (en) * | 2008-12-12 | 2010-06-17 | Via Technologies, Inc. | Method for preventing transaction collision on bus and computer system utilizing the same |
CN103116563A (zh) * | 2012-11-09 | 2013-05-22 | 瑞斯康达科技发展股份有限公司 | 一种主机通信方法、一种主机及通信系统 |
CN103617138A (zh) * | 2013-12-16 | 2014-03-05 | 深圳市兴威帆电子技术有限公司 | 多主机仲裁方法及多主机通信系统 |
EP3174252A1 (en) * | 2015-11-26 | 2017-05-31 | Gemalto Sa | Communication system |
CN111737175A (zh) * | 2020-06-12 | 2020-10-02 | 明见(厦门)技术有限公司 | 一种高速spi主从机通信方法、终端设备及存储介质 |
CN113726498A (zh) * | 2020-10-26 | 2021-11-30 | 深圳市宏电技术股份有限公司 | 基于spi的双全工通信方法、主机、从机及存储介质 |
CN114726675A (zh) * | 2022-04-09 | 2022-07-08 | 温州大学乐清工业研究院 | 一种基于带检测冲突的485通信网络及智能照明系统 |
WO2022161244A1 (zh) * | 2021-01-27 | 2022-08-04 | 维沃移动通信有限公司 | 多主机仲裁方法、装置和可读存储介质 |
CN115033515A (zh) * | 2022-05-26 | 2022-09-09 | 南京观海微电子有限公司 | 一种主从spi通信方法 |
CN115168276A (zh) * | 2022-06-27 | 2022-10-11 | 漳州科华技术有限责任公司 | 一种主从切换通信的控制方法、装置及系统 |
CN116737642A (zh) * | 2023-07-05 | 2023-09-12 | 北京紫光芯能科技有限公司 | 一种spi主设备、中断方法及系统 |
-
2023
- 2023-10-16 CN CN202311333768.6A patent/CN117076373B/zh active Active
Patent Citations (11)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20100153601A1 (en) * | 2008-12-12 | 2010-06-17 | Via Technologies, Inc. | Method for preventing transaction collision on bus and computer system utilizing the same |
CN103116563A (zh) * | 2012-11-09 | 2013-05-22 | 瑞斯康达科技发展股份有限公司 | 一种主机通信方法、一种主机及通信系统 |
CN103617138A (zh) * | 2013-12-16 | 2014-03-05 | 深圳市兴威帆电子技术有限公司 | 多主机仲裁方法及多主机通信系统 |
EP3174252A1 (en) * | 2015-11-26 | 2017-05-31 | Gemalto Sa | Communication system |
CN111737175A (zh) * | 2020-06-12 | 2020-10-02 | 明见(厦门)技术有限公司 | 一种高速spi主从机通信方法、终端设备及存储介质 |
CN113726498A (zh) * | 2020-10-26 | 2021-11-30 | 深圳市宏电技术股份有限公司 | 基于spi的双全工通信方法、主机、从机及存储介质 |
WO2022161244A1 (zh) * | 2021-01-27 | 2022-08-04 | 维沃移动通信有限公司 | 多主机仲裁方法、装置和可读存储介质 |
CN114726675A (zh) * | 2022-04-09 | 2022-07-08 | 温州大学乐清工业研究院 | 一种基于带检测冲突的485通信网络及智能照明系统 |
CN115033515A (zh) * | 2022-05-26 | 2022-09-09 | 南京观海微电子有限公司 | 一种主从spi通信方法 |
CN115168276A (zh) * | 2022-06-27 | 2022-10-11 | 漳州科华技术有限责任公司 | 一种主从切换通信的控制方法、装置及系统 |
CN116737642A (zh) * | 2023-07-05 | 2023-09-12 | 北京紫光芯能科技有限公司 | 一种spi主设备、中断方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN117076373B (zh) | 2024-02-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102445344B1 (ko) | 시리얼 버스를 위한 수신 클록 캘리브레이션 | |
US11256651B2 (en) | Multiple master, multi-slave serial peripheral interface | |
CN110532211B (zh) | 总线系统 | |
US11106620B1 (en) | Mixed signal device address assignment | |
CN101160569A (zh) | 改进具有多个存储器控制器的电路的带宽的设备 | |
CN115033515A (zh) | 一种主从spi通信方法 | |
CN117215977B (zh) | 一种i3c集线器及中断仲裁数字实现方法 | |
CN111488305A (zh) | 一种安全芯片快速通信的实现方法及系统 | |
CN117909280B (zh) | Spi主机逻辑电路及spi主机 | |
WO2015031115A1 (en) | Method to minimize the number of irq lines from peripherals to one wire | |
CN117076373B (zh) | 一种通信方法、spi控制器及单片机 | |
JP2001216284A (ja) | 電子制御装置 | |
CN116566761B (zh) | Spi双主机共享仲裁系统及方法 | |
JP2000293485A (ja) | 通信インターフェース | |
CN116578519A (zh) | 一种通信方法、装置、设备及介质 | |
WO2018005516A1 (en) | Accelerated i3c master stop | |
CN114996184B (zh) | 兼容实现spi或i2c从机的接口模块及数据传输方法 | |
US7539206B2 (en) | Communication apparatus and method for supporting carrier sense multiple access/collision detection | |
EP4323880B1 (en) | I2c bus architecture using shared clock and dedicated data lines | |
CN112069103A (zh) | 一种多模块与主机通信的方法及系统 | |
CN108536637B (zh) | 一种用于变送器调理芯片的通信系统及方法 | |
CN117234974B (zh) | 一种通信系统、通信方法及存储介质 | |
JP3164851B2 (ja) | 空気調和機のアドレス設定装置 | |
JP4788004B2 (ja) | 情報処理装置、pciバス制御方法、およびpciバス制御プログラム | |
CN116233096B (zh) | 一种提高7816通讯效率的方法及装置 |
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 |