打印

STM32 片内SRAM和片内FLASH 区别

[复制链接]
11753|18
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
thinpadhoho|  楼主 | 2010-5-25 11:12 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
做了个IO口模拟IIC协议读片外RTC的程序,同样的IIC读写程序放在片内SRAM上运行,读写时钟正确,但放在片内FLASH上运行,时钟会走慢,中断已关,片内SRAM和片内FLASH有何区别?请高人解释。。。
沙发
IJK| | 2010-5-25 11:29 | 只看该作者
片内FLASH如果系统时钟是72M,需要有2个等待,而片内RAM没有这样的问题;所以在某些地方,放在片内FLASH上运行,时钟会走慢。

使用特权

评论回复
板凳
thinpadhoho|  楼主 | 2010-5-25 11:48 | 只看该作者
片内FLASH如果系统时钟是72M,需要有2个等待,这个是初始化等待吗? 用户手册哪个地方有说明 谢谢

使用特权

评论回复
地板
IJK| | 2010-5-25 13:10 | 只看该作者
片内FLASH如果系统时钟是72M,需要有2个等待,在reference manual里面说到了,摘录如下:

Note: 1 These options should be used in accordance with the Flash memory access time. The wait
states represent the ratio of the SYSCLK (system clock) period to the Flash memory access
time:
zero wait state, if 0 < SYSCLK ≤ 24 MHz
one wait state, if 24 MHz < SYSCLK ≤ 48 MHz
two wait states, if 48 MHz < SYSCLK ≤ 72 MHz

使用特权

评论回复
5
thinpadhoho|  楼主 | 2010-5-25 13:13 | 只看该作者
The Flash memory access time is adjusted to the fHCLK frequency (0 wait state from 0
to 24 MHz, 1 wait state from 24 to 48 MHz and 2 wait states above)
您说的是这个吧 这个是从0HZ到72MHZ需要2个等待状态次数 是上电FLASH初始化时候出现  之后IIC通讯应该不会有影响了吧

使用特权

评论回复
6
香水城| | 2010-5-25 13:24 | 只看该作者
程序在片内SRAM和片内FLASH的运行速度不一样。

使用特权

评论回复
7
thinpadhoho|  楼主 | 2010-5-25 13:35 | 只看该作者
程序在片内SRAM和片内FLASH的运行速度不一样。
香水城 发表于 2010-5-25 13:24


说详细点 谢谢

使用特权

评论回复
8
香水城| | 2010-5-25 13:42 | 只看该作者
前面不是说了有等待周期的问题吗?

还有就是Cortex-M3的结构问题,CPU至FLASH有专门的取指通道,取指与操作SRAM可以并行。而CPU至SRAM没有专门的取指通道,取指与操作SRAM不能并行,只能串行。

使用特权

评论回复
9
thinpadhoho|  楼主 | 2010-5-25 14:05 | 只看该作者
我觉得FLASH等待时间这个影响可能更大一点 结构的影响应该不大
但还有一个问题,就是我在片内FLASH 执行时,上来就屏蔽所有中断执行IIC读写程序,没有问题,而在IIC读写外部RTC程序前加屏蔽中断,就出问题了,这个怎么解释啊,中断屏蔽了还有影响,放在不同位置,不一样

使用特权

评论回复
10
香水城| | 2010-5-25 14:12 | 只看该作者
我觉得FLASH等待时间这个影响可能更大一点 结构的影响应该不大
但还有一个问题,就是我在片内FLASH 执行时,上来就屏蔽所有中断执行IIC读写程序,没有问题,而在IIC读写外部RTC程序前加屏蔽中断,就出问题了,这个怎 ...
thinpadhoho 发表于 2010-5-25 14:05


这个问题与具体的实现有关。

使用特权

评论回复
11
thinpadhoho|  楼主 | 2010-5-25 14:16 | 只看该作者
这个问题与具体的实现有关。
香水城 发表于 2010-5-25 14:12


这个等于没说

使用特权

评论回复
12
香水城| | 2010-5-25 14:35 | 只看该作者
这个等于没说
thinpadhoho 发表于 2010-5-25 14:16


你都没有说你是怎么实现的,让我说什么?;P

使用特权

评论回复
13
xsgy123| | 2010-5-25 15:01 | 只看该作者
程序在RAM和FLASH里面运行速度是不一样的

使用特权

评论回复
14
thinpadhoho|  楼主 | 2010-5-25 15:03 | 只看该作者
就是我在片内FLASH 执行时,程序开始就屏蔽所有中断执行IIC读外部RTC,没有问题,而在IIC读外部RTC前屏蔽中断,就有问题,中断屏蔽位置不同,影响不一样

就这个 前面说了

使用特权

评论回复
15
ciniao| | 2010-5-25 22:02 | 只看该作者
14# thinpadhoho 中断位置不同,也是出现走慢的情况还是其他情况?描述仔细一点看呢

使用特权

评论回复
16
ytmpeigd| | 2010-5-26 13:46 | 只看该作者
学习了。

使用特权

评论回复
17
shangelaila| | 2010-5-26 16:42 | 只看该作者
学习了。

使用特权

评论回复
18
HSunrays| | 2010-5-26 20:20 | 只看该作者
片外RTC是自己独立走时吗?应该是你RTC擦左右问题吧?片外RTC怎么会受你程序影响?除非你是MCU模拟RTC。

使用特权

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

本版积分规则

7

主题

38

帖子

0

粉丝