This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

tps659113外部时钟切换问题

我们用的是APPRO的DM8127的IPNC.经查,原TPS659113的RTC时钟为RC时钟,每24小时会有约十分钟的误差。通过查寄存器DEVCTRL_REG其值为0X34.现在UBOOT中修改这个寄存器的值,无论是在配置中,还是在UBOOT最后端切换,UBOOT都无法执行下去,程序就定在那里。初始是在电源和时钟配置完成后,直接进行切换,发现死机。后根据一些单片机切换外部时钟的常识,对该时钟切换:即先掉时钟,用rtc_freeze函数,然后切换外部时钟。EXTERNEL_RTC_SOUCE.并延时等待相当长时间后,开启RTC时钟,RTC_RUN();结果发现仍然死机。代码如下:

rtc_freeze();
    externel_rtc_clock();//zjq20140901    
    for (i = 0; i<0xffff; i++)
    {
        for(j = 0; j<0xfffff; j++){

        }
        //    printf("%c",ti814x[i][j]);
        //    printf("\n");
    }
    rtc_run();

这些代码放在UBOOT那里,就死在那里,请问如何才能从RC切换到外部晶体而死机?

另:我在UBOOT正常启动的情况下,直接修改DEVCTRL_REG为0x14后,可以切换到外部晶体,且RTC时钟24小时为秒级误差。

  • Hi, 

    我在uboot命令行下面运行

    i2c md 0x2d 0x3f
    003f: 34 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00    44..............

    i2c mw 0x2D 0x3F 0x14

    i2c md 0x2d 0x3f
    003f: 14 34 00 00 00 00 00 00 00 00 00 00 00 00 00 00    44..............
    说明可以直接修改的。
    你如果代码里面改不了的话可以在bootcmd里面来加这句。


  • 基于上面的试验,我觉得修改应该没有那么复杂,你试过在代码里面直接修改这一位不行吗?

  • 直接用RUN_COMMAND()函数调用执行I2C WRITE 0X2D 0X3F 0X14即可。在tps659113_rtc中处任意修改函数,会导致电源都无法起来。而在UBOOT的MAIN函数里修改POWER_control函数,增加切换功能,都会死机。所以最的还是采用了直接调用命令脚本的方式。