CN113626365A - 一种基于spi总线的通信方法 - Google Patents
一种基于spi总线的通信方法 Download PDFInfo
- Publication number
- CN113626365A CN113626365A CN202110835644.2A CN202110835644A CN113626365A CN 113626365 A CN113626365 A CN 113626365A CN 202110835644 A CN202110835644 A CN 202110835644A CN 113626365 A CN113626365 A CN 113626365A
- Authority
- CN
- China
- Prior art keywords
- spi
- data
- slave
- msg
- frame
- 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
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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Small-Scale Networks (AREA)
Abstract
一种基于SPI总线的通信方法,涉及通信技术领域,特别涉及一种主从设备间基于SPI总线的通信方法,SPI主机和SPI从机间设置由SPI从机控制的MSG信号线,SPI从机产生重要数据后,在MSG线上发送信号,等待SPI主机响应;SPI主机检测到MSG线上的信号后,判断SPI从机地址,根据SPI从机地址对应的片选逻辑生成片选信号,接收数据。本发明在硬件上增加MSG信号线,SPI从机通过MSG信号线,能够及时向SPI主机通报有重要数据需要发送,SPI主机中断正常轮询,优先接收重要数据。
Description
技术领域
本申请涉及通信技术领域,特别涉及一种主从设备间基于SPI总线的通信方法。
背景技术
随着电力电子产品更新换代的加快,芯片技术的不断提高,嵌入式系统的性能也越来越高。近几年,多核技术的融入,两个或两个以上处理器协同工作,成为当今嵌入式系统开发的一个热门选择。
处理器间通信的方式有很多种,常用总线连接,如串口,CAN,SPI,双ram,以太网等。
处理高速数据时,串口、CAN、双ram、以太网等通信方式,在传输速率、成本等方面各存在缺陷。而SPI作为一种高速、全双工、同步的通信总线,且只占用四根线,能够满足高速处理器对于通信的要求。因此,多处理器间通信目前普遍采用SPI总线直接传输数据。
SPI通信是主从方式,当存在多个从设备时,主设备通过片选信号选择从设备,完成主从设备数据的交换,主要是靠轮询方式。当从设备有紧急事件需时,数据无法及时上报到主机,时效性无法保证。
申请号为202011280630.0的中国专利申请披露了《一种通信系统及通信方法》,:除了增加帧结构外,还对硬件连接做了改进:“所述第一SPI接口和第二SPI接口在MCU之间均配置有两个额外的I/O接口”,完成数据确认接收的应答机制。
申请号为201710882738.9的中国专利申请披露了《基于SPI总线的设备间通信的方法、系统及相关装置》,使用一根片选线连接所有从机,通过数据帧中的地址实现数据传输目的的选择。
但以上申请都没有解决从机中重要数据及时上报的问题。
发明内容
本发明的目的是提出一种方法,解决SPI从机数据及时上报的问题。
为实现上述目的,本发明采用的技术方案是:一种基于SPI总线的通信方法,关键在于,SPI主机和SPI从机间设置MSG信号线,MSG信号线上的信号由SPI从机控制;SPI主机中存储SPI从机的地址和地址对应的片选逻辑;SPI从机产生重要数据后,在MSG线上发送信号,等待SPI主机响应;SPI主机检测到MSG线上的信号后,判断SPI从机地址,根据SPI从机地址对应的片选逻辑生成片选信号,接收数据。
进一步地,SPI主机和SPI从机将数据组成数据帧发送,所述数据帧包括依次排列的帧同步、帧控制字节、目的地址、帧长度、数据以及帧校验;SPI主机根据目的地址对应的片选逻辑生成片选信号。
进一步地,所述帧控制字节中,第0-3位表示帧类型,第5位表示数据优先级,第6位是翻转反转位,第7位是方向位。
如果SPI从机有一级数据需要发送,在帧控制字节中将第5位置1;SPI主机判断收到的数据帧中帧控制字节第5位为1时,保持与该SPI从机的通信,直至一级数据发送完毕。
工作时,SPI主机根据各SPI地址,产生片选信号,轮询各SPI从机;SPI从机接受轮询,并根据SPI主机指令组帧发送数据。
如果SPI从机产生了重要数据需要发送,且不再轮询周期内,则将MSG信号线置高电平;SPI主机检测到MSG线上的信号变化后,中断轮询,判断SPI从机地址,根据SPI从机地址对应的片选逻辑生成片选信号,接收数据;接收接受完成后,继续轮询过程。
采用本发明提出的方法,在硬件上增加MSG信号线,SPI从机通过MSG信号线,能够及时向SPI主机通报有重要数据需要发送,SPI主机中断正常轮询,优先接收重要数据;在帧结构中设置表示数据优先级的控制位,在轮询周期内,SPI从机通过设置控制位标志一级数据,可以将一级数据及时发送。通过硬件和软件设计,实现重要数据、一级数据和普通数据的分级发送。
附图说明
图1为本发明的处理流程图;
图2为本发明的一个实施例;
图3为本发明的另外一个实施例;
图4为信号处理单元的工作原理示意图。
具体实施方式
下面结合附图和具体实施方式对本发明作进一步说明。
SPI总线在芯片的管脚上占用四根线,分别是:MISO–SPI主机数据输入,SPI从机数据输出;MOSI–SPI主机数据输出,SPI从机数据输入;CLK–时钟信号,由SPI主机产生;CS–SPI从机片选使能信号,由SPI主机控制。
SPI主机一般采用轮询的方式,通过片选使能信号,依次与SPI从机建立通信,收发信息。
采用以上方式,在两次轮询期间,SPI从机只能等待。如果有重要数据发送,也没有发送或通知机制。
以下实施例中,将SPI从机数据分为三个优先级别,分别为重要数据、一级数据和普通数据。重要数据为发生紧急事件,需要及时上报的数据;一级数据为重要性低于紧急事件的数据但高于普通数据的其他数据。
本发明通过增加MSG信号线实现重要数据的及时发送,通过设置帧结构实现一级数据的优先发送。
以下实施例通过在SPI主机和SPI从机间设置MSG信号线,建立了SPI从机发送通知以及SPI主机响应的机制:MSG信号线上的信号由SPI从机控制;SPI从机产生重要数据后,在MSG线上发送信号,等待SPI主机响应;SPI主机检测到MSG线上的信号后,判断SPI从机地址,根据SPI从机地址对应的片选逻辑生成片选信号,接收数据。
SPI从机对MSG信号的控制:SPI从机产生重要数据后,将MSG信号线置为高电平;发送完重要数据后,SPI从机将MSG信号线置为低电平。
SPI主机和从机之间的MSG信号线的连接有多种选择,如可以采用总线方式,SPI主机的一根MSG信号线连接所有SPI从机,预先分配好时隙,当SPI从机需要发送通知时,在预先分配的时隙内发送信息。但这种方式实现起来比较复杂。
本发明采用两种方式实现MSG信号线的连接。
实施例1,参看图2,SPI主机上为每个SPI从机分配一个IO口,通过连接IO口的MSG信号线连接各SPI从机的IO口。
本实施例中,当SPI主机检测到MSG线上的电平由低变高后,中断当前的轮询或完成当前的轮询后,判断设置MSG信号的SPI从机地址,生成片选信号,接收SPI从机的重要数据。相应的MSG信号线电平由高变低,说明SPI从机发送数据完成,SPI主机重新开始轮询。
有可能发生下面情况:多个SPI从机在差不多的时刻产生重要数据,SPI主机检测到多条MSG线上的电平由低变高。为了处理这种情况,本发明中,SPI主机建立SPI从机优先级序列,当同时检测到多个MSG信号变化时,按优先级从大到小的顺序进行处理。
当SPI主机正在接收重要数据时,检测到又有其它SPI从机产生了重要数据,此时,SPI主机执行完当前操作,再接收其它重要数据,不考虑SPI从机的优先级。
实施例2,在SPI主机和SPI从机之间增加信号处理单元,SPI主机和SPI从机各有一条MSG信号线连接信号处理单元,参看图3和图4,M1、M2……Mi是各个SPI从机的MSG信号,全部接入信号处理单元,信号处理单元的输出Sx连接至SPI主机。
信号处理单元检测到MSG信号线由低电平变为高电平时,依据提前设定好的SPI从机优先级算法Mx=F1(M1,M2,M3,…,Mi),计算出需要处理的从机设备的MSG信号Mx。
信号处理单元计算出Mx对应的SPI从机地址码Sx = F2(Mx),并将编码以二进制格式输出。
SPI主机和信号处理单元约定好接收开始和结束标志。
当SPI主机收到SPI从机地址后,中断当前的轮询或完成当前的轮询后,根据SPI从机地址生成片选信号,接收SPI从机的重要数据。
信号处理单元检测到MSG信号线由高电平变为低电平时,向SPI主机发送完成信号;该信号可以是约定的任何信号,如0x5E,不要与SPI从机地址冲突。
SPI主机收到发送完成信号后,SPI主机重新开始轮询。
同样,信号处理单元存储SPI从机地址和优先级序列;信号处理单元检测到多个MSG信号线由低电平变为高电平时,按优先级从大到小的顺序进行上述处理。
以上过程保证了SPI从机在紧急情况下有重要数据需要发送时,可以及时通知SPI主机,中断轮询任务,保证SPI从机的重要数据及时发送。
在传送数据时,SPI主机和SPI从机将数据组成数据帧发送,所述数据帧包括依次排列的帧同步、帧控制字节、目的地址、帧长度、数据以及帧校验,如下表所示:
帧同步 | 帧控制字节 | 目的地址 | 帧长度 | 数据 | 帧校验 |
EB90H | 1字节 | 1字节 | 2字节 | 可变 | 1字节 |
SPI主机根据目的地址对应的片选逻辑生成片选信号。
1、帧同步:两个字节,固定为16进制的EB90。
2、帧控制字节:第0-3位表示帧类型,第5位表示数据优先级,第6位是翻转位,第7位是方向位,定义如下:
帧类型:表示当前传送的数据类型,0x00=无效数据,0x01=正常数据,0x0E=复位链路确认,0x0F=复位链路。
数据优先级:SPI从机检测到有重要数据需要上送时,将该位置1;传输完成后,该位置0。
翻转位:发送方每发送一帧数据,翻转位变化一次。
方向位:0表示“主机->从机”;1表示“从机->主机”。
3、目的地址:0-备用,1-SPI主机地址,其他-SPI从机地址。
4、帧长度:数据区有效字节个数。
5、数据:应用层数据。
6、帧校验:1个字节,帧同步到数据的所有信息累加和。
在电力应用领域,传输的数据类型包括:对时、召时钟、遥信、遥测、电度、SOE、定值、遥控等等。
传统的SPI通信方式, SPI从机是被动式响应SPI主机要求,SPI主机召什么数据,从机回复对应的数据。轮询时,SPI主机每次只召特定的数据。如果SPI从机产生了一级数据需要发送,但数据类型不是本轮召的数据,一级数据不会上传,造成一级数据不能及时发送。
本发明,如果SPI从机有一级数据需要发送,将当前回复帧的帧控制字节中第5位置1;SPI主机判断收到的数据帧中帧控制字节第5位为1时,召完当前数据后,保持与该SPI从机的通信,向该SPI从机召一级数据,直至一级数据发送完毕。
如果与SPI主机通信期间SPI从机有重要数据需要发送,也采取发送一级数据的策略:在帧控制字节中将第5位置1;SPI主机判断收到的数据帧中帧控制字节第5位为1时,保持与该SPI从机的通信,向该SPI从机召重要数据,直至重要数据发送完毕。在上述情况下,SPI从机可以不改变连接的MSG信号线的电平,在保证重要数据可以及时发送的前提下,减少上位机的工作量。
以上处理过程如图1所示。
通过设置和分析帧结构的内容,本发明还可以发现接收到的数据是否异常;通过过程控制,及时重启通信,保证通信质量。
信息接收端(包括SPI主机和SPI从机)分析接收到的数据帧,如果出现下列情况之一:
1)帧校验的累加和错误;2)翻转位不翻转(通过和前一帧数据对比确认);3)帧同步错误;
说明数据异常,需要重新复位通信链路。
SPI主机检测到上述情况后,直接初始化链路,重启通讯。
SPI从机检测到上述情况后,下次发送数据时停止翻转位变化,触发主机复位通信链路:SPI主机检测到翻转位不翻转,初始化链路重启通讯。
Claims (10)
1.一种基于SPI总线的通信方法,其特征在于,
SPI主机和SPI从机间设置MSG信号线,MSG信号线上的信号由SPI从机控制;
SPI主机中存储SPI从机的地址和地址对应的片选逻辑;
SPI从机产生重要数据后,在MSG线上发送信号,等待SPI主机响应;
SPI主机检测到MSG线上的信号后,判断SPI从机地址,根据SPI从机地址对应的片选逻辑生成片选信号,接收数据。
2.根据权利要求1所述的基于SPI总线的通信方法,其特征在于,SPI从机产生重要数据后,将MSG信号线置为高电平;发送完重要数据后,SPI从机将MSG信号线置为低电平。
3.根据权利要求2所述的基于SPI总线的通信方法,其特征在于,SPI主机上为每个SPI从机分配一个IO口,通过连接IO口的MSG信号线连接各SPI从机的IO口;
SPI主机建立SPI从机优先级序列,当同时检测到多个MSG信号变化时,按优先级从大到小的顺序进行处理。
4.根据权利要求2所述的基于SPI总线的通信方法,其特征在于,在SPI主机和SPI从机之间增加信号处理单元,SPI主机和SPI从机各有一条MSG信号线连接信号处理单元,信号处理单元存储SPI从机地址和优先级序列;
信号处理单元检测到MSG信号线由低电平变为高电平时,将该信号线对应的SPI从机地址发送给SPI主机;
信号处理单元检测到多个MSG信号线由低电平变为高电平时,按优先级从大到小的顺序进行处理。
5.根据权利要求1所述的基于SPI总线的通信方法,其特征在于,SPI主机和SPI从机将数据组成数据帧发送,所述数据帧包括依次排列的帧同步、帧控制字节、目的地址、帧长度、数据以及帧校验。
6.根据权利要求5所述的基于SPI总线的通信方法,其特征在于,所述帧控制字节中,第0-3位表示帧类型,第5位表示数据优先级,第6位是翻转位,第7位是方向位。
7.根据权利要求6所述的基于SPI总线的通信方法,其特征在于,
如果SPI从机有一级数据需要发送,在帧控制字节中将第5位置1;
SPI主机判断收到的数据帧中帧控制字节第5位为1时,保持与该SPI从机的通信,直至一级数据发送完毕。
8.根据权利要求6所述的基于SPI总线的通信方法,其特征在于,发送方每发送一帧数据,翻转位变化一次。
9.根据权利要求6所述的基于SPI总线的通信方法,其特征在于,SPI主机分析接收到的数据帧,如果出现下列情况之一,
帧校验的累加和错误;
翻转位不翻转;
帧同步错误;
说明数据异常,复位通信链路。
10.根据权利要求9所述的基于SPI总线的通信方法,其特征在于,SPI从机分析接收到的数据帧,如果出现下列情况之一,
帧校验的累加和错误;
翻转位不翻转;
帧同步错误;
说明数据异常,在下次发送数据帧时,保持翻转位不翻转,触发主机复位通信链路。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110835644.2A CN113626365A (zh) | 2021-07-23 | 2021-07-23 | 一种基于spi总线的通信方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110835644.2A CN113626365A (zh) | 2021-07-23 | 2021-07-23 | 一种基于spi总线的通信方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN113626365A true CN113626365A (zh) | 2021-11-09 |
Family
ID=78380665
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110835644.2A Pending CN113626365A (zh) | 2021-07-23 | 2021-07-23 | 一种基于spi总线的通信方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113626365A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115191105A (zh) * | 2022-06-07 | 2022-10-14 | 广东逸动科技有限公司 | 抢占总线的方法、装置、电子设备、控制系统及存储介质 |
CN115987835A (zh) * | 2022-12-26 | 2023-04-18 | 上海新华控制技术集团科技有限公司 | 通讯状态的检测方法、系统、装置及电子设备 |
CN117676064A (zh) * | 2024-02-01 | 2024-03-08 | 南京国兆光电科技有限公司 | 一种基于spi通讯的视频信号传输方法、设备和存储介质 |
-
2021
- 2021-07-23 CN CN202110835644.2A patent/CN113626365A/zh active Pending
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115191105A (zh) * | 2022-06-07 | 2022-10-14 | 广东逸动科技有限公司 | 抢占总线的方法、装置、电子设备、控制系统及存储介质 |
CN115191105B (zh) * | 2022-06-07 | 2024-05-17 | 广东逸动科技有限公司 | 抢占总线的方法、装置、电子设备、控制系统及存储介质 |
CN115987835A (zh) * | 2022-12-26 | 2023-04-18 | 上海新华控制技术集团科技有限公司 | 通讯状态的检测方法、系统、装置及电子设备 |
CN115987835B (zh) * | 2022-12-26 | 2024-04-05 | 上海新华控制技术集团科技有限公司 | 通讯状态的检测方法、系统、装置及电子设备 |
CN117676064A (zh) * | 2024-02-01 | 2024-03-08 | 南京国兆光电科技有限公司 | 一种基于spi通讯的视频信号传输方法、设备和存储介质 |
CN117676064B (zh) * | 2024-02-01 | 2024-05-21 | 南京国兆光电科技有限公司 | 一种基于spi通讯的视频信号传输方法、设备和存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113626365A (zh) | 一种基于spi总线的通信方法 | |
CN106453383B (zh) | 一种基于uart的主从多机通讯系统及方法 | |
CN101957808B (zh) | 多cpu间的通信方法、系统及cpu | |
CN107819659B (zh) | 一种基于spi的智能级联通信网络 | |
US20230119412A1 (en) | Arbitration line-based full-duplex spi communication method | |
CN112398714A (zh) | 一种背板总线主站、系统及其数据通信方法 | |
CN104102607A (zh) | 基于VxWorks操作系统环境下的CAN总线驱动方法及系统 | |
CN116150054B (zh) | 一种基于pcie的中断信息处理方法 | |
CN100493018C (zh) | 一种通过网络中的总线接口进行通信的方法和系统 | |
CN111597017B (zh) | 双微处理器同步控制方法 | |
CN110687854B (zh) | 一种pa总线控制器以及一种pa总线控制系统 | |
CN111858459B (zh) | 处理器及计算机 | |
CN113806265A (zh) | 一种spi主从式通讯方法 | |
CN109582633B (zh) | 一种pos机中双cpu的通讯方法 | |
CN114422288A (zh) | 基于Modbus协议的通讯系统 | |
US7334040B2 (en) | Method of transmission between two processors of a radio communication unit | |
CN115981924B (zh) | 设备控制方法、电子设备及存储介质 | |
EP0643892B1 (en) | A data transfer method for an actuator system operating in an environment subjected to interferences | |
CN112565038A (zh) | 一种基于rs485总线的低负载的通讯方法 | |
US20070230347A1 (en) | Communication interface device and communication method | |
CN111639043A (zh) | 一种通信装置 | |
CN201237732Y (zh) | 一种通用plc主控制器模块 | |
CN114338265B (zh) | 一种基于ttp/c总线的程序下载系统及方法 | |
CN111614532B (zh) | 一种基于dsp的can冗余通讯系统 | |
CN115840650B (zh) | 基于kvisor隔离实时域实现三端系统通信的方法 |
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 |