Part Number:SM28VLT32-HT
尊敬的TI大神们:
目前我有个高温产品的开发项目,项目中用到了存储器,选择了SM28VLT32-HT这款产品,使用中遇到了一个这个问题
单片机采样STM8AF5288与SM28VLT32-HT的通讯采用模拟SPI方式,原理图见下图
模拟SPI的驱动程序见下图
写数据时的流程如下
由于SM28VLT32-HT功耗过高,使用时我关闭了BANK0~BANK7以及PUMP的供电,在需要写入数据时根据需要写入的地址判断是写的哪个BANK,每条数据长度20个WORDS,然后开启相应的供电写入数据。
目前按照这种方式可以将数据写入,但是读取数据时发现数据在1640条时就不对了,数据应该没有写入成功,见下图
1640条数据对应的FLASH地址为十进制32800,该地址应该是bank0 的sector2区域,百思不得其解。还请大神指点一二,不胜感激!
user5860766:
今天又调试了一下,发现只要地址超过0x00008000也就是十进制32768读取的数据就是0,擦除sector0后再读取该数据还是0,不知什么情况
,
Amy Luo:
您好,
看您电路图中VCORE的电压是1.8V,但是datasheet 推荐的最小电压是1.8V,我担心随着更多数据的写入,功耗越来越大,供电电压有电压降,不能满足最小1.8V的供电造成的,因此请确保VCORE供电电压在1.8V ~1.98V之间:
,
user5860766:
您好,按照您的提示我将1.8V提高到了1.9V,现象还是一样,具体见下图
我编写了测试代码,擦除sector0和sector1 然后读取地址0和32767的数据都是0xFFFF,但是读取32768地址的数据就变成了0x0000,按道理来说也应该是0xFFFF才对啊,不知道什么原因
,
user5860766:
您好
应该是擦除没有成功,以下是我的擦除函数
擦除的地址是24位的,这个是每个sector的首地址吗?也就是每个sector包含32K的数据,地址是0 32000 64000 。。。。吗?
按照这个地址擦除应该不对,我按照0 32768 65536 。。。。。。这个地址擦除就能成功,但是这样的话每个sector的容量不就是32768个word了吗?一共64个sector这样算下来32768*64=2097152个word,整片存储一共不是才2M words吗?还请指点
,
user5860766:
您好
下图是我对整片芯片地址的理解,不知道哪里理解的不对吗?
,
user5860766:
您好
应该是擦除没有成功,以下是我的擦除函数
擦除的地址是24位的,这个是每个sector的首地址吗?也就是每个sector包含32K的数据,地址是0 32000 64000 。。。。吗?
按照这个地址擦除应该不对,我按照0 32768 65536 。。。。。。这个地址擦除就能成功,但是这样的话每个sector的容量不就是32768个word了吗?一共64个sector这样算下来32768*64=2097152个word,整片存储一共不是才2M words吗?还请指点
,
Amy Luo:
是的,总共32Mbits=2M*16bits=2M words;
2M words包含8 banks,每bank 8个sectors,每sector 32k words =32*1024=32768 words ;每bank 8*32 =256K words=256*1024 words;
sector 地址应该是0 32768 65536
这个文档您看了没:Using the SM28VLT32-HT With Power Saving Features (Rev. A)