CN116795744A - 一种ls2k1000la与mcu通讯的控制方法 - Google Patents
一种ls2k1000la与mcu通讯的控制方法 Download PDFInfo
- Publication number
- CN116795744A CN116795744A CN202311022929.XA CN202311022929A CN116795744A CN 116795744 A CN116795744 A CN 116795744A CN 202311022929 A CN202311022929 A CN 202311022929A CN 116795744 A CN116795744 A CN 116795744A
- Authority
- CN
- China
- Prior art keywords
- data
- nss
- mcu
- slave device
- ls2k1000la
- 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
- 238000004891 communication Methods 0.000 title claims abstract description 64
- 238000000034 method Methods 0.000 title claims abstract description 20
- 230000004044 response Effects 0.000 claims abstract description 50
- 230000005540 biological transmission Effects 0.000 claims abstract description 37
- 235000015429 Mirabilis expansa Nutrition 0.000 claims abstract description 14
- 244000294411 Mirabilis expansa Species 0.000 claims abstract description 14
- 235000013536 miso Nutrition 0.000 claims abstract description 14
- 230000000630 rising effect Effects 0.000 claims abstract description 7
- 230000006870 function Effects 0.000 claims description 8
- 238000012544 monitoring process Methods 0.000 abstract description 3
- 230000002093 peripheral effect Effects 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 3
- 238000012545 processing Methods 0.000 description 3
- 230000001360 synchronised effect Effects 0.000 description 3
- 230000002159 abnormal effect Effects 0.000 description 2
- 125000004122 cyclic group Chemical group 0.000 description 2
- 230000003993 interaction Effects 0.000 description 2
- 238000002156 mixing Methods 0.000 description 2
- 238000002360 preparation method Methods 0.000 description 2
- 238000010586 diagram Methods 0.000 description 1
- 238000005111 flow chemistry technique Methods 0.000 description 1
- 238000005259 measurement Methods 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000003825 pressing Methods 0.000 description 1
- 230000008569 process Effects 0.000 description 1
- 238000003672 processing method Methods 0.000 description 1
- 238000010791 quenching Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 238000005070 sampling Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Landscapes
- Communication Control (AREA)
Abstract
本发明提供一种LS2K1000LA与MCU通讯的控制方法,LS2K1000LA作为主方,通过SPI总线基于查询请求消息向MCU询问MCU侧实时采集数据的需求,主设备基于MCU侧根据采集状态向主设备发出的准备好实时采集数据的响应发送请求帧,接收并存储实时采集数据,根据录波条件产生录波数据文件和配置文件,同时把接收到的采集数据通过以太网发送到监测设备;MCU侧在SPI通讯模式下的NSS下降和上升沿执行DMA发送,并在NSS高电平期间向DMA发送缓冲区数据。MCU在指定时间内未进入NSS中断后把SPI引脚初始化为高阻态输入引脚,LS2K1000LA侧非上电复位成功后并且MCU侧连续多次收到NSS中断响应,把NSS、MOSI、MISO和SCK引脚初始化为SPI引脚,可解决LS2K1000LA复用一个MISO、一个MOSI和一个SCK碰到非上电复位失败的问题。
Description
技术领域
本发明属于通信技术领域,具体涉及一种LS2K1000LA与MCU通讯的控制方法。
背景技术
MCU(Micro Controller Unit,微控制单元)是嵌入式控制系统的核心,执行测量、控制计算和流程处理等功能,包含C51控制器、X86控制器、ARM控制器等多种类型。面向嵌入式领域的龙芯2K1000LA处理器,基于龙芯中科自主研发的LOONGARCH龙架构指令集,集成两个LA264内核,主频1GHz,二级缓存共享1MB,动态功耗1-5W。提供了USB 2.0接口、标准HDMI接口、2个千兆网口等接口。
SPI(Serial Peripheral Interface--串行外设接口)总线系统是一种同步串行外设接口,可以使MCU与各种外围设备以串行方式进行通讯以交换信息,该接口一般使用4条线:串行时钟线(SCK)、主机输入/从机输出数据线MISO、主机输出/从机输入数据线MOSI和低电平有效的从机选择信号线NSS。图1是一种典型连接方式:一个主设备(LS2K1000LA)连接一个从设备。SPI通讯中NSS信号为低电平时通讯有效,此时主设备通过MOSI输出数据,同时通过SCK引脚为从设备提供时钟信号,从设备通过MISO引脚向主设备发送数据。这种通讯方式要求主设备与从设备发送数据长度一致才能正常通讯。另外,因为SPI通讯总是由主设备启动和停止的,从设备必须在主设备启动通讯前准备好待传送的数据,需要协调好主从设备的时序才能保证通讯正常。
LS2K1000LA作为主设备与MCU采用SPI总线连接时占用MCU引脚资源较少,LS2K1000LA只有一路MOSI、一路MISO、一路SCK和四路NSS信号引脚,有NSS0、NSS1、NSS2和NSS3四个片选信号引脚,最多可以连接4个从设备,LS2K1000LA的SPI只能作为主方,提供SCK时钟信号,而MCU的SPI不得不作为从方,这就导致MCU侧不能主动向LS2K1000LA发起通讯,在LS2K1000LA与MCU之间通过SPI高频传输几千字节数据时,作为从设备的MCU对SPI的处理方法比较复杂。
MCU在进行实时性要求不高的流程控制时可以启用通讯中断以保证通讯的可靠性,但进行实时控制时一般通过查询方式进行通讯。DMA(Direct Memory Access,直接内存访问)功能是MCU进行数据通讯的重要手段,MCU发送数据时只需要设置发送长度,并准备好数据后启动发送即可,接收数据只需要查询是否接收到预定长度的数据,不需要逐字节查询收发,有效降低了MCU的占用率。
LS2K1000LA提供SCK时钟信号时,MCU要及时通过DMA方式把数据发送给LS2K1000LA,由于MCU没有FPGA那种高实时和高可靠性,因此LS2K1000LA与MCU之际的SPI通讯时序同步非常重要,时序错开了几个微秒会导致收发数据异常,另外MCU与LS2K1000LA的SPI连接会影响LS2K1000LA的非上电复位,LS2K1000LA复用MISO、MOSI、SCK,通过四个NSS最多连接四个不同的SPI设备,当LS2K1000LA进行重启设备操作(REBOOT)或看门狗动作时,LS2K1000LA板卡启动时需要从SPI FLASH中读取PMON引导程序,LS2K1000LA SPI引脚驱动能力有限,除SPI Flash设备之外的其他设备通过驱动输出操作SPI总线时,会导致LS2K1000LA无法从SPI FLASH中读取到正确的引导程序,即LS2K1000LA重启设备操作(REBOOT)或看门狗动作时不能从其他SPI从设备上读取BIOS程序。
发明内容
本发明提供一种LS2K1000LA与MCU通讯的控制方法,采用SPI总线和中断方式实现主设备LS2K1000LA和从设备MCU之间高速实时数据通讯。LS2K1000LA通过SPI总线定时向MCU发送一条查询请求消息,基于查询消息询问MCU侧是否准备好实时采集数据的需求,MCU侧根据实时采集状态向LS2K1000LA侧做出相应的反馈消息,基于准备消息做出准备好与否的短响应帧消息,LS2K1000LA获悉到MCU侧已准备好实时采集数据后将在下一步发送一条占用字节量的请求帧,LS2K1000LA把收到实时采集数据后记录在内存中,并根据录波条件启动故障录波,产生相应的录波数据文件和配置文件;同时把接收到的采集数据压入一个循环队列中,以太网SOCKET数据及时从循环队列取出数据并发送给监测设备。MCU侧在LS2K1000LA侧的SPI通讯模式下的NSS下降沿时刻启动DMA发送,在NSS低电平期间无法对DMA进行操作,也不能修改发送缓冲区中的数据;在LS2K1000LA侧给出的SPI通讯模式下NSS信号上升沿后立即停止DMA发送,并在SPI NSS高电平期间及时向DMA发送缓冲区填充待发送数据。MCU在指定毫秒时间内未进入NSS中断后把SPI引脚初始化为高阻态输入引脚,等LS2K1000LA非上电复位成功后并且MCU连续多次收到NSS中断,把NSS、MOSI、MISO和SCK引脚初始化为SPI引脚,可解决LS2K1000LA复用一个MISO、一个MOSI和一个SCK碰到非上电复位失败的问题。
本发明技术方案为一种LS2K1000LA与MCU通讯的控制方法, LS2K1000LA作为主设备,MCU作为从设备,主设备与从设备通过SPI总线通信,主设备通过SPI总线的从机选择信号线NSS选择从设备,向从设备发送请求帧,从设备响应请求帧发回响应帧,当从设备收到NSS片选信号,开始NSS中断服务程序,从设备通过以下步骤控制与主设备的通信:
S01,主设备根据响应帧,判断从设备是否准备好数据,或从响应帧中接收采集数据,并根据故障触发条件进行故障录波并形成数据文件、配置文件,上送实时采集数据;
S02,在NSS中断服务程序中如果从设备没有响应主设备的请求帧,或者主设备没有收到从设备的响应帧,从设备设置失联标志为指定正数值XR,并每经过一个定时周期把失联标识减1;
S03,若失联标志未减至0且为非负值,主设备开始软重启,软重启时主设备不再通过SPI总线向从设备发送请求帧;
S04,失联标志未减至0前,在新一次的NSS中断服务程序中如果从设备响应主设备的请求帧或者主设备收到从设备的响应帧时,则返回步骤S01;如否,则返回步骤S02;
S05,若失联标志减至0,则从设备把SPI引脚初始化为高阻态输入引脚,并等待NSS片段信号,记录从设备连续收到NSS片选信号的次数;
S06,若所述次数超过阈值,从设备MCU把NSS、MOSI、MISO和SCK引脚重新初始化为SPI通信所使用的引脚。
所述定时周期通过安装在主设备中的系统滴答SYSTICK中断服务程序或者定时任务生成。
LS2K1000LA与MCU通讯失联时,主设备软重启,软重启时主设备不能通过SPI总线向从设备发送请求帧,防止MCU与LS2K1000LA通讯失联,导致漏录波。SPI引脚在LS2K1000LA与MCU通讯失联且LS2K1000LA未在限定的时间内软重启成功时初始化为高阻态,防止MCU在LS2K1000LA非上电复位无法从其他SPI从设备上读取BIOS程序时响应LS2K1000LA的请求帧,导致漏录波。
进一步的,步骤S01中所述从设备实时采集数据填充在非待发送内存区域,从设备根据NSS片选信号按NSS中断服务程序,依次将发送缓冲区中的采集数据发送给主设备,和把非待发送内存区域的采集数据轮流存放在内存的发送缓冲区中。
所述从设备包括至少一个从设备。
所述主设备通过SPI总线连接4个从设备。
所述NSS中断服务程序包括:
在从设备侧的NSS引脚电平下降沿出现时,从设备启动NSS中断服务程序,开始启动DMA发送功能,发送存放在发送缓冲区中的采集数据,在NSS引脚电平低电平期间禁止操作DMA控制器写入和修改发送缓冲区中的数据;
在NSS引脚电平上升沿出现时,停止DMA发送功能,并及时把非待发送内存区域中已填充好的待发送数据填充在发送缓冲区,同时从设备把实时采集数据填充在非待发送内存区域,保证了发送缓冲区内的数据不会被实时修改。
其中,请求帧包括查询请求帧、读取数据请求帧,响应帧包括查询响应帧、读取数据响应帧;
所述主设备按设定的请求周期向从设备发送查询请求帧,所述读取数据请求帧在主设备收到查询响应帧,且查询响应帧中表示数据是否准备好的信息为非0字节后,则下一个请求周期主设备向从设备发送读取数据请求帧,若查询响应帧中表示数据是否准备好的信息为0字节,则在下一个请求周期,主设备再次向从设备发送查询请求帧。
主设备向从设备发送请求帧时,提供设定字节长度的SCK时钟信号,从设备响应请求帧发回响应帧,并按照SCK的节拍反馈相同字节长度响应帧。
LS2K1000LA与MCU采用SPI总线连接时,在节省MCU的引脚资源的同时,SPI带来从设备通讯处理机制困难的问题。运行实时操作系统LINUX的LS2K1000LA只能作为SPI主方,LS2K1000LA定时向MCU查询录波数据是否准备好,提供了相应字节长度的SCK时钟信号,MCU要及时把数据发送给LS2K1000LA,如果MCU回复数据慢了一个SCK周期,但LS2K1000LA仍按现有指定的CPHA和CPOL工作模式采集数据,由于SPI是严格按照SCK的节拍来控制数据流,将会导致LS2K1000LA接收到错误的数据,因此LS2K1000LA与MCU之际的SPI通讯时序非常重要,时序错开了几个纳秒均会导致收发数据异常。
本发明在主控制器与从控制器之间的通讯使用了NSS中断服务程序和DMA相结合的强时序通信方法解决从设备与主设备之间的同步SPI通讯时序问题,通过长短帧混合的方法来实现CPU间的数据交互,通过短数据帧查询MCU是否准备好实时数据录波,使用长数据帧读取实时数据录波,解决了MCU作为SPI通讯从设备时上传实时数据困难的问题。
附图说明
图1 为SPI通讯连接;
图2 为LS2K1000LA与从控制器MCU通过SPI查询数据的通讯协议;
图3为LS2K1000LA与从控制器MCU通过SPI读取数据的通讯协议;
图4为LS2K1000LA的NSS片选引脚时序;
图5为LS2K1000LA与MCU的SPI通讯状态机;
图6为SPI引脚状态图。
具体实施方式
本发明应用于触发式记录单元和采集单元之间的通讯,包括触发式记录单元、采集单元以及SPI信号线,触发式记录单元和采集单元通过SPI信号线相互连接,触发式记录单元作为SPI通讯中的主设备,采集单元作为SPI通讯中的从设备,从设备包括至少一个从设备,主设备采用基于国产自主研发LOONGARCH指令集的LS2K1000LA,从设备为MCU,MCU主要采集实时数据,LS2K1000LA同时承担数据故障录波。
LS2K1000LA设有四路从机选择信号线NSS引脚(NSS0引脚、NSS1引脚、NSS2引脚和NSS3引脚)、一路输出信号线MOSI引脚、一路MISO引脚、一路SCK引脚,LS2K1000LA通过SPI信号线最多可以连接4个从设备,LS2K1000LA通过片选信号线NSS引脚选择从机端中的MCU,当从设备上的NSS引脚电平由上升沿变化到下降沿时,表明该从设备被LS2K1000LA选中。
从设备MCU实时采集数据填充在非待发送内存区域。LS2K1000LA通过SPI总线的从机选择信号线NSS选择从设备MCU,向从设备MCU发送请求帧,从设备MCU响应请求帧发回响应帧,LS2K1000LA根据响应帧,判断从设备MCU是否准备好数据,或从响应帧中接收采集数据,并根据故障触发条件进行故障录波并形成数据文件、配置文件,及时上送实时采集数据;在LS2K1000LA 非上电复位时MCU的SPI引脚被初始化成高阻态的输入引脚。当SPI引脚被初始化成高阻态的输入引脚时,这表示该引脚没有被配置为SPI通信,或者没有与任何其他设备连接。该引脚处于高阻抗状态,不会驱动或接收任何信号。在这种情况下,该引脚可以被用作其他用途,或者保持未连接状态,直到需要使用SPI通信时再进行配置。
MCU根据NSS引脚的电平信号按NSS中断服务程序,依次将发送缓冲区中的采集数据发送给LS2K1000LA,和把非待发送内存区域的采集数据轮流存放在内存的发送缓冲区中。
如图4所示,NSS中断服务程序包括:
在MCU侧的NSS引脚电平下降沿出现时,MCU启动NSS中断服务程序,开始启动DMA发送功能,发送存放在发送缓冲区中的采集数据,在NSS引脚电平低电平期间禁止操作DMA控制器写入和修改发送缓冲区中的数据;
在NSS引脚电平上升沿出现时,停止DMA发送功能,并及时把非待发送内存区域中已填充好的待发送数据填充在发送缓冲区,同时MCU把实时采集数据填充在非待发送内存区域,保证了发送缓冲区内的数据不会被实时修改。
其中,请求帧包括查询请求帧、读取数据请求帧,响应帧包括查询响应帧、读取数据响应帧。
LS2K1000LA通过SPI总线的从机选择信号线NSS选择从设备MCU,向从设备MCU发送请求帧,提供了相应字节长度的SCK时钟信号,从设备MCU响应请求帧发回响应帧,并按照SCK的节拍来控制响应帧的字节长度,包括:LS2K1000LA定时通过NSS引脚选择从机端的MCU,查询MCU是否准备好数据,按NSS中断服务程序,从设备MCU进行响应,LS2K1000LA收到MCU已准备好采集数据的响应后,通过NSS引脚选择从机端中已准备好采集数据的MCU,向MCU发送读取请求帧,MCU收到读取请求帧后,按NSS中断服务程序,把发送缓冲区中的采集数据发送给LS2K1000LA,在发送完毕后,LS2K1000LA通过NSS引脚结束选择已发送采集数据的MCU,MCU按NSS中断服务程序,把非待发送内存区域的采集数据轮流存放在内存的发送缓冲区中。
K1:LS2K1000LA按请求周期定时查询MCU是否准备好数据,具体包括以下步骤:
K101,LS2K1000LA通过SPI向MCU发送读取几个字节数据的查询请求帧,此时通过SCK给出与短帧同样长的时钟信号;
K102,MCU在SPI 通讯中发现NSS由高电平变为低电平后立刻启动DMA控制器向LS2K1000LA发送查询响应帧;
K103,LS2K1000LA根据SPI读取数据的通讯协议读取查询响应帧中的信息,判断MCU是否准备好数据;
K104,当LS2K1000LA收到MCU还未准备好数据时,LS2K1000LA将间隔一个固定的请求周期后再一次查询MCU是否准备好数据。
查询请求帧的协议格式见图2的a所示,包括帧头、帧长度、帧序号、数据、CRC(循环冗余校验码)。
查询响应帧的协议格式见图2的b所示,包括帧头、帧长度、帧序号、数据准备好、CRC(循环冗余校验码)。
图2中的b中查询响应帧表示数据是否准备好的信息(“数据准备好”)为两个字节,0表示未准备好,非零表示准备好并表示数据长度。
K2,LS2K1000LA收到MCU准备好数据后的处理步骤包括:
K201,LS2K1000LA将发出读取多达几千字节数据的读取数据请求帧,此时通过SCK给出与长帧同样长的时钟信号,MCU在SPI 通讯中发现NSS由高电平变为低电平后立刻启动DMA控制器发送读取数据响应帧。LS2K1000LA根据SPI读取数据的通讯协议读取从控制器MCU发送来的数据;读取数据请求帧的格式见图3中的a所示,读取数据响应帧的格式见图3中的b所示。图3中的 a中要读取数据的字节个数与图3中的 b中的读回的数据长度要一致。
若LS2K1000LA收到数据,帧序号递增;
若LS2K1000LA没有收到数据时,帧序号不变,在下一次向MCU发送读取数据请求帧中,请求同一个帧序号的数据,实现重发机制。
K202,LS2K1000LA成功收到实时采集数据后同时把它压入一个循环队列中,以太网SOCKET数据及时从循环队列取出数据并发送给监测设备,并将根据故障录波触发条件将进行故障录波,产生符合comtrade格式的数据文件和配置文件。
具体的,NSS中断服务程序包括:
如图5所示,S4:MCU等待NSS下降沿的出现;
S1:在NSS信号下降沿(图4所示的1时刻),NSS中断服务程序中开始启动DMA发送,按照程序通过时钟极性(CPOL)和时钟相位(CPHA)设置好的SPI工作模式把数据帧从发送缓冲区加载到移位寄存器,然后通过SPI MISO发往LS2K1000LA侧发送比特流,先发送数据帧第一个字节的第8位,再依次发送,在数据帧的第1位发送之后,硬件置TBE(发送缓冲区空标志位)位置为1,说明发送缓冲区为空,此时DMA发送使能位DMA TEN位已被置1,SPI已发出一个DMA请求,然后DMA应答该请求,并自动把DMA发送缓冲区中的数据写到SPI_DATA寄存器,然后依次通过发送缓冲区写到移位寄存器中,直到DMA发送缓冲区为空。SPI状态由待发送状态被切换为SPI发送状态(图5所示的S1)。
MCU在NSS低电平(图4所示的2时段)期间禁止GD32F450(微控制器)操作SPI和DMA通道,不能在DMA通过SPI发送数据期间修改发送缓冲区的数据。
S2:MCU在NSS信号上升沿(图4所示的3时刻),NSS中断服务程序中停止DMA发送,此时LS2K1000LA NSS置高电平,不再发送SCK时钟信号。SPI状态由发送状态改为待填充数据状态(图5所示的步骤S2),此后采集到足够多数据后可以修改发送缓冲区中的数据(图5所示的步骤S3)。
S3:MCU在NSS高电平(图4所示的4时段)期间向发送缓冲区填充数据,需要发送N个字节数据时先要向SPI_DATA数据传输寄存器写一个字节的数据,即向发送缓冲区存入一个字节的数据,剩下N-1个字节按先后顺序填充在发送缓冲区中。
在最后一个采样时钟边沿之后,接收到的数据将从移位寄存器存入到接收缓冲区,且RBNE(接收缓冲区非空标志位)位置 1。软件通过读SPI_DATA 寄存器获得接收的数据,此操作会自动清除RBNE 标志位。在 MRU 和 MRB 模式中,为了接收下一个数据帧,硬件需要连续发送时钟信号,而在全双工主机模式(MFD)中,当发送缓冲区非空时,硬件才接收下一个数据帧SPI使能后,如果DMA TEN位置1,每当TBE变为1时,SPI将会发出一个DMA请求,然后DMA应答该请求,并自动写数据到SPI_DATA寄存器。如果DMAREN位置1,每当RBNE变为1时,SPI将会发出一个DMA请求,然后DMA应答该请求,并自动从SPI_DATA寄存器读取数据。
如图6,LS2K1000LA定时向MCU查询数据准备情况时,在NSS中断服务程序中如果从设备没有响应主设备的请求帧,或者主设备没有收到从设备的响应帧,MCU设置失联标志为指定正数值XR,之后MCU在每一次系统滴答SYSTICK中断服务程序或者定时任务中把失联标识减1。
若MCU的失联标志为指定正数值,LS2K1000LA 开始软重启,则同时LS2K1000LA不再通过SPI总线向MCU发送请求帧,此后MCU侧不会进入NSS中断服务程序。使LS2K1000LA 开始软重启成功前,LS2K1000LA不能从其他SPI从设备接受到采集数据。
若LS2K1000LA在限定时间内(失联标识减至0前)软重启成功,即在下一次NSS中断服务程序中从设备响应主设备的请求帧或者主设备收到从设备的响应帧时,主设备根据响应帧,判断从设备是否准备好数据,或从响应帧中接收采集数据,并根据故障触发条件进行故障录波并形成数据文件、配置文件,上送实时采集数据,然后定时向从设备发送请求帧。
若LS2K1000LA在限定时间内(失联标识减至0前)未软重启成功,即在下一次NSS中断服务程序中从设备没有响应主设备的请求帧或者主设备没有收到从设备的响应帧时,MCU重新将失联标志设置为指定正数值XR;
若MCU的失联标志为0,此时MCU主动把SPI引脚初始化为高阻态输入引脚,如图6所示,等待LS2K1000LA非上电复位成功并进入系统后自启动应用程序,开始定时通过SPI总线向MCU请求数据,MCU连续收到NSS中断服务程序次数超过阈值后(即LS2K1000LA与MCU连续多次通讯正常时),把NSS、MOSI、MISO和SCK引脚重新初始化为SPI通信所使用的引脚,以便进行SPI通信。重新初始化SPI引脚是为了在使用SPI通信之前,确保引脚配置正确,以便进行有效的数据传输。
LOONGOS系统关机或重启时需要执行许多关机或重启任务,把一些进程和服务停止和存储一些日志信息后,用户也可以添加自己在关机或重启系统时需要执行的任务,执行完这些任务后系统才关机或重启,因此软重启和关机重启需要一定时间。
SPI引脚在LS2K1000LA与MCU通讯失联且LS2K1000LA未在限定的时间内软重启成功时初始化为高阻态,防止MCU在LS2K1000LA非上电复位无法从其他SPI从设备上读取BIOS程序时响应LS2K1000LA的请求帧,导致漏录波。
解决LS2K1000LA复用了一个MISO、一个MOSI和一个SCK后碰到非上电复位失败的问题。
LS2K1000LA与MCU采用SPI总线连接时,在节省MCU的引脚资源的同时,SPI带来从设备通讯处理机制困难的问题。本发明在主控制器与从控制器之间的通讯使用了NSS中断服务程序和DMA相结合的方法解决从设备与主设备之间的同步SPI通讯时序问题,通过长短帧混合的方法来实现CPU间的数据交互,通过短数据帧查询MCU是否准备好实时数据录波,使用长数据帧读取实时数据录波,解决了MCU作为SPI通讯从设备时上传实时数据困难的问题。
Claims (7)
1.一种LS2K1000LA与MCU通讯的控制方法,其特征在于,LS2K1000LA作为主设备,MCU作为从设备,主设备与从设备通过SPI总线通信,主设备通过SPI总线的从机选择信号线NSS选择从设备,向从设备发送请求帧,从设备响应请求帧发回响应帧,当从设备收到NSS片选信号,开始NSS中断服务程序,从设备通过以下步骤控制与主设备的通信:
S01,主设备根据响应帧,判断从设备是否准备好数据,或从响应帧中接收采集数据,并根据故障触发条件进行故障录波并形成数据文件、配置文件,上送实时采集数据,并按设定的请求向从设备发送请求帧;
S02,在NSS中断服务程序中如果从设备没有响应主设备的请求帧,或者主设备没有收到从设备的响应帧,从设备设置失联标志为指定正数值XR,并每经过一个定时周期把失联标识减1;
S03,若失联标志未减至0且为非负值,主设备开始软重启,软重启时主设备不再通过SPI总线向从设备发送请求帧;
S04,失联标志未减至0前,在新一次的NSS中断服务程序中如果从设备响应主设备的请求帧或者主设备收到从设备的响应帧时,则返回步骤S01;如否,则返回步骤S02;
S05,若失联标志减至0,则从设备把SPI引脚初始化为高阻态输入引脚,并等待NSS片段信号,记录从设备连续收到NSS片选信号的次数;
S06,若所述次数超过阈值,从设备MCU把NSS、MOSI、MISO和SCK引脚重新初始化为SPI通信所使用的引脚。
2.根据权利要求1所述的LS2K1000LA与MCU通讯的控制方法,其特征在于,所述定时周期通过安装在从设备中的系统滴答SYSTICK中断服务程序或者定时任务生成。
3.根据权利要求1所述的LS2K1000LA与MCU通讯的控制方法,其特征在于,步骤S01中所述从设备实时采集数据填充在非待发送内存区域,从设备根据NSS片选信号按NSS中断服务程序,依次将发送缓冲区中的采集数据发送给主设备,和把非待发送内存区域的采集数据轮流存放在内存的发送缓冲区中。
4.根据权利要求1所述的LS2K1000LA与MCU通讯的控制方法,其特征在于,所述从设备包括至少一个从设备。
5.根据权利要求1所述的LS2K1000LA与MCU通讯的控制方法,其特征在于,所述主设备通过SPI总线连接4个从设备。
6.根据权利要求1所述的LS2K1000LA与MCU通讯的控制方法,其特征在于,所述NSS中断服务程序包括:
在从设备侧的NSS引脚电平下降沿出现时,从设备启动NSS中断服务程序,开始启动DMA发送功能,发送存放在发送缓冲区中的采集数据,在NSS引脚电平低电平期间禁止操作DMA控制器写入和修改发送缓冲区中的数据;
在NSS引脚电平上升沿出现时,停止DMA发送功能,并及时把非待发送内存区域中已填充好的待发送数据填充在发送缓冲区,同时从设备把实时采集数据填充在非待发送内存区域,保证了发送缓冲区内的数据不会被实时修改;
其中,请求帧包括查询请求帧、读取数据请求帧,响应帧包括查询响应帧、读取数据响应帧;
所述主设备按设定的请求周期向从设备发送查询请求帧,所述读取数据请求帧在主设备收到查询响应帧,且查询响应帧中表示数据是否准备好的信息为非0字节后,则下一个请求周期主设备向从设备发送读取数据请求帧,若查询响应帧中表示数据是否准备好的信息为0字节,则在下一个请求周期,主设备再次向从设备发送查询请求帧。
7.根据权利要求6所述的LS2K1000LA与MCU通讯的控制方法,其特征在于,主设备向从设备发送请求帧时,提供设定字节长度的SCK时钟信号,从设备响应请求帧发回响应帧,并按照SCK的节拍反馈相同字节长度响应帧。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311022929.XA CN116795744B (zh) | 2023-08-15 | 2023-08-15 | 一种ls2k1000la与mcu通讯的控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311022929.XA CN116795744B (zh) | 2023-08-15 | 2023-08-15 | 一种ls2k1000la与mcu通讯的控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116795744A true CN116795744A (zh) | 2023-09-22 |
CN116795744B CN116795744B (zh) | 2023-12-19 |
Family
ID=88038682
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311022929.XA Active CN116795744B (zh) | 2023-08-15 | 2023-08-15 | 一种ls2k1000la与mcu通讯的控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116795744B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117251403A (zh) * | 2023-11-08 | 2023-12-19 | 北京紫光芯能科技有限公司 | 一种spi协议主从设备的通讯模式配置方法及装置 |
CN117687347A (zh) * | 2024-02-02 | 2024-03-12 | 三峡智控科技有限公司 | 一种基于fpga和通信网络的同步录波方法及装置 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819512A (zh) * | 2012-06-28 | 2012-12-12 | 惠州市德赛西威汽车电子有限公司 | 一种基于spi的全双工通信装置及其方法 |
CN113806265A (zh) * | 2021-09-18 | 2021-12-17 | 国家石油天然气管网集团有限公司 | 一种spi主从式通讯方法 |
CN115834739A (zh) * | 2023-02-16 | 2023-03-21 | 石家庄科林电气股份有限公司 | 一种台区智能融合终端spi通信中不定长数据帧的接收方法 |
CN115941382A (zh) * | 2022-11-10 | 2023-04-07 | 星河智联汽车科技有限公司 | 一种spi通信的流控方法、装置、终端设备及存储介质 |
-
2023
- 2023-08-15 CN CN202311022929.XA patent/CN116795744B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102819512A (zh) * | 2012-06-28 | 2012-12-12 | 惠州市德赛西威汽车电子有限公司 | 一种基于spi的全双工通信装置及其方法 |
CN113806265A (zh) * | 2021-09-18 | 2021-12-17 | 国家石油天然气管网集团有限公司 | 一种spi主从式通讯方法 |
CN115941382A (zh) * | 2022-11-10 | 2023-04-07 | 星河智联汽车科技有限公司 | 一种spi通信的流控方法、装置、终端设备及存储介质 |
CN115834739A (zh) * | 2023-02-16 | 2023-03-21 | 石家庄科林电气股份有限公司 | 一种台区智能融合终端spi通信中不定长数据帧的接收方法 |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117251403A (zh) * | 2023-11-08 | 2023-12-19 | 北京紫光芯能科技有限公司 | 一种spi协议主从设备的通讯模式配置方法及装置 |
CN117251403B (zh) * | 2023-11-08 | 2024-05-14 | 北京紫光芯能科技有限公司 | 一种spi协议主从设备的通讯模式配置方法及装置 |
CN117687347A (zh) * | 2024-02-02 | 2024-03-12 | 三峡智控科技有限公司 | 一种基于fpga和通信网络的同步录波方法及装置 |
CN117687347B (zh) * | 2024-02-02 | 2024-04-09 | 三峡智控科技有限公司 | 一种基于fpga和通信网络的同步录波方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN116795744B (zh) | 2023-12-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116795744B (zh) | 一种ls2k1000la与mcu通讯的控制方法 | |
JP2537054B2 (ja) | 情報伝達方式 | |
US5325529A (en) | External boot information loading of a personal computer | |
US6418504B2 (en) | System and method for coupling peripheral buses through a serial bus using a split bridge implementation | |
US6742076B2 (en) | USB host controller for systems employing batched data transfer | |
US6556580B1 (en) | Multi-function transmit packet buffer | |
US6829726B1 (en) | Method and system for testing a universal serial bus within a computing device | |
US5276807A (en) | Bus interface synchronization circuitry for reducing time between successive data transmission in a system using an asynchronous handshaking | |
US7890676B2 (en) | Memory systems for automated computing machinery | |
US6842806B2 (en) | Method and apparatus for interconnecting wired-AND buses | |
US20020023189A1 (en) | Apparatus and method for initializing a universal serial bus device | |
EP1632843A2 (en) | Data processing system and copy processing method thereof | |
US20110320706A1 (en) | Storage apparatus and method for controlling the same | |
US6202160B1 (en) | System for independent powering of a computer system | |
US20070240011A1 (en) | FIFO memory data pipelining system and method for increasing I²C bus speed | |
KR19990083207A (ko) | 주변기기 및 그 제어방법 | |
KR20210094069A (ko) | 대체 프로토콜 선택 | |
US20090077275A1 (en) | Multiple I/O interfacing system for a storage device and communicating method for the same | |
CN115941102B (zh) | 一种采用spi连接mcu和fpga的控制器间同步通信的方法 | |
CN109981491A (zh) | 异常处理方法及接口板 | |
CN115437978A (zh) | 高速外围组件互连接口装置及其操作方法 | |
CN114691223B (zh) | 一种通过网络传输bios日志的方法及装置 | |
CN112311425A (zh) | 一种蓝牙hci模式自动检测的方法、装置及存储介质 | |
JPH08227406A (ja) | 並列計算機 | |
CN115422101A (zh) | 一种dma驱动系统、方法、设备及可读存储介质 |
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 |