一种基于双SPI总线和DMA中断的MCU间高速通信系统的制作方法

摘要: 本技术属于微控制器通信,具体涉及一种基于双spi总线和dma中断的mcu间高速通信系统。背景技术:1、随着嵌入式系统复杂度不断提高,采用多个mcu协同工作的系统...
一种基于双SPI总线和DMA中断的MCU间高速通信系统的制作方法

本技术属于微控制器通信,具体涉及一种基于双spi总线和dma中断的mcu间高速通信系统。

背景技术:

1、随着嵌入式系统复杂度不断提高,采用多个mcu协同工作的系统架构已越来越常见。在工业自动化、机器人控制、智能终端、复杂传感器融合、高速数据采集和边缘计算等应用中,常常需要由两个mcu分别承担不同任务,例如一个mcu负责底层控制与数据采集,另一个mcu负责上层运算、协议处理或外部通信。在此类系统中,两个mcu间往往需要进行频繁且大数据量的数据交换,因此mcu间通信性能直接影响系统整体实时性和稳定性。

2、当前两个mcu间常用的通信方式包括uart、i2c、can和spi等。

3、uart通信方式实现简单,硬件资源占用较少,适合点对点低速异步通信。uart通信方式通常具有空闲中断机制,便于识别不定长数据帧结束,但其总体传输速率有限,在需要交换大数据块或对时延要求较高的场景中容易成为性能瓶颈。

4、i2c通信方式适用于短距离、低速、多设备连接场合,但受限于总线速率和协议开销,不适合大数据量高速传输。

5、can通信方式具有较好的抗干扰能力和总线仲裁能力,但其协议有效载荷较小,帧结构固定,用于两个mcu间的大吞吐量数据交换时效率不高。

6、spi通信方式具有时钟同步、接口简单、传输速率高等优点,是mcu间短距离高速通信的重要选择。然而,传统spi通信方式通常建立在主从结构基础上,通信时钟由主机发起,从设备被动响应。在两个mcu间直接采用该种单路spi通信,通常存在以下缺陷:

7、双方通信角色不对等,灵活性不足;

8、单路spi在双向通信时通常需要轮流占用总线,整体效率受限;

9、在采用dma接收数据时,spi通信方式通常不具备类似uart通信方式空闲中断的天然帧结束判定机制,不便于识别一帧数据何时接收完成;

10、若依赖cpu轮询、逐字节处理或频繁中断参与收发,则会导致cpu占用较高,影响系统实时性能。

11、为降低spi通信方式中cpu负担,提高通信吞吐率,当前通常将spi与dma结合使用。发送端通过dma将数据搬运至spi发送寄存器,接收端通过dma将spi接收寄存器中的数据搬运至内存缓冲区。但在实际应用中,spi+dma方案若要准确判断接收完成时刻,通常需要预先设定期望接收长度,且实际工程应用中的数据长度不一定始终固定,若长度变化,则需要重新配置dma参数。因此,当前spi通信方式技术在兼顾高速传输、双向通信、低cpu占用、接收完成判定明确以及长度灵活配置等方面仍存在不足。特别是在一些实际任务场景中,单次传输的数据长度在一次通信事务中通常是固定的,例如一帧采样数据块、一组控制参数、一段图像分片或一块缓存同步数据。对于此类场景,可以利用dma接收固定长度数据并在接收完成时产生中断,从而实现明确的帧边界判定。然而,不同任务阶段、不同命令类型或不同任务之间,单次数据传输长度又可能不同,因此还要求通信方案具备通过软件重新设置本次数据传输长度的能力。

12、鉴于上述技术问题的存在,提出本技术。

技术实现思路

1、本技术的目的是针对当前spi通信方式中单路spi双向通信效率低、传统主从结构灵活性不足、spi+dma场景下接收完成时机不易判定以及cpu占用较高等问题,提供一种基于双spi总线和dma中断的mcu间高速通信系统,通过在两个mcu间建立两路独立的spi通信链路,分别承担相反方向的数据传输,并结合dma进行数据自动收发,利用dma完成中断或全满中断实现数据帧接收完成判定,从而实现mcu间的高速、稳定、低cpu占用的数据通信,既能利用固定长度dma传输实现高效、稳定的帧完成判定,又能够在后续传输中通过软件灵活重配置长度参数,从而更好地满足实际工程应用需求。

2、本技术的技术方案是:

3、1、一种基于双spi总线和dma中断的mcu间高速通信系统,其特征在于,包括:包括第一mcu、第二mcu;

4、第一mcu、第二mcu内部均包括发送缓冲区、dma发送模块、spi发送接口、spi接收接口、dma接收模块、接收缓冲区、中断处理模块以及长度配置模块;

5、第一mcu的spi发送接口通过spi总线连接第二mcu的spi接收接口,构成第一spi通信链路,第一spi通信链路下第一mcu为发送端,第二mcu为接收端;第二mcu的spi发送接口通过spi总线连接第一mcu的spi接收接口,构成第二spi通信链路,第二spi通信链路下第二mcu为发送端,第一mcu为接收端;

6、数据发送时,长度配置模块设置发送数据的长度,数据由发送缓冲区经dma发送模块搬运至spi发送接口,进行发送;

7、数据接收时,长度配置模块设置期望接收长度,spi接收接口接收到的数据,由经dma接收模块搬运至接收缓冲区,在dma接收模块接收的数据达到期望接收长度后,通过中断处理模块完成接收结束判定。

8、根据本技术的至少一个实施例,上述的基于双spi总线和dma中断的mcu间高速通信系统中,spi总线均包括时钟线sck、数据线mosi以及片选线nss。

9、根据本技术的至少一个实施例,上述的基于双spi总线和dma中断的mcu间高速通信系统中,时钟信号由发送端mcu产生并输出至接收端mcu。

10、根据本技术的至少一个实施例,上述的基于双spi总线和dma中断的mcu间高速通信系统中,一次数据传输过程中:

11、发送端mcu将待发送数据写入发送缓冲区,并根据当前任务需求,通过长度配置模块设置本次发送数据的长度n,随后,启动dma发送模块,将发送缓冲区中的数据自动搬运至spi发送接口的发送寄存器,按照通信时钟,将数据发送至接收端mcu的spi接收接口的接收寄存器;

12、接收端mcu通过长度配置模块设置本次期望接收长度n,并启动dma接收模块,将spi接收接口的接收寄存器收到的数据自动搬运至接收缓冲区,直到累计接收的数据长度达到期望接收长度n。

13、根据本技术的至少一个实施例,上述的基于双spi总线和dma中断的mcu间高速通信系统中,一次数据传输过程中:

14、接收端mcu累计接收的数据长度达到期望接收长度n时,dma接收模块触发完成中断、dma全满中断或等效中断事件,中断处理模块响应该中断,判定本次数据传输完成,并对接收缓冲区中的数据进行后续处理,包括数据解析、校验。

15、根据本技术的至少一个实施例,上述的基于双spi总线和dma中断的mcu间高速通信系统中,一次数据传输过程中:dma自动触发完成中断、dma全满中断或等效中断事件,接收端mcu进入中断服务程序,执行置位接收完成标志、通知上层任务当前帧已接收完成、切换接收缓冲区、启动下一次任务处理中的一种或多种。

16、根据本技术的至少一个实施例,上述的基于双spi总线和dma中断的mcu间高速通信系统中,开始一次数据传输热任务时,由软件选择当前任务类型或数据类型,根据当前任务需求设置本次数据传输长度,长度配置模块设置发送数据的长度和期望接收长度。

17、根据本技术的至少一个实施例,上述的基于双spi总线和dma中断的mcu间高速通信系统中,任务类型或数据类型包括控制指令、状态参数、采样数据、图像分片、缓存块同步数据。

18、本技术至少存在以下有益技术效果:

19、提供一种基于双spi总线和dma中断的mcu间高速通信系统,该系统具有如下优点:

20、双向通信效率高:采用两路独立spi总线分别承担两个方向的数据传输,避免了单路spi在双向收发时需要频繁切换方向或竞争总线资源的问题,从而提升了双向通信效率,可适用于图像分片、采样数据块、参数同步数据、缓存区镜像数据等大数据量传输场景,能够稳定实现高速数据交换;

21、cpu占用率低:通过dma自动完成数据发送和接收搬运,cpu无需逐字节参与数据收发,可仅在dma完成中断或异常情况下介入处理,从而显著降低了cpu负担;

22、接收完成判定明确:利用dma传输完成中断、全满中断或等效事件,实现对一次完整数据接收结束的判定,能够替代传统串口空闲中断在数据帧结束识别方面的作用,可解决spi+dma场景下帧边界不易判断的问题;

23、支持单次固定长度传输和软件灵活重配置长度:在一次数据传输过程中,采用预设固定长度方式,使dma能够按照既定长度完成搬运并准确触发中断,从而有利于简化协议处理和提高接收完成判断的确定性,虽然单次数据传输长度在本次传输过程中保持固定,但该长度并非永久不变,而是可在后续传输开始前由软件重新配置,不仅适用于固定长度场景,也适用于不同任务场景下单次长度不同但每次数据传输长度可预知的应用场景。

24、系统结构清晰,易于工程实现:基于mcu常见spi外设、dma控制器和中断机制实现,无需额外增加复杂的专用通信芯片,具有硬件成本低、软件实现清晰、便于部署和移植的优点。

25、实时性和稳定性较好:通过双链路独立传输、dma自动搬运和中断驱动处理机制,可有效降低时延,减少cpu轮询带来的不确定性,提高系统的实时性与运行稳定性。