20170929在stm32f103zet6 RTT上扩展外部SRAM

开门见山,在f103上测试EXT___SRAM。意法的MCU在100Pin及以上的型号里都有FSMC功能集成,这次在RTT上测试一下对EXT_SRAM的支持。
话不多说,准备环境:
1,f103zet6方案的开发板,我用的是神州III号;
2,MDK IDE V4.73.0.0(WIN7 X64)
3,RTT V2.1.0 SDK
4,JLINK V8
5,VSC IDE编辑器

OK,让RTT先在开发板上跑起来。开发板时钟和RTT默认一致,不用修改;
1,查看代码,如下:
在rtconfig.h里面L75找到串口对应的宏定义,可以发现RTT里是将FINSH映射到uart1;

#define RT_CONSOLE_DEVICE_NAME      "uart1"

在usart.c中L23找找到TX、RX对应的MCU引脚下为GPIOA9、GPIOA10,如下;

/* USART1 */
#define UART1_GPIO_TX        GPIO_Pin_9
#define UART1_GPIO_RX        GPIO_Pin_10
#define UART1_GPIO           GPIOA

2,同样在usart.c中查看串口配置,115200 8N1;
3,用串口TTL连接到GPIOA9、GPIOA10,得在开发板232芯片前连接出来,这样就可以通过串口终端查看打印信息鸟;
4,这里开发板上有4个LED,我将它们中的2个重新定向到RTT中的LED指示灯上,找到led.c中L29行处,修改对应的IO端口,如下;

#define led1_rcc                    RCC_APB2Periph_GPIOF
#define led1_gpio                   GPIOF
#define led1_pin                    (GPIO_Pin_8)

#define led2_rcc                    RCC_APB2Periph_GPIOF
#define led2_gpio                   GPIOF
#define led2_pin                    (GPIO_Pin_9)

这样,LED就可以在RTT上闪烁起来。这时查看一下当前的memery参数,如图;
这里写图片描述
这里可以看到总memery为58520,跟f103内部64K RAM接近;
5,今天的重点戏—FSMC接口,如图,
这里写图片描述

在stm32f10x_fsmc.h中将FSMC的接口GPIO与开发板对应起来,我手上的开发板与RTT内一致,这里不作修改,如果需要重新配置GPIO口在L72开始修改即可;
这里写图片描述
6,开发板上的SRAM型号为IS61LV25616 256Kx16bit (即512KByte),实际上RTT里的实例也是512KB外部SRAM,但这里我对程序做一些小的调整,让编译器自己去算总SRAM大小,在board.h中作如下添加;

#define STM32_EXT_SRAM_END      (STM32_EXT_SRAM_BEGIN + STM32_EXT_SRAM_SIZE * 1024)

当然,还得提前定义一个宏,

#define STM32_EXT_SRAM_SIZE 512

7,打开RTT的外部SRAM的支持,在board.h中L28修改值为1如下;

#define STM32_EXT_SRAM          1

8,编译&&下载,如图。
这里写图片描述
对比未打开外部SRAM的大小,说明外部SRAM被RTT正常跑起来,同时LED开始闪烁。
(全文完)

发布了9 篇原创文章 · 获赞 7 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/yofa2008/article/details/78135976