硬汉嵌入式论坛

 找回密码
 立即注册
查看: 4583|回复: 5
收起左侧

[技术讨论] AT32F403A如何使用224KB SRAM

[复制链接]

22

主题

16

回帖

82

积分

初级会员

积分
82
发表于 2020-11-16 20:04:14 | 显示全部楼层 |阅读模式
本帖最后由 tutu 于 2022-2-17 19:35 编辑

使用AT32F403A的224KB SRAM时有个注意的地方,之前没详细了解就开用,然后结果是肯定的——掉坑里面了,403A默认的配置是96KB,然后需要对用户选择字节进行配置才能使用224KB SRAM

配置方法
1.   使用雅特力的ICP 进行配置(可在官网下载)
(1)当连接上芯片后,点击设备操作->选择字节
111.png

(2)选择224KB SRAM
(3)然后点击应用到设备,(可以点击从设备加载,来看当前的配置)
112.png

感觉该工具做得很不错,非常的容易上手,这里点个赞

2. 使用软件方法进行配置
可参考雅特力的bsp里project\at_start_f403a\examples\sram\extend_sram

使用以下函数进行配置
void extend_sram(void)
{
  if(((USD->eopb0) & 0xFF) != EXTEND_SRAM)
  {
    /* FLASH解锁 */  
    flash_unlock();

    /* 擦除选择字节 */
    flash_user_system_data_erase();

    /* 设置SRAM大小*/
    flash_user_system_data_program((uint32_t)&USD->eopb0, EXTEND_SRAM);

    /* 系统复位重启生效 */
    nvic_system_reset();
  }
}

#define  EXTEND_SRAM  0xFE //使用224K
#define  EXTEND_SRAM  0xFF //使用96K


该函数放置的位置可以放在SystemInit()函数的程序开始处,如下:
void SystemInit (void)
{
  extend_sram();
….
….
}

雅特力官方的做法是放在了.S文件里,也就是相当于先执行extend_sram()函数,后执行SystemInit(),其实效果是一样的,以下是雅特力官方的做法
Reset_Handler   PROC
                EXPORT  Reset_Handler                       [WEAK]
                IMPORT  __main
                IMPORT  SystemInit
; add for extend sram            
                IMPORT  extend_sram
                MOV32   R0, #0x20001000
                MOV     SP, R0
                LDR     R0, =extend_sram
                BLX     R0
                MOV32   R0, #0x08000000
                LDR     SP, [R0]

                LDR     R0, =SystemInit
                BLX     R0
                LDR     R0, =__main
                BX      R0
                ENDP

配置好了之后就可以愉快的玩耍了,这224K SRAM,嗯..................真香

回复

使用道具 举报

39

主题

928

回帖

1050

积分

至尊会员

积分
1050
发表于 2020-11-17 09:35:01 | 显示全部楼层
楼主是雅特力的代理么?我一直在关注这个牌子的芯片
回复

使用道具 举报

334

主题

2032

回帖

3039

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3039
发表于 2020-11-17 10:27:21 | 显示全部楼层
为为什么这么麻烦呢? 地址连续的RAM,直接开放使用不好吗?
这个是M4内核的arm吗? 放在F4系列的比较好把。
回复

使用道具 举报

22

主题

16

回帖

82

积分

初级会员

积分
82
 楼主| 发表于 2020-11-18 09:24:23 | 显示全部楼层
ghslfgkkl88 发表于 2020-11-17 09:35
楼主是雅特力的代理么?我一直在关注这个牌子的芯片

不是的哈,代理联系方式可以去21ic雅特力的分论坛找,有很多代理商在帖子上发过联系方式,只是对这个芯片感兴趣买块来用用,总体感觉非常好用,和STM32F103差不多
回复

使用道具 举报

22

主题

16

回帖

82

积分

初级会员

积分
82
 楼主| 发表于 2020-11-18 10:19:05 | 显示全部楼层
caicaptain2 发表于 2020-11-17 10:27
为为什么这么麻烦呢? 地址连续的RAM,直接开放使用不好吗?
这个是M4内核的arm吗? 放在F4系列的比较好把 ...

AT32F403A一共有96+128KRAM,这224KB sram 是连续的,用法就是一样的以下图CG系列为例,ZW为零等待区域(运行速度可达240M,其实就是RAM),NZW为非零等待区域(在flash运行),
现在的资源是有总的FLASH 1M  RAM 256K(零等待区ZW)+96K=352KB,这些RAM是连续的
如果按着默认的配置96K RAM ,那么程序一上电,就会将FLASH 前面256K拷贝到256K(零等待区ZW)里面运行,然后剩下1024-256=768K在FLASH里面运行,
如果按着默认的配置96K + 128 k = 224K RAM ,那么零等待区ZW 就只剩128K了,程序一上电,就会将FLASH 前面128K拷贝到128K(零等待区ZW)里面运行,然后剩下1024-128=896K在FLASH里面运行,
我感觉这个功能非常棒啊,可以根据实际需求是选择大的RAM还是高的运行速度,非常的灵活
ad.png



回复

使用道具 举报

10

主题

45

回帖

75

积分

初级会员

积分
75
发表于 2022-2-3 22:15:44 | 显示全部楼层
tutu 发表于 2020-11-18 10:19
AT32F403A一共有96+128KRAM,这224KB sram 是连续的,用法就是一样的以下图CG系列为例,ZW为零等待区域( ...

请教一下,ZW为零等待区域(运行速度可达240M,其实就是RAM),NZW为非零等待区域(在flash运行),那么在NZW运行的速度实际频率是多少
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-5-4 06:12 , Processed in 0.305644 second(s), 31 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表