whimsyB 发表于 2013-3-27 14:32:11

讨论下LGT8F08A芯片的eeprom操作是否是个bug,具体情况看帖子

我遇到的问题是这样的:

对于新的芯片,如果对eeprom的指定的地址未进行写的操作的时候,
程序启动后就去访问这个地址,那么读的指令将死等,并且连看门狗都不起作用

但是如果这个地址是已经是写操作过的,程序就能正常,

进而测试发现,程序启动后,先在不用的某个eeprom地址随便写个数据,那么后面跟的读eeprom的操作,即使这个地址没有写过数据,程序也不会死

请大家测试下,是否有跟我一样的情况

或者是我读的代码有错吗,还是我什么地方初始化没注意的?

/*****************************************************************************
** Function name        :                E2prom_Read
** Descriptions                :                read internal eeprom
** parameters                :                addr:            
** Returned value        :                data:
*****************************************************************************/
u8 E2prom_Read(u16 addr)
{
        /*wait for completion of previous write*/
        while(EECR & (1 << EEPE));               
        /*set up the address register*/
       
        EEARH = (addr >> 8) & 0x01;
        EEARL = (addr & 0xFF);
        /*start eeprom read by writing EERE*/
        EECR |= _BV(EERE);
        asm("nop");
        asm("nop");
        return EEDR;
}

xwkm 发表于 2013-3-27 17:39:49

全片擦除试试吧,不会又是BUG?

whimsyB 发表于 2013-3-27 18:52:08

xwkm 发表于 2013-3-27 17:39 static/image/common/back.gif
全片擦除试试吧,不会又是BUG?

我手里只有仿真器,ISP烧写的刚定了,还没到,收到后测试下全部擦除一次还会不会,我估计也会,出厂的时候,应该是空的呀

goodcode 发表于 2013-3-27 20:08:05

是不是因为"写入均衡"没被全片擦除或写过没初始化引起的.
芯片写eeprom的时间也总是不好说的,有时候慢有时候快我想也是这个"写入均衡"引起的吧

whimsyB 发表于 2013-3-27 21:04:37

goodcode 发表于 2013-3-27 20:08 static/image/common/back.gif
是不是因为"写入均衡"没被全片擦除或写过没初始化引起的.
芯片写eeprom的时间也总是不好说的,有时候慢有时 ...

可能像你说的那样,因为 LGT的eeprom实际上就是用flash来仿真的,只不过他的仿真是由硬件来操作的,而像stm32F103芯片,是用软件来仿真的

并不是慢的原因,而是死了,连看门狗都不作为,程序也不重启

不知道大家是否遇到?

bozai 发表于 2013-3-28 10:33:02

whimsyB 发表于 2013-3-27 21:04 static/image/common/back.gif
可能像你说的那样,因为 LGT的eeprom实际上就是用flash来仿真的,只不过他的仿真是由硬件来操作的,而像s ...

我这边测试,新片子从没写过,直接读没问题。

是不是你的工作频率太高了,前几天写bootloader,上了36MHz的晶振,写FLASH写不进去。

xwkm 发表于 2013-3-28 12:19:31

bozai 发表于 2013-3-28 10:33 static/image/common/back.gif
我这边测试,新片子从没写过,直接读没问题。

是不是你的工作频率太高了,前几天写bootloader,上了36MH ...

不知道。看是什么片咯。工程片是有点BUG的。
你的是SOP28的还是啥?我的没啥问题。无论32还是28

xwkm 发表于 2013-3-28 13:18:18

LGT的数据FLASH其实是两页。交替写的。比如说第一页有个0x00,然后你写个0xff上去。控制器就会擦除备用页。然后把别的数据复制到备用页,接着写入数据。标记备用页有效,把原来的页标记为无效(这个是最坏情况)。
我没有遇到读指令弄到CPU死等的现象。你是不是不小心关了16M RC?

whimsyB 发表于 2013-3-29 13:57:44

这个测试是基于新的芯片,没有先执行过写的操作,用仿真器灌程序测试,你也是按照我说的这个条件测试吗?

xwkm 发表于 2013-3-30 13:12:41

whimsyB 发表于 2013-3-29 13:57 static/image/common/back.gif
这个测试是基于新的芯片,没有先执行过写的操作,用仿真器灌程序测试,你也是按照我说的这个条件测试吗? ...

嗯。目前我没有这个状况啊。读到一个FF。

whimsyB 发表于 2013-3-30 13:55:55

xwkm 发表于 2013-3-30 13:12 static/image/common/back.gif
嗯。目前我没有这个状况啊。读到一个FF。

哦,谢谢,看来是我程序的问题了

sballbobo 发表于 2013-7-27 04:35:44

我的程序烧进去了,芯片无反应,会不会也是这个原因呢?因为我的程序一开始有读EEPROM的操作。我明天改先写一个数试试。

sballbobo 发表于 2013-7-28 04:26:13

我也遇到过这样的问题了,程序得先对EEPROM写操作,否则会死机了。
页: [1]
查看完整版本: 讨论下LGT8F08A芯片的eeprom操作是否是个bug,具体情况看帖子