DSP篇--C6701功能调试系列之SRAMADC喂狗测试

Posted nanke_yh

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了DSP篇--C6701功能调试系列之SRAMADC喂狗测试相关的知识,希望对你有一定的参考价值。

目录

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

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

以上是关于DSP篇--C6701功能调试系列之SRAMADC喂狗测试的主要内容,如果未能解决你的问题,请参考以下文章

DSP篇--C6701功能调试系列之 UART串口测试

DSP篇--C6701功能调试系列之 UART串口测试

DSP篇--C6701功能调试系列之 FLASH测试

DSP篇--C6701功能调试系列之 FLASH测试

DSP篇--C6701功能调试系列之CAN总线测试

DSP篇--C6701功能调试系列之CAN总线测试