STM32 片内SRAM和片内FLASH 区别

[复制链接]
13024|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
 楼主| 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通讯应该不会有影响了吧
香水城 发表于 2010-5-25 13:24 | 显示全部楼层
程序在片内SRAM和片内FLASH的运行速度不一样。
 楼主| thinpadhoho 发表于 2010-5-25 13:35 | 显示全部楼层
程序在片内SRAM和片内FLASH的运行速度不一样。
香水城 发表于 2010-5-25 13:24


说详细点 谢谢
香水城 发表于 2010-5-25 13:42 | 显示全部楼层
前面不是说了有等待周期的问题吗?

还有就是Cortex-M3的结构问题,CPU至FLASH有专门的取指通道,取指与操作SRAM可以并行。而CPU至SRAM没有专门的取指通道,取指与操作SRAM不能并行,只能串行。
 楼主| thinpadhoho 发表于 2010-5-25 14:05 | 显示全部楼层
我觉得FLASH等待时间这个影响可能更大一点 结构的影响应该不大
但还有一个问题,就是我在片内FLASH 执行时,上来就屏蔽所有中断执行IIC读写程序,没有问题,而在IIC读写外部RTC程序前加屏蔽中断,就出问题了,这个怎么解释啊,中断屏蔽了还有影响,放在不同位置,不一样
香水城 发表于 2010-5-25 14:12 | 显示全部楼层
我觉得FLASH等待时间这个影响可能更大一点 结构的影响应该不大
但还有一个问题,就是我在片内FLASH 执行时,上来就屏蔽所有中断执行IIC读写程序,没有问题,而在IIC读写外部RTC程序前加屏蔽中断,就出问题了,这个怎 ...
thinpadhoho 发表于 2010-5-25 14:05


这个问题与具体的实现有关。
 楼主| thinpadhoho 发表于 2010-5-25 14:16 | 显示全部楼层
这个问题与具体的实现有关。
香水城 发表于 2010-5-25 14:12


这个等于没说
香水城 发表于 2010-5-25 14:35 | 显示全部楼层
这个等于没说
thinpadhoho 发表于 2010-5-25 14:16


你都没有说你是怎么实现的,让我说什么?;P
xsgy123 发表于 2010-5-25 15:01 | 显示全部楼层
程序在RAM和FLASH里面运行速度是不一样的
 楼主| thinpadhoho 发表于 2010-5-25 15:03 | 显示全部楼层
就是我在片内FLASH 执行时,程序开始就屏蔽所有中断执行IIC读外部RTC,没有问题,而在IIC读外部RTC前屏蔽中断,就有问题,中断屏蔽位置不同,影响不一样

就这个 前面说了
ciniao 发表于 2010-5-25 22:02 | 显示全部楼层
14# thinpadhoho 中断位置不同,也是出现走慢的情况还是其他情况?描述仔细一点看呢
ytmpeigd 发表于 2010-5-26 13:46 | 显示全部楼层
学习了。
shangelaila 发表于 2010-5-26 16:42 | 显示全部楼层
学习了。
HSunrays 发表于 2010-5-26 20:20 | 显示全部楼层
片外RTC是自己独立走时吗?应该是你RTC擦左右问题吧?片外RTC怎么会受你程序影响?除非你是MCU模拟RTC。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

7

主题

38

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部