ST8内部EEPROM写速度太慢!!

lmcfxl   2009-8-29 15:21 楼主
                                 STM8系列写内部eeprom速度超慢,我之前测过不记得是1ms一个字节还是6ms一个字节,之前我没留意,现在一个项目,在写eeprom时丢串口数据,我才开始头疼起来,这样的速度确实是stm8的一大败笔!!!

回复评论 (11)

                                 你是块写吗?块写的话的确慢了点
点赞  2009-8-29 17:54


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

LZ的应用倒是可以用缓冲的方法来解决,一次写128byte,也只需6.6ms,平均才52us 1字节,可以应付相当高的波特率的接收数据流(至少115200bps)。
反正STM8S SRAM多,是不?、、、
点赞  2009-8-30 00:09
                                 人家是写一个字节和写一个Page速度是一样的,这是IC设计电路决定的
点赞  2009-8-30 00:31
                                 那你可以用外接EEPROM,速度应该会快些
点赞  2009-8-30 08:54

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

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

楼主应该在开始设计之前就把手册上的参数研究清楚:
点赞  2009-8-30 10:03
                                 优先级处理好了就ok了
点赞  2009-8-30 10:23
                                 估计楼主没有注意到写入EEPROM的时候(6ms之内)不能对EEPROM进行操作(读或写EERPOM),否则的话CPU会进入STALL状态,不执行任何语句,不响应任何中断。所以应该在EEPROM写入时进行查询FLASH_IAPSR,直到EEPROM写操作完成再进行下一步写操作!
点赞  2009-8-31 06:53
                                 8楼,请教,你是指HVOFF位吗?EOP位好像写完没反应的!
点赞  2009-9-1 08:30
                                 奇怪,FLASH_IAPSR复位值为0x4a??
点赞  2009-9-1 08:34
是EOP位,这一位烧写完成后由硬件置1,读取FLASH_IAPSR之后清为0。

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


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

/* 下一步操作 */
点赞  2009-9-1 16:50
10楼,你调试程序的时候要烧写FLASH和EEPROM的,这几位当然为1,
对于硬件寄存器的值要确定的话在程序里利用变量去读,这样才是准确的,调试环境中看到的未必是真实的。
点赞  2009-9-1 16:55
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复