430F5418的RTC能够用吗?

楼主
430F5418的RTC能够用吗?
设计了一个产品,本来用F247的,后来看到新出来的5418,RAM大了好多,程序也可以多4倍,特别看中的竟然有个硬件实时钟,所以毫不犹豫的就选它了,可是一用下来,却发现有很多毛病,也许是TI公司受到ARM挤压,匆忙弄了一个上去的吧,下面是我发现的问题:1,RTC的读出没有问题,但是它的写入却有非常大的问题,在计数器状态下写入还可以,但是在实时时钟状态下写入非常难,我试验了多次,写分和秒没有问题,写小时却经常写不进去!或者你写了个07H,读出来就是06H,但是有时又可以写进去,开始可以写进去几次,后来就难了!还有日也是这样的,都是要不写错,要不根本写不进去,我后来想,干脆写完就读,只要读出来不对就继续写,这样总行了吧?可是有时没有问题,但是有时就死在里面了,就是说,不管你怎么写,也写不进去,那只能是死循环了!这个先不谈,另外还有一个根本问题:它的复位是计数器状态,如果你要把它改变成实时时钟,那就会把时间值年月日全部清除的!试问,我们要实时时间干嘛,不就是为了关机状态下它能够继续走,能够准确的记录时间吗?如果我们用的电脑每天开机都要做设置时间的工作,那不是太好笑了吗?不知道TI的设计工程师怎么想的,你要不开机复位不要默认计数器状态,要不就不要画蛇添足的在改变状态时把它清0,也许有人会说,你不会把它复位前保存起来,复位后再写进去吗?但是这样一是会造成时间不准确,二是许多情况下复位是不能预先知道的!比如看门狗复位,当碰到干扰时自动恢复了,可是时间没有了!你说这样的RTC能够用吗?所以我说它只是为了竞争勉强凑进去的。
    请看我们这个论坛翻译的比较雷人的关于RTC的读法:为了安全的读取计数器数据,多次读取RTCRDY位取平均值和同步读取操作等上述方法都可以被使用,可以多次读去计数器寄存器,由软件多次读取来确定正确的数据。取平均值?显然不是指RTCRDY位了,那么时间是可以取平均值的吗?如果读一次10点,读一次8点,那么正确的时间应该是9点?真是太可笑了,后面那句“由软件多次读取来确定正确的数据”其实也是不对的,软件怎么能够判断时间啊?除非是不可能发生的时间,比如32号61分钟!否则就不可能判断那个是正确的时间,只能是多次读,取多的那钟,但是前提是不能读出来有很多不一样的数值。但是我用了多年的实时时钟芯片,从来就没有这样读的,也不可能在MCU复位时就需要重新设置把时间值写进去,这样启不是变成玩具了?
1楼
楼主写得很详细,但当中可能存在着一些误解。相信TI的RD不会那么差。
对于你的其中一个问题。RTC由第一次设置指定的时间后,以后断电后需要后备电池来提供给RTC工作。也就是说第一次上电后由计数模式改定时模式,这样一直工作在RTC模式。所以要靠电池为提供MCU的工作,需要做掉电检测。检测掉电后使MCU处理低功耗模式,此时RTC在运作中。这样就不存在着再次上电被复位。
其他的问题我未一一证实,相信有不少用户也用过RTC的时钟。希望他们能给你意见。
2楼
很高兴看到DC的回答,但是我上面写的很清楚了,很多情况下复位是不能够避免的,比如看门狗复位,如果一个系统仅仅指望它开机或者电池工作时只复位一次是不可能的。
3楼
其实430的芯片确实有很多问题,我们公司是它的大用户,我也用F427,F135,F435做过几款产品,它的IO口复位是不可靠的,就是说,进入低功耗状态时,你按中断有时它是醒不过来的,这个毛病我和TI的技术支持也反映过,一百次有几次会死了,得把电池拆下来过一回重新装回去才行,这样有时我们在客户面前很难堪,我做的系统都是断电进入低功耗的,但是用其他公司的芯片就没有这个问题,后来我把它的IO口和复位连在一起了,开机进入非屏蔽状态,关机进入复位状态,才解决这个问题。另外它的12位AD也是总出事情,会莫名其妙的坏了,就是数据大了好多,其他正常,如果换了新的就好了,我做设计时就坏了好几片,435,135都是,就是AD坏,没有任何原因。我后来吓的手都不敢碰,怕静电把它弄坏了,这一点PIC比它好的多,焊反了,烫下来重新装回去也没有事情,我手里其他美国的芯片没有碰到坏过的,就是碰到430会,感觉它好象是美国的乡镇企业,哈哈
4楼
楼主说的RTC情况有向TI FAE反映吗?他们怎么表示,有没有给出一个好的解决办法.如果有,请告诉大家一下.
确实,复位的情况确实不可能完全没有.如果MCU复位了使RTC从计时模式变为计数模式的话确实令人无法接受.这样还不如用外部的RTC芯片算了.也不贵.
另外,请教楼主说的“把它的IO口和复位连在一起了,开机进入非屏蔽状态,关机进入复位状态,才解决这个问题。”具体是怎样做?能否详尽一点的做法和原理。
关于ADC12模块的问题,TI的FAE又是怎样回应的?
楼主的真枪实干和问题的反映情况有助于我们了解得更多真相,谢谢楼主!
5楼
DC:不好意思,工作忙,没有很多时间上网,所以回答晚了,以前我向FAE反应过的问题,一般都是态度很热情,然后回点资料,如果真的问题,那还是要问总部的,在等待的过程中就忘记问题了。
    因为在进入睡眠时,用外部IO口中断换醒不可靠,所以我后来把要换醒的IO口和复位连接在一起了,这样按了这个键肯定能够醒来,但是这样正常工作时会产生问题,如果在存取数据时按这个键,会立即复位,造成有可能数据出错,所以在刚上电时把复位口设置成非屏蔽中断口,这样当按下键时进入非屏蔽中断,在中断程序中设一个关机标志位,然后返回到正常程序中做完所有工作后再关机进入睡眠,也可以做成象手机关机那样在中断程序中判断这个IO口是否一直按着超过2秒,不超过就返回什么也不要做,超过了就设置的关机标志(这在手持仪表中经常会用到,防止意外关机),由主程序进入睡眠。进入睡眠前,必须把它还设置成复位口,这样按一下肯定百分之百能够醒过来。

电脑版 Page created in 0.0625 seconds width 2 queries.