金色大元宝 发表于 2015-4-6 15:51:33

28335复位电路请教,偶尔会上电不工作。

本帖最后由 金色大元宝 于 2015-4-6 15:53 编辑

编辑原因,增加官方原理图,以供对照

28335上电复位电路请教,根据官方的原理图改编而来,但发现会随机出现上电不工作的情况,用的是30M有源晶振。
不工作的时候,示波器测试晶振输入脚30M没问题。CLKOUT脚,工作的时候正常输出37.5M,不工作的时候输出是3.75M,

不工作的情况是随机的,没有明显规律。

使用的复位是TPS767D301复位。

附部分原理图。



596142041 发表于 2015-4-6 16:12:06

我以前遇到过同样现象,28335上电不工作,后来我将30MHZ的有源晶振换成16MHZ的有源晶振就好了,直到现在没想明白咋回事

金色大元宝 发表于 2015-4-6 16:26:16

596142041 发表于 2015-4-6 16:12
我以前遇到过同样现象,28335上电不工作,后来我将30MHZ的有源晶振换成16MHZ的有源晶振就好了,直到现在没 ...

不是每次不工作,10次上电,可能会有1次不工作。和开关机长短,开关机频率都没有明显关系。随机出现。

金色大元宝 发表于 2015-4-6 16:46:49

最新发现, 上电不工作的时候,CLKOUT也是37.5M,那表示芯片复位成功,FLASH程序未执行吗?

hantnt 发表于 2015-4-6 18:59:31

我用BGA的lpc4357也出现过这种情况,100次有一次复位不成功,后来换了芯片

zhandouji 发表于 2015-4-6 20:34:39

你的那个复位的电容估计是小了,一般得1uf以上吧,记得有个文档上要求是10uf,我现在都是用的10uf,没有遇到问题。

zhandouji 发表于 2015-4-6 20:36:06

电容太小了,复位的低电平宽度不够,内核可能反应不过来。

金色大元宝 发表于 2015-4-6 20:46:43

zhandouji 发表于 2015-4-6 20:36
电容太小了,复位的低电平宽度不够,内核可能反应不过来。

您说的是c36吗?我记得复位电容是用在rc复位和手工复位的,这里的c36是参考官方原理图,个人认为是过滤尖峰脉冲的,不知道是不是我理解错误,

还有一点,我在dsp的去藕电容里,3.3和1.9各加了一个22uf的钽电容,增加电源稳定性,不知道对复位有没有影响

明天把钽电容拆了,c36加大试试

zhandouji 发表于 2015-4-6 22:06:26

28335的复位管脚上要有个大一点的电容,如果你的电路上只有这个C36,那可能就是问题所在了。

金色大元宝 发表于 2015-4-7 05:30:41

本帖最后由 金色大元宝 于 2015-4-7 05:43 编辑

zhandouji 发表于 2015-4-6 22:06
28335的复位管脚上要有个大一点的电容,如果你的电路上只有这个C36,那可能就是问题所在了。 ...

只有这一个呢,今天改成大电容试试

金色大元宝 发表于 2015-4-7 08:55:41

一上班就测试了。C36加大为10uF,不工作状态频率反而加大了。拆掉钽电容,区别不大。

怀疑是FLASH执行问题,在main函数第一行,插入强制延时1秒程序。 有改观,原先大概10几次会死机一次。现在30几次才会偶尔来一次。

而且上电不工作的时候,延时程序还是执行的。

金色大元宝 发表于 2015-4-7 09:10:56

应该和硬件电路没多大关系了。刚刚怀疑软件问题,把所有代码都精简。只开一个CpuTimer0中断,用来闪烁运行灯。开关机100次。没发现不工作的情况。

那要慢慢查了。把代码和中断挨个开起来,看看哪部分会引起这个问题。

xiaowenshao 发表于 2015-4-7 09:34:45

金色大元宝 发表于 2015-4-7 08:55
一上班就测试了。C36加大为10uF,不工作状态频率反而加大了。拆掉钽电容,区别不大。

怀疑是FLASH执行问题 ...

我之前也遇到过上电不工作的情况,10个板子里有3个板子是上电有时会遇到不工作,但是另外几个一直都是正常的,啥换电容啊,换复位芯片啊,都试过都不能解决,
我也怀疑过软件的问题,但是想不到软件上哪里会导致上电不正常工作,而且其他几个板子都是一直正常的啊

xiaowenshao 发表于 2015-4-7 09:36:33

金色大元宝 发表于 2015-4-7 08:55
一上班就测试了。C36加大为10uF,不工作状态频率反而加大了。拆掉钽电容,区别不大。

怀疑是FLASH执行问题 ...

既然延时程序都执行了那么程序上电就跑起来了,看不到程序工作的现象,说明程序跑死了

金色大元宝 发表于 2015-4-7 09:40:43

xiaowenshao 发表于 2015-4-7 09:36
既然延时程序都执行了那么程序上电就跑起来了,看不到程序工作的现象,说明程序跑死了 ...

是的。正在挨个查,XINTF,SCI, EPWM,挨个启用。看看是哪里的问题。

xiaowenshao 发表于 2015-4-7 09:45:40

金色大元宝 发表于 2015-4-7 09:40
是的。正在挨个查,XINTF,SCI, EPWM,挨个启用。看看是哪里的问题。

坐等你成功

金色大元宝 发表于 2015-4-8 10:34:02

xiaowenshao 发表于 2015-4-7 09:45
坐等你成功

问题找到了,程序跑死的问题,,出现在XINTF, 上电后会有XINTF外部SRAM的自检工作,会卡死在那里,麻烦帮我分析下,怎么提高XINTF的存取成功率?

void RAM_Test(void)
{
        volatile Uint16 *RAM_Addr;
        volatile Uint16 j;
        volatile Uint32 i;
        RAM_Addr=(volatile Uint16 *)0x100000;        //SRAM起始地址

        for(i = 0; i < 0x4000; i++){                //检测32K
                *(RAM_Addr + i) = 0x5555;                //
                for(j=0;j<10;j++){asm(" NOP");}        //延时
                //此处有加调试LED灯,上电卡死的时候不会执行到此处,应该是赋值的时候就卡死了。
        }
        for(i = 0; i < 0x1000; i++){                //检测32K
                if(*(RAM_Addr + i) != 0x5555){        //检测不同,则自检不通过
                        b_MacCheckResult = 1;break;
                }
                for(j=0;j<10;j++){asm(" NOP");}        //延时
        }

}

附SRAM原理图,难道是电容不够大?

金色大元宝 发表于 2015-4-8 10:36:39

SRAM存取速率应该没问题的,测试的时候增加调快过ACTIVE等参数。计算过耗时时钟,都可以正确存取。

// Zone 6------------------------------------
    // When using ready, ACTIVE must be 1 or greater
    // Lead must always be 1 or greater
    // Zone write timing
    XintfRegs.XTIMING6.bit.XWRLEAD = 3;                //默认 3,   //2//选择后面这个数值,SRAM存储速度加快一倍。
    XintfRegs.XTIMING6.bit.XWRACTIVE = 7;        //默认 7,   //4
    XintfRegs.XTIMING6.bit.XWRTRAIL = 3;        //默认 3,   //2
    // Zone read timing
    XintfRegs.XTIMING6.bit.XRDLEAD = 3;                //默认 3,   //2
    XintfRegs.XTIMING6.bit.XRDACTIVE = 7;        //默认 7,   //4
    XintfRegs.XTIMING6.bit.XRDTRAIL = 3;        //默认 3,   //2

    // double all Zone read/write lead/active/trail timing
    XintfRegs.XTIMING6.bit.X2TIMING = 1;        //默认 1,   //0

    // Zone will sample XREADY signal
    XintfRegs.XTIMING6.bit.USEREADY = 0;        //默认 1,   //0 因为XREADY未连接,所以设置为0
    XintfRegs.XTIMING6.bit.READYMODE = 1;   // sample asynchronous

    // Size must be either:
    // 0,1 = x32 or
    // 1,1 = x16 other values are reserved
    XintfRegs.XTIMING6.bit.XSIZE = 3;

现在使用的是默认参数,大侠们帮我分析下。问题会出在软件上还是硬件上?

金色大元宝 发表于 2015-4-8 18:30:01

顶上去,求助

金色大元宝 发表于 2015-4-9 10:52:04

找到原因了

hnstray 发表于 2015-9-30 16:54:06

好贴,长见识了
页: [1]
查看完整版本: 28335复位电路请教,偶尔会上电不工作。