LL_FLASH_SetLatency 闪存存取的设置

        闪存的指令和数据访问是通过AHB总线完成的。预取模块是用于通过ICode总线读取指令的。仲裁是作用在闪存接口,并且DCode总线上的数据访问优先。

读访问可以有以下配置选项:

● 等待时间:可以随时更改的用于读取操作的等待状态的数量。

● 预取缓冲区(2个64位):在每一次复位以后被自动打开,由于每个缓冲区的大小(64位)与闪

存的带宽相同,因此只通过需一次读闪存的操作即可更新整个缓冲区的内容。由于预取缓冲区的存在, CPU可以工作在更高的主频。 CPU每次取指最多为32位的字,取一条指令时,下一条指令已经在缓冲区中等待。

● 半周期:用于功耗优化。

注:

1. 这些选项应与闪存存储器的访问时间一起使用。等待周期体现了系统时钟(SYSCLK)频率与闪

存访问时间的关系:

  1. 0等待周期,当 0 < SYSCLK < 24MHz
  2. 1等待周期,当 24MHz < SYSCLK ≤ 48MHz
  3. 2等待周期,当 48MHz < SYSCLK ≤ 72MHz

在程序对应为:

#if defined(FLASH_ACR_LATENCY)
#define LL_FLASH_LATENCY_0                 0x00000000U             /*!< FLASH Zero Latency cycle */
#define LL_FLASH_LATENCY_1                 FLASH_ACR_LATENCY_0     /*!< FLASH One Latency cycle */
#define LL_FLASH_LATENCY_2                 FLASH_ACR_LATENCY_1     /*!< FLASH Two wait states */
#else
#endif /* FLASH_ACR_LATENCY */

我们在用LL_FLASH_SetLatency  进行闪存存取设置时要注意,如果设置不好,那么就会跑飞!!!

2 . 半周期配置不能与使用了预分频器的AHB一起使用,时钟系统应该等于HCLK时钟。该特性

只能用在时钟频率为8MHz或低于8MHz时,可以直接使用的内部RC振荡器(HSI),或者是主振

荡器(HSE),但不能用PLL。

3. 当AHB预分频系数不为1时,必须置预取缓冲区处于开启状态。

4. 只有在系统时钟(SYSCLK)小于24MHz并且没有打开AHB的预分频器(即HCLK必须等于

SYSHCLK)时,才能执行预取缓冲器的打开和关闭操作。一般而言,在初始化过程中执行预取

缓冲器的打开和关闭操作,这时微控制器的时钟由8MHz的内部RC振荡器(HSI)提供。

5. 使用DMA: DMA在DCode总线上访问闪存存储器,它的优先级比ICode上的取指高。 DMA在每次传送完成后具有一个空余的周期。有些指令可以和DMA传输一起执行。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值