打印
[STM8]

ST8内部EEPROM写速度太慢!!

[复制链接]
5264|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
xuannin|  楼主 | 2009-8-29 15:21 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
STM8系列写内部eeprom速度超慢,我之前测过不记得是1ms一个字节还是6ms一个字节,之前我没留意,现在一个项目,在写eeprom时丢串口数据,我才开始头疼起来,这样的速度确实是stm8的一大败笔!!!
沙发
cgha| | 2009-8-29 17:54 | 只看该作者
你是块写吗?块写的话的确慢了点

使用特权

评论回复
板凳
mcuisp| | 2009-8-30 00:09 | 只看该作者
本帖最后由 mcuisp 于 2009-8-30 00:45 编辑

STM8S写时间最大需要6.6ms。
EEPROM都这德性吧?楼主,您见过us数量级写时间的EEPROM?

LZ的应用倒是可以用缓冲的方法来解决,一次写128byte,也只需6.6ms,平均才52us 1字节,可以应付相当高的波特率的接收数据流(至少115200bps)。
反正STM8S SRAM多,是不?、、、

使用特权

评论回复
地板
McuPlayer| | 2009-8-30 00:31 | 只看该作者
人家是写一个字节和写一个Page速度是一样的,这是IC设计电路决定的

使用特权

评论回复
5
秋天落叶| | 2009-8-30 08:54 | 只看该作者
那你可以用外接EEPROM,速度应该会快些

使用特权

评论回复
6
香水城| | 2009-8-30 10:03 | 只看该作者

内部和外部EEPROM的写速度都比较慢

正像楼上几位大虾所说,这就是EEPROM的速度,不管是内置还是外置的,你不妨采用2、3楼的方法,使用快速页写要快得多。

楼主应该在开始设计之前就把手册上的参数研究清楚:

STM8S_Memory.GIF (36.01 KB )

STM8S_Memory.GIF

使用特权

评论回复
7
ddb_21ic| | 2009-8-30 10:23 | 只看该作者
优先级处理好了就ok了

使用特权

评论回复
8
zhaoxinzxzx| | 2009-8-31 06:53 | 只看该作者
估计楼主没有注意到写入EEPROM的时候(6ms之内)不能对EEPROM进行操作(读或写EERPOM),否则的话CPU会进入STALL状态,不执行任何语句,不响应任何中断。所以应该在EEPROM写入时进行查询FLASH_IAPSR,直到EEPROM写操作完成再进行下一步写操作!

使用特权

评论回复
9
xuannin|  楼主 | 2009-9-1 08:30 | 只看该作者
8楼,请教,你是指HVOFF位吗?EOP位好像写完没反应的!

使用特权

评论回复
10
xuannin|  楼主 | 2009-9-1 08:34 | 只看该作者
奇怪,FLASH_IAPSR复位值为0x4a??

使用特权

评论回复
11
zhaoxinzxzx| | 2009-9-1 16:50 | 只看该作者
是EOP位,这一位烧写完成后由硬件置1,读取FLASH_IAPSR之后清为0。

不要用调试环境去读寄存器,在程序中去读取并判断。


*((u8*)(0x4000)) = 0xAA;
while(!(FLASH_IAPSR & 0x04));

/* 下一步操作 */

使用特权

评论回复
12
zhaoxinzxzx| | 2009-9-1 16:55 | 只看该作者
10楼,你调试程序的时候要烧写FLASH和EEPROM的,这几位当然为1,
对于硬件寄存器的值要确定的话在程序里利用变量去读,这样才是准确的,调试环境中看到的未必是真实的。

使用特权

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

本版积分规则

34

主题

174

帖子

3

粉丝