基于STM32F4芯片的串口数据接收、发送、传输装置及方法与流程

文档序号:12719489阅读:1446来源:国知局
基于STM32F4芯片的串口数据接收、发送、传输装置及方法与流程

本发明涉及数据传输领域,特别是涉及一种基于STM32F4芯片的串口数据接收、发送、传输装置及方法。



背景技术:

在芯片的工作过程中,芯片与芯片之间,以及芯片与其他设备之间的数据传输一般通过串口实现,在现有的串口数据传输中,尤其是串口大数据传输的过程中,数据的传输与中断通过串口中断来控制,然而,使用串口中断控制数据的传输时,每次有数据传输完成触发串口中断后,均需要CPU处理串口中断才能进行下一次传输,这样会不断打断CPU对其他信息的处理,使得CPU被长时间耗费在数据传输上,大大影响了CPU对其他信息的处理速度。



技术实现要素:

鉴于以上所述现有技术的缺点,本发明的目的在于提供一种基于STM32F4芯片的串口数据接收方法,用于解决现有技术中采用串口中断控制数据传输而导致的影响CPU对其他信息的处理,使得CPU被长时间耗费在数据传输上,大大影响了CPU对其他信息的处理速度的问题。

为实现上述目的的他相关目的,本发明提供一种基于STM32F4芯片的串口数据接收方法,所述方法包括以下步骤:

11)将STM32F4芯片的串口配置为DMA接收模式;

12)开启串口空闲中断;

13)接收数据发送端发送的数据,并在一次完整的数据接收结束时触发所述串口空闲中断,暂停数据接收并记录数据接收长度。

作为本发明的基于STM32F4芯片的串口数据接收方法的一种优选方案,步骤13)中,接收数据发送端发送的数据的同时,还包括将接收的数据保存至缓存单元的步骤。

作为本发明的基于STM32F4芯片的串口数据接收方法的一种优选方案,步骤13)之后,还包括

14)使用CPU处理触发的所述串口空闲中断,以重新开启所述串口空闲中断,并在重新开启所述串口空闲中断之后释放所述CPU。

作为本发明的基于STM32F4芯片的串口数据接收方法的一种优选方案,步骤12)中,开启串口空闲中断的同时,开启DMA接收中断;步骤14)之后,还包括重复步骤13)至步 骤14)若干次,直至数据发送端发送的数据被完全接收后触发DMA接收中断,数据接收完成。

作为本发明的基于STM32F4芯片的串口数据接收方法的一种优选方案,步骤12)中,使用CPU开启所述串口空闲中断及所述DMA接收中断,并在开启所述串口空闲中断及所述DMA接收中断后释放所述CPU。

本发明还提供一种基于STM32F4芯片的串口数据发送方法,所述方法包括以下步骤:

21)将STM32F4芯片的串口配置为DMA发送模式;

22)开启DMA发送中断;

23)将如上述方案中任一项所述的接收方法接收的数据依据长度的不同分为不同的数组,并将所述不同数组中的数据提取至相应的寄存器;

24)将提取至所述寄存器中的一数组的数据发送至数据接收端,并在该数组的数据发送完毕后触发所述DMA发送中断,暂停数据的发送。

作为本发明的基于STM32F4芯片的串口数据发送方法的一种优选方案,步骤22)中,使用CPU开启所述DMA发送中断,并在开启所述DMA发送中断后释放所述CPU。

作为本发明的基于STM32F4芯片的串口数据发送方法的一种优选方案,步骤24)之后,还包括

25)使用CPU处理触发的所述DMA发送中断,以重新开启所述DMA发送中断,并在重新开启所述DMA发送中断之后释放所述CPU。

作为本发明的基于STM32F4芯片的串口数据发送方法的一种优选方案,步骤25)之后,还包括重复步骤23)至步骤24)若干次,直至将提取至所述寄存器中的所有数组的数据全部发送至数据接收端。

本发明还提供一种基于STM32F4芯片的串口数据传输方法,所述数据传输方法包括数据接收方法及数据发送方法;

所述数据接收方法包括以下步骤:

11)将STM32F4芯片的串口配置为DMA接收模式;

12)使用CPU开启串口空闲中断及DMA接收中断;

13)接收数据发送端发送的数据,并在一次完整的数据接收结束时触发所述串口空闲中断,暂停数据接收并记录数据接收长度;

14)使用CPU处理触发的所述串口空闲中断,以重新开启所述串口空闲中断;

15)重复步骤13)至步骤14)若干次,直至数据发送端发送的数据被完全接收后触发DMA接收中断,数据接收完成;

所述数据发送方法包括以下步骤:

21)使用CPU开启DMA发送中断;

22)将所述数据接收方法接收到的数据依据长度的不同分为不同的数组,并将所述不同数组中的数据提取至相应的寄存器;

23)将提取至所述寄存器中的一数组的数据发送至数据接收端,并在该数组的数据发送完毕后触发所述DMA发送中断,暂停数据的发送;

24)使用CPU处理触发的所述DMA发送中断,以重新开启所述DMA发送中断;

25)重复步骤23)至步骤24)若干次,直至将提取至所述寄存器中的所有数组的数据全部发送至数据接收端。

作为本发明的基于STM32F4芯片的串口数据传输方法的一种优选方案,使用CPU开启所述串口空闲中断、所述DMA接收中断及所述DMA发送中断之后,以及使用CPU处理触发的所述串口空闲中断及触发所述DMA发送中断之后,均包括释放所述CPU的步骤。

本发明还提一种基于STM32F4芯片的串口数据传输装置,所述装置包括:STM32F4芯片的串口、DMA控制器及CPU;

所述STM32F4芯片的串口与数据发送端及数据接收端电连接,适于接收及所述数据发送端发送的数据,并将接收的数据保存至缓存单元,并适于将接收的数据发送至所述数据接收端;

所述DMA控制器与所述STM32F4芯片的串口,适于设定串口空闲中断、DMA接收中断及DMA发送中断,将所述STM32F4芯片的串口依据长度的不同分为不同的数值并提取至相应的寄存器,控制所述STM32F4芯片的串口以DMA传输模式接收及发送数据,并在所述STM32F4芯片的串口接收的数据达到所需的长度时触发串口空闲中断、在所述数据发送端发送的数据被完全接收后触发DMA接收中断及在发送一定长度的数组数据之后触发DMA发送中断;

所述CPU与所述DMA控制器电连接,适于控制所述串口空闲中断、所述DMA接收中断及所述DMA发送中断的开启。

如上所述,本发明的基于STM32F4芯片的串口数据接收、发送、传输装置及方法,具有以下有益效果:将串口采用DMA方式传输(发送及接收)数据,只在数据传输开始时及数据传输结束后分别使用CPU进行处理一次,使得CPU不用耗费在数据传输上,让CPU有更多时间完成其他处理,大大提升了CPU的处理速度;同时,将DMA中断与串口空闲中断相结合,可以实现不定长数据的传输,相较于现有的其他传输方法更加便捷有效。

附图说明

图1显示为本发明实施例一中提供的基于STM32F4芯片的串口数据接收方法的流程图。

图2显示为本发明实施例二中提供的基于STM32F4芯片的串口数据发送方法的流程图。

图3显示为本发明实施例三中的基于STM32F4芯片的串口数据传输装置的结构示意图。

元件标号说明

1 STM32F4芯片的串口

2 DMA控制器

3 CPU

具体实施方式

以下通过特定的具体实例说明本发明的实施方式,本领域技术人员可由本说明书所揭露的内容轻易地了解本发明的其他优点与功效。本发明还可以通过另外不同的具体实施方式加以实施或应用,本说明书中的各项细节也可以基于不同观点与应用,在没有背离本发明的精神下进行各种修饰或改变。

请参阅图1至图3需要说明的是,本实施例中所提供的图示仅以示意方式说明本发明的基本构想,虽图示中仅显示与本发明中有关的组件而非按照实际实施时的组件数目、形状及尺寸绘制,其实际实施时各组件的型态、数量及比例可为一种随意的改变,且其组件布局型态也可能更为复杂。

实施例一

请参阅图1,本发明提供一种基于STM32F4芯片的串口数据接收方法,所述基于STM32F4芯片的串口数据接收方法包括以下步骤:

11)将STM32F4芯片的串口配置为DMA(Direct Memory Access,直接存储器访问)接收模式;

12)开启串口空闲中断;

13)接收数据发送端发送的数据,并在一次完整的数据接收结束时触发所述串口空闲中断,暂停数据接收并记录数据接收长度。

作为示例,步骤11)中,使用DMA控制器将STM32F4芯片的串口配置为DMA接收模式,所述DMA控制器中预先设定串口空闲中断及DMA接收中断,用于控制接收数据的长度,以根据需要接收不定长的数据。

作为示例,步骤13)中,所述串口接收数据发送端发送的数据的同时,将接收的数据保 存至一缓存单元。

步骤13)完成之后,即完成了一次完整的数据接收,所述串口空闲中断之后,数据的接收被禁止,但由于数据发送端需要发送的数据需要多次数据接收才能完成,因此在步骤13)之后,还包括:

14)使用CPU处理触发的所述串口空闲中断,以重新开启所述串口空闲中断,并在重新开启所述串口空闲中断之后释放所述CPU。需要说明的是,此处所述释放CPU可以为断开所述CPU与所述DMA控制器的连接。使用CPU处理触发的所述串口空闲中断,重新开启所述串口空闲中断,使得串口又处于等待接收数据的状态,为下一次数据接收做好准备;在重新开启所述串口空闲中断之后释放所述CPU,保证了所述CPU不用耗费在数据传输上,让所述CPU有更多时间完成其他处理,可以大大提升所述CPU的处理速度。

作为示例,步骤14)之后,还包括重复步骤13)至步骤14)若干次,直至数据发送端发送的数据被完全接收后触发DMA接收中断,数据接收完成。

作为示例,步骤12)中,使用CPU开启所述串口空闲中断及所述DMA接收中断,并在开启所述串口空闲中断及所述DMA接收中断后释放所述CPU。同理,开启所述串口空闲中断及所述DMA接收中断后释放所述CPU,保证了所述CPU不用耗费在数据传输上,让所述CPU有更多时间完成其他处理,可以大大提升所述CPU的处理速度。

由上述可知,将串口采用DMA方式接收数据,只在数据接收开始时及数据接收结束后分别使用CPU进行处理一次,使得CPU不用耗费在数据传输上,让CPU有更多时间完成其他处理,大大提升了CPU的处理速度;同时,在数据的接收过程中,将DMA中断与串口空闲中断相结合,可以实现不定长数据的传输,相较于现有的其他传输方法更加便捷有效。

实施例二

请参阅图2,本发明还提供一种基于STM32F4芯片的串口数据发送方法,所述方法包括以下步骤:

21)将STM32F4芯片的串口配置为DMA发送模式;

22)开启DMA发送中断;

23)将实施例一中所述的接收方法接收的数据依据长度的不同分为不同的数组,并将所述不同数组中的数据提取至相应的寄存器;

24)将提取至所述寄存器中的一数组的数据发送至数据接收端,并在该数组的数据发送完毕后触发所述DMA发送中断,暂停数据的发送。

作为示例,步骤22)中,使用CPU开启所述DMA发送中断,并在开启所述DMA发送中断后释放所述CPU。在开启所述DMA发送中断后释放所述CPU,保证了所述CPU不用 耗费在数据传输上,让所述CPU有更多时间完成其他处理,可以大大提升所述CPU的处理速度。

步骤24)完成之后,即完成了一个数组的数据的发送,所述DMA发送中断之后,数据的发送被禁止,但由于需要发送的数据包括多个不同长度的数组数据,需要多次数据发送才能完成,因此在步骤24)之后,还包括:

25)使用CPU处理触发的所述DMA发送中断,以重新开启所述DMA发送中断,并在重新开启所述DMA发送中断之后释放所述CPU。

使用CPU处理触发的所述DMA发送中断,重新开启所述DMA发送中断,使得串口又处于等待发送数据的状态,为下一次数据发送做好准备;在重新开启所述DMA发送中断之后释放所述CPU,保证了所述CPU不用耗费在数据传输上,让所述CPU有更多时间完成其他处理,可以大大提升所述CPU的处理速度。

作为示例,步骤25)之后,还包括重复步骤23)至步骤24)若干次,直至将提取至所述寄存器中的所有数组的数据全部发送至数据接收端。

由上述可知,将串口采用DMA方式发送数据,只在数据发送开始时及数据发送结束后分别使用CPU进行处理一次,使得CPU不用耗费在数据传输上,让CPU有更多时间完成其他处理,大大提升了CPU的处理速度。

实施例三

本发明还提供一种基于STM32F4芯片的串口数据传输方法,所述数据传输方法包括数据接收方法及数据发送方法;

所述数据接收方法包括以下步骤:

11)将STM32F4芯片的串口配置为DMA接收模式;

12)使用CPU开启串口空闲中断及DMA接收中断;

13)接收数据发送端发送的数据,在接收数据的同时,将接收的数据保存至一缓存单元,并在一次完整的数据接收结束时触发所述串口空闲中断,暂停数据接收并记录数据接收长度;

14)使用CPU处理触发的所述串口空闲中断,以重新开启所述串口空闲中断,等待下一次数据接收;

15)重复步骤13)至步骤14)若干次,直至数据发送端发送的数据被完全接收后触发DMA接收中断,数据接收完成;

所述数据发送方法包括以下步骤:

21)使用CPU开启DMA发送中断;

22)将所述数据接收方法接收到的数据依据长度的不同分为不同的数组,并将所述不同 数组中的数据提取至相应的寄存器;

23)将提取至所述寄存器中的一数组的数据发送至数据接收端,并在该数组的数据发送完毕后触发所述DMA发送中断,暂停数据的发送;

24)使用CPU处理触发的所述DMA发送中断,以重新开启所述DMA发送中断,等待下一次数据发送;

25)重复步骤23)至步骤24)若干次,直至将提取至所述寄存器中的所有数组的数据全部发送至数据接收端。

作为示例,用CPU开启所述串口空闲中断、所述DMA接收中断及所述DMA发送中断之后,以及使用CPU处理触发的所述串口空闲中断及触发所述DMA发送中断之后,均包括释放所述CPU的步骤。

实施例四

请参阅图3,本发明还提一种基于STM32F4芯片的串口数据传输装置,所述装置包括:STM32F4芯片的串口1、DMA控制器2及CPU3;

所述STM32F4芯片的串口1与数据发送端(未示出)及数据接收端(未示出)电连接,适于接收及所述数据发送端发送的数据,并将接收的数据保存至缓存单元(未示出),并适于将接收的数据发送至所述数据接收端;

所述DMA控制器2与所述STM32F4芯片的串口1,适于设定串口空闲中断、DMA接收中断及DMA发送中断,将所述STM32F4芯片的串口1依据长度的不同分为不同的数值并提取至相应的寄存器(未示出),控制所述STM32F4芯片的串口1以DMA传输模式接收及发送数据,并在所述STM32F4芯片的串口1接收的数据达到所需的长度时触发串口空闲中断、在所述数据发送端发送的数据被完全接收后触发DMA接收中断及在发送一定长度的数组数据之后触发DMA发送中断;

所述CPU3与所述DMA控制器2电连接,适于控制所述串口空闲中断、所述DMA接收中断及所述DMA发送中断的开启。

作为示例,所述CPU3在数据传输(接收及发送)之前开启串口空闲中断、DMA接收中断及DMA发送中断,并在串口空闲中断及DMA发送中断被触发后重新开启所述串口空闲中断及DMA发送中断。

综上所述,本发明提供一种基于STM32F4芯片的串口数据接收、发送、传输装置及方法,所述基于STM32F4芯片的串口数据接收方法包括以下步骤:11)将STM32F4芯片的串口配置为DMA接收模式;12)开启串口空闲中断;13)接收数据发送端发送的数据,并在一次完整的数据接收结束时触发所述串口空闲中断,暂停数据接收并记录数据接收长度。本发明 通过将串口采用DMA方式传输(发送及接收)数据,只在数据传输开始时及数据传输结束后分别使用CPU进行处理一次,使得CPU不用耗费在数据传输上,让CPU有更多时间完成其他处理,大大提升了CPU的处理速度;同时,将DMA中断与串口空闲中断相结合,可以实现不定长数据的传输,相较于现有的其他传输方法更加便捷有效。

上述实施例仅例示性说明本发明的原理的功效,而非用于限制本发明。任何熟悉此技术的人士皆可在不违背本发明的精神及范畴下,对上述实施例进行修饰或改变。因此,举凡所属技术领域中具有通常知识者在未脱离本发明所揭示的精神与技术思想下所完成的一切等效修饰或改变,仍应由本发明的权利要求所涵盖。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1