打印
[应用相关]

如何提升非零等待区 Flash 效能

[复制链接]
24|0
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Questions:部分 AT32 带有非零等待区,当代码超过零等待区后,且时钟不高于 72MHz,读取Flash 的效能会降低。此时不改变外围时钟,如何快速修改程序以提高 Flash 效能?
Answer:
保证客户外围设备时钟不变时,程序最小修改方式如下:直接将主频提高到原主频的整数倍,但此时需要调整CRM_CFG寄存器(SXX为RCC_CFGR)的APB1DIV[2:0]、APB2DIV[2:0] (SXX 为 APB1PSC[2:0],APB2PSC[2:0] ),使 APB1,APB2 总线时钟维持之前值;必要时还需调整 TMR 的预分频 TMRx_DIV(SXX 为 PSC)寄存器。举例说明如下:
1. 假定客户之前 MCU 主频工作在 72MHz 时,APB1=36MHz,APB2=72MHz。
2. 现设定主频 PLL 提升到 72X2=144MHz。如果客户使用非 AT 官方 BSP,参考代码如下:

#define RCC_CFGR_PLLRANGE_GT72MHZ ((uint32_t)0x80000000) 
/* PLL configuration: PLLCLK = HSE * 18 = 144 MHz */
RCC->CFGR |= (uint32_t)(RCC_CFGR_PLLSRC_HSE | RCC_CFGR_PLLMULL18 |
RCC_CFGR_PLLRANGE_GT72MHZ);
如果客户使用 AT 官方 BSP,参考代码如下:
crm_pll_config(CRM_PLL_SOURCE_HEXT_DIV, CRM_PLL_MULT_60, 
CRM_PLL_OUTPUT_RANGE_GT72MHZ);
3. 修改 APB1,APB2 时钟分频,维持改变主频前 APB1,APB2 时钟频率。如果客户使用非 AT 官方BSP,参考代码如下:

RCC_APB1CLKConfig(RCC_AHBCLK_Div4); //维持APB1为36MHz
RCC_APB2CLKConfig(RCC_AHBCLK_Div2); //维持APB2为72MHz
如果客户使用 AT 官方 BSP,参考代码如下:
crm_apb1_div_set(CRM_APB1_DIV_4 ); //维持APB1为36MHz
crm_apb2_div_set(CRM_APB2_DIV_2 ); //维持APB2为72MHz
4. 当 APB 分频系数等于 1 时,定时器时钟频率等于 APB 时钟频率;当 APB 分频系数不等于 1 时,定时器时钟频率等于 APB 时钟频率乘以 2。

之前 APB1=36MHz, 预分频系数 2,挂在其上的定时器 TMR2 时钟频率是 72MHz。修改后预分频系数变为 4,挂在其上的定时器时钟频率还是 72MHz,所以挂在 APB1 上的定时器时钟分频不需要改变。之前 APB2=72MHz,预分频系数 1,挂在其上的定时器 TMR1 时钟频率是 72MHz。修改后预分频系数变为 2,挂在其上的定时器时钟频率变为 144MHz,所以挂在 APB2 上的定时器时钟分频系数需要在原来的值上乘以 2。这导致此时需要修改 TMR1 的 DIV(SXX 为 PSC)寄存器。如果客户使用非 AT 官方 BSP,参考代码如下:

TIM_Cmd(TIM1, DISABLE);
TIM_TimeBaseStructure.TIM_Prescaler =psc; //修改此处的分频系数
TIM_TimeBaseInit(TIM1, &TIM_TimeBaseStructure);
TIM_Cmd(TIM1, ENABLE);
如果客户使用 AT 官方 BSP,参考代码如下:
tmr_base_init(TMR1, tmr_pr-1, tmr_div); //修改此处的分频系数为tmr_pr-1
5. 此时非零等待区的代码效能:由 72*0.4=28.8Mbyte/s 提升到 144*0.4=57.6Mbyte/s。
类型:MCU 应用
适用型号:AT32F403, AT32F403A, AT32F407,AT32F413,AT32F435, AT32F437
主功能:FLASH
次功能:TMR

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

认证:苏州澜宭自动化科技嵌入式工程师
简介:本人从事磁编码器研发工作,负责开发2500线增量式磁编码器以及17位、23位绝对值式磁编码器,拥有多年嵌入式开发经验,精通STM32、GD32、N32等多种品牌单片机,熟练使用单片机各种外设。

562

主题

4076

帖子

53

粉丝