打印
[AT32F403/403A]

AT32F403A如何使用224KB SRAM

[复制链接]
7014|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 ArterySW 于 2022-2-17 19:38 编辑

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

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

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

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

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,嗯..................真香

使用特权

评论回复
评论
645151579 2021-5-29 17:00 回复TA
有没有寄存器板的,void extend_SRAM(void)这个函数用AT的库才行,我用的ST的库,编译都通过不了 
沙发
发呆二极管| | 2020-11-16 20:11 | 只看该作者
还需要配置后才能用?

使用特权

评论回复
评论
发呆二极管 2020-11-16 20:18 回复TA
@骑着蜗牛狂奔O :好的学习了,等搞个样片试试。 
骑着蜗牛狂奔O 2020-11-16 20:15 回复TA
是的,但是配置很简单(用第一种方法) 
板凳
骑着蜗牛狂奔O|  楼主 | 2020-11-17 09:15 | 只看该作者
发呆二极管 发表于 2020-11-16 20:11
还需要配置后才能用?

只需要简单配置就能用了

使用特权

评论回复
地板
数据采集存储| | 2020-11-17 11:17 | 只看该作者
extend_SRAM();这句指令是什么意思呢?

使用特权

评论回复
5
可爱的烧饼| | 2020-11-19 09:37 | 只看该作者
这个可以做掉电存储使用吧,也可以直接使用BootLoader

使用特权

评论回复
6
发呆二极管| | 2020-11-30 18:03 | 只看该作者
最近了解了一下,发现如果用224k ram的话,零等待的flash会降低为128k。

使用特权

评论回复
评论
骑着蜗牛狂奔O 2020-11-30 21:32 回复TA
请看这篇帖子 AT32F403A 224K RAM 和非零等待区关系 https://bbs.21ic.com/icview-3049038-1-1.html 
7
cr315| | 2020-12-1 10:37 | 只看该作者
403A默认的配置是96KB,然后需要对用户选择字节进行配置才能使用224KB SRAM。学习了。。。

使用特权

评论回复
8
aple0807| | 2021-5-31 08:57 | 只看该作者

void mcu_option_check(void)
{
    uint8_t b_opt_update_req = 0;
   
    if(FLASH_GetWriteProtectStatus() != 0xFFFFC000)
    {
        //b_opt_update_req = 1;
    }
   
    // sram to 224KB
    if(UOPTB->EOPB0 != 0x01FE)
    {
        b_opt_update_req = 1;
    }
   
    if(b_opt_update_req)
    {
        FLASH_Unlock();
        
        FLASH_EraseUserOptionBytes();
        
        //FLASH_ReadProtectConfig(DISABLE);
        
        //FLASH_EnableWriteProtect(BITS_MASK(0,13));
        
        FLASH_ProgramUserOptionByteData((uint32_t)&UOPTB->EOPB0, 0xFE);
        
        FLASH_Lock();
        
        NVIC_SystemReset();
    }
}

使用特权

评论回复
9
ringsp| | 2021-6-4 10:40 | 只看该作者
估计大部分愿意选择大RAM,而不是flash的性能。

使用特权

评论回复
10
lhzw2001| | 2021-8-17 20:48 | 只看该作者
非零等待的FLASH耗时有多长呢?

使用特权

评论回复
11
Foreverhao| | 2021-11-9 14:26 | 只看该作者
用AC6编译官方的例程进行修改,会进入硬件中断

使用特权

评论回复
12
骑着蜗牛狂奔O|  楼主 | 2021-11-9 18:24 | 只看该作者
Foreverhao 发表于 2021-11-9 14:26
用AC6编译官方的例程进行修改,会进入硬件中断

那直接使用官方历程看看呢

使用特权

评论回复
13
Foreverhao| | 2021-11-10 09:13 | 只看该作者
骑着蜗牛狂奔O 发表于 2021-11-9 18:24
那直接使用官方历程看看呢

原例程直接用没问题的。就是将编译器改为AC6,编译通过,下载程序跑起来会进入硬件中断。单步调试发现是在flash_user_system_data_erase()函数里面执行FLASH->ctrl_bit.usders = TRUE;这条语句时进入硬件中断的,用的是at32自身的库。尝试过所有优化等级都没有用。

使用特权

评论回复
14
muyichuan2012| | 2021-11-10 09:41 | 只看该作者
楼上应该使用的是V2.0.1版本的BSP,我这里使用AC6编译下载,都是OK的啊。


使用特权

评论回复
15
Foreverhao| | 2021-11-10 09:51 | 只看该作者
muyichuan2012 发表于 2021-11-10 09:41
楼上应该使用的是V2.0.1版本的BSP,我这里使用AC6编译下载,都是OK的啊。

用的确实是V2.0.1版本的,请问您用的是哪个版本的?我下载来试试

使用特权

评论回复
评论
muyichuan2012 2021-11-10 10:57 回复TA
我用的也是V2.0.1测试的,方便留个微信吗,以便于进一步沟通。 
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

53

主题

126

帖子

1

粉丝