【前言】
STM32F769I-DISC1板载了16M的SDRAM。在用户手册里面是这样描述的。
其原理图如下:
【驱动的移植】
在官方示例BSP中,已经把他的驱动写好了,我们只需要把他的驱动复制到工程,启用选项,并做简单的配置即可以实现驱动,其步聚如下:
1、复制驱动库中的stm32f769i_discovery_sdram.c/h到工程中的bsp目录中。他的源文件在目录STM32Cube_FW_F7_V1.17.2\Drivers\BSP\STM32F769I-Discovery下面。
2、打开stm32f7xx_hal_conf.h,打开#define HAL_SDRAM_MODULE_ENABLED 选项。
3、把驱动库的文件stm32f7xx_hal_sdram.c、/stm32f7xx_ll_fmc.c,也需要加入编译中:
4、把bsp目录下的驱动也加入编译环境中。
5、添加初始化,main中把BSP_SDRAM_Init加入到systemClock_Config之后。
6、添加测试代码:
// 定义测试数据 uint32_t test_data_write = 0x12345678; uint32_t test_data_read; // 向SDRAM写入数据 *(uint32_t *)SDRAM_DEVICE_ADDR = test_data_write; // 从SDRAM读取数据 test_data_read = *(uint32_t *)SDRAM_DEVICE_ADDR; // 检查读取的数据是否与写入的数据一致 if (test_data_read == test_data_write) { // 读取成功 shell_printf("SDRAM read test passed!\n"); } else { // 读取失败 shell_printf("SDRAM read test failed!\n"); }
【移植效果】
编译下载后,打开shell,可以看成功的测试到数据的读取。
【总结】
在官方的开发板中,外设官方都已经写好了驱动,我们只需要几步就可以适配,并不需要使用stm32cubMX来配置。