贴一个以前在论坛上写的 avr扩展ram稳定性的测试
---------------------------
mcu使用:M64L, 锁存用的SN74AHC573。
系统用UT62256CPC-70LL的dip封装芯片,
晶振:14.7556MHz
编译器:GCC-AVR
现在发现了一个问题(系统自带故障记录):
系统正常运行的时候,偶尔会出现读XRAM的数据错误,系统运行的时候对xram的数据进行校验。将算出的校验数据同里面存放的校验数据进行比较。发现不对。
出现这样问题的电路板的现象:
1、有的板子一直比较正常,有的经常能出现。
有问题的的板子,两三天下来,可能会出现个5、6次,时间不固定,也没有规律。
2、当发现错误时,重新校验一边,还是能够发现错误。
把XRAM换成HY62256B LLP-70的,运行了一天多,没发现,由于只有一片这个芯片,所以测试带有偶然性!
-------------------------------
现在重新编了一个测试软件,专门测试62256.
测试包括:
STEP1: 全部赋值0X55,再取出来同0XAA相与后存入,然后读取判断是否为0
STEP2: 全部赋值0X55或者0XAA ----然后读取判断是否正确。
前两步基本不会测出什么问题,有问题也基本是硬件短路或者虚焊引起。下面两步测试的时候比较容易出错
STEP3: 这步比较麻烦,测试粘连性吧。
1、首先全部清零。
2、向第三个单元写0XFF,然后测试第1、2、4、5个单元的内容。
3、如果正常的话,清零第三个单元,测试第四个单元,这样一直往下测试。
STEP4: 对这么多连续的外部单元,从外部的0x0000单元开始赋值,赋值为1,第二个单元为 2,即每个单元的值都不一样。
最后再从0地址单元开始读取判断。
测试的结果发现:
1、STEP1,STEP2 没报错过
2、出错比较多的是 3、4步测试。
把出错时的状态发出来发现:例如:
待测单元为n,读两次,第一读出的值放到 tmp1中,第二次放到tmp2中
有时发现,出现错误的时候,tmp2的值是个正常值。而tmp1的值就不正常。
这是一次判断,当发现错误的时候,我再做一次读取判断,基本上就没错误了。
发现错误是真对UT62256的,
测试其他的UT62256时,也还是能发现错误。测试HY62256(仅有的一片)时,一次也没发现错误。
----------------------------------------------------------------
从测试的情况看来,ram中的数据应该没错,单片机的程序应该也没问题。问题是读的过程中,有时会读到非正常的数据。而该数据对应的单元实际数据应该是正确的。
我试过改为内部8m晶振,而且读写ram时加入等待周期。还是有出错的时候。
注:
1、外部ram全部分为-->高地址存储器区;SRL2 SRL1 SRL0=0 0 0;即 从 0x1100开始的一个整块
2、连续进行测试,出错的率是几十次有一次吧。或者有时几率更小一些。
用户824863 2010-8-28 12:11