Keil编译器的编译优化设置Optimization解决SPI_DMA传输异常耗时

汇能石油 2023-06-19 15:15:02

最近很多人再问Keil编译器的编译优化设置Optimization解决SPI_DMA传输异常耗时,今天小编给大家整理了Keil编译器的编译优化设置Optimization解决SPI_DMA传输异常耗时的相关内容,请往下看。

最近在开发一套电力保护设备,在STM32H750开发平台的SPI_DMA 传输上遇到一点问题,SPI改写为DMA传输后,依然占用MCU好长时间。最后调整的编译器的编译优化设置解决了问题,很奇怪的。

问题描述

电力保护装置交流采样电路的采样芯片AD7606通过SPI与MCU进行通讯,进行数据传输,改写DMA操作,降低占用MCU时间后,单片采样芯片一次传输时间多次测试均在20us以上,如下图所示,传输时间为23us。

图1 SPI传输时间测试

查找耗时的地方

通过在SPI传输函数前后分别设置高低电平,通过示波器对耗时函数进行时间测定。大部时间耗在HAL_SPI_Receive_DMA下的HAL_DMA_Start_IT(),进一步定位在IS_DMA_DMAMUX_ALL_INSTANCE()及IS_DMA_STREAM_INSTANCE()函数上。

问题解决

编译器Keil-MDK进行设置,编译优化选项进行设置

Options for Flash-> TargetC/C(AC6)->Optimization:

将编译优化选项设置为O1,传输时间约为6us,如下图所示。

图2 O1等级

将编译优化选项设置为O2,传输时间约为5.2us,如下图所示。

图3 O2等级

将编译优化选项设置为O3,传输时间约为5.2us,如下图所示。

图3 O3等级.

最终编译器的编译优化设置为O2,能满足目前使用要求,继续开发其他的功能。

郑重声明:本文版权归原作者所有,转载文章仅为传播更多信息之目的,如作者信息标记有误,请第一时候联系我们修改或删除,多谢。