STM32F4 灵活内存控制器(FMC)的使用与配置
1. 引言
在一些应用场景中,STM32F4 微控制器自带的内存可能无法满足需求,此时就需要外接内存芯片,如 RAM 或闪存。而灵活内存控制器(FMC)模块就是专门用于实现与外部内存芯片通信的单元。本文将详细介绍 FMC 模块的工作原理、设置方法以及在不同编程语言(C、C++ 和 MicroPython)中的使用方式。
2. DMA 数据传输示例
在介绍 FMC 之前,先来看一个使用 DMA 模块进行内存到内存数据传输的示例代码:
/* USER CODE BEGIN PV */
uint8_t srcArray[16] = "stm32f4discovery";
uint8_t dstArray[16];
/* USER CODE END PV */
/* USER CODE BEGIN 0 */
static void DMATransferComplete(DMA_HandleTypeDef *DmaHandle)
{
HAL_GPIO_WritePin(GPIOG, GPIO_PIN_13 , GPIO_PIN_SET);
}
/* USER CODE END 0 */
/* USER CODE BEGIN 2 */
HAL_DMA_RegisterCallback(&hdma_memtomem_dma2_stream0 ,
HAL_DMA_XFER_CPLT_CB_ID , DMATransferComplete);
HAL_DMA_Start_IT(&hdma_memtomem_dma2_stream0 , (uin