目录
1、SRAM测试
1.1 SRAM读写功能测试
1.2 EDAC测试
2、ADC测试
3、DSP喂狗测试
        调试的前期准备可以参考前面的博文:DSP篇--C6701功能调试系列之前期准备_nanke_yh的博客-CSDN博客 https://blog.csdn.net/nanke_yh/article/details/128277631
https://blog.csdn.net/nanke_yh/article/details/128277631
1、SRAM测试
1.1 SRAM读写功能测试
目的:测试SRAM的读写功能。
方法:向SRAM的地址区域(0x0200,0000~0x0201,FFFF)不停的写入数值,再从头到尾读取写入的数,测试其是否存在读写错误。读写数值有:0x0,0x5555,5555,0xffff,ffff,0xaaaa,aaaa。

代码示例:
Uint32* dwdCurAddr_ptr = (Uint32* )dwdStartAddr;
/*SRAM 写0 */
for (i=0; i<dwdDataLen_dwd; i++)
{
    (*dwdCurAddr_ptr) = 0;
    dwdCurAddr_ptr++;
}
/*读SRAM 0*/
dwdCurAddr_ptr = (Uint32* )dwdStartAddr;
for (i=0; i<dwdDataLen_dwd; i++)
{
    if(0 !=(*dwdCurAddr_ptr))
        error++;
    dwdCurAddr_ptr++;
}//通过返回error值来判断读写过程中是否出错注意:读写过程中,指针地址需重新赋值。
1.2 EDAC测试
目的:测试SRAM的自检功能,当写入的数被记录后,再次读时,如果不相等则会出错。
方法:不停的读取SRAM的地址区域内的数值,通过示波器观察是否出现高频信号(错误信号)。
注意:写入的数不能覆盖全片SRAM时,从头到尾的读取则会出现错误信号。因为上电启动搬运数据,未写部分就会出现错误。
代码示例:
while(1)//不停读SRAM值(实际写入长度0x40,全长0x1fffff)
	{
		dwdCurAddr_ptr = (Uint32* )0x02000000;
		for (i=0; i< 0x1fffff; i++)// 出错而for (i=0; i< 0x40; i++)//不出错
		{
			error = (*dwdCurAddr_ptr);
			dwdCurAddr_ptr++;
		}
	}2、ADC测试
目的:采集5路电压值。
方法:向0x03030004位置写数值,再从0x03030008读取写入的数。读写数值有:0x05,0x06,0x07,0x08,0x09。
注意:读写的间隔需要较长的时间延迟,否则会导致。
代码示例:
   ADvalue = ADtest(0x05);
    Candelay(5000);
    dwSrcAddr_ptr = (Uint32* )ADRtest;
    ADvalue = (*dwSrcAddr_ptr)&0xFFFFFFFF;
ADValueC = ADValueChange(ADvalue);//转换值
Uint32 ADtest(Uint32 value1)//调用函数
{
   	Uint32 value=0;
	Uint32* dwSrcAddr_ptr;
	write_8data(ADWtest,value1);
	Candelay(10000);
	dwSrcAddr_ptr = (Uint32* )ADRtest;
	value = (*dwSrcAddr_ptr)&0xFFFFFFFF;
	return value;
}
//通过代码转换直接在软件中判读,减少人工手动计算,提高效率
double ADValueChange(Uint32 ADvalue)
{
    Uint32 temp[14];
	Uint32 i = 0,value = 0;
	double Cvalue = 0.0;
	value = ADvalue & 0x3FFF;//取低14位
	//value值14位位置颠倒
	for(i = 0;i < 14;i++)
	{
	   Uint32 j = 14-1-i;
	   temp[j]=(value >> j) & 0x00000001;
	}
	for(i = 0;i < 14;i++)
	{
	   Uint32 j = 14-1-i;
	   Cvalue += temp[i] << j;
	}
	Cvalue = Cvalue*5/16383;//输入电压就是5V,十四位(0x3FFF)的值16383
	return Cvalue;
}3、DSP喂狗测试
目的:测试FPGA的复位功能,若不停的写入值,则不复位,若在一段时间内(t)没有收到该值,则会复位,程序会跑飞。
方法:向0x0303,000C位置不停的写入0x03d39000。
注意:①t值应当考虑上电到测试程序运行的时间差,太小则上电就在复位无法达到测试效果,测试中t设置为20s。
②每次喂狗的时间间隔根据硬件师要求设置(100ms)。
代码示例:
dwdDestAddr_ptr = (Uint32*) 0x0303000C;
(*dwdDestAddr_ptr) = 0x03d39000 & 0xffffffff;
Candelay(2778);//100ms延迟约为2778


















