问:最近在使用STM32F103RB时,出现了断电后再上电时备份数据区数据丢失的现象,不知道是什么原因,最初在设计的时候芯片核的电源(数字部分电源)和ADC的电源是相连的,备份数据区的数据没有丢失,现在将ADC的电源单独采用一个电压基准芯片供电后,断电再上电发现备份数据区的数据丢失了,全部为0包括时间。如果将现在的电路板的ADC电源链接到数字电源上,数据就不丢失了。为提高ADC精度,又不丢失备份数据区数据,该如何做?
答:在断电时,请保证同时切断VDD和VDDA 请用示波器看看,怀疑断电时你的VDDA下降的太慢,而VDD很快消失。在断电时,应该保证同时切断VDD和VDDA。
问:RTC备份数据区与ADC电源关系???不管是VDDA下降慢,还是VDD下降慢,我认为这个芯片的工作与否不应该受VddA的影响,如果说备份电池数据受VDDA的影响的话,应该在手册中有说明,我还认为当不使用ADC时我们可以不给ADC供电,为什么说呢,当模拟、数字电路分离时,模拟电源可能故障失电,数字部分存在电源,当然正常工作的CPU可以通过程序检查到ADC部分出错,现在根据实验发现,ADC失电后芯片根本不工作。如果说一定要同时切断电源的话就必须连接到同一电源上,要不肯定丢数据呀。
我就是不明白VDDA必须要先断电,这是为什么呢。我总是认为这个问题不应该出现,至少我认为VDDA自然为独立电源引脚,为什么内核工作受VDDA的影响呢?
答:RTC备份数据区与ADC电源关系,以及VDD与VDDA的关系,下面贴图中的2.3.11节与STM32F103RB数据手册中的2.3.9节内容相同,可以对照着看:
从关于VDDA的说明中可以看到,VDDA不单是为ADC供电,它为所有的模拟部分供电,特别是复位模块,这就回答了你的“不使用ADC时我们可以不给ADC供电”这个问题。 关于VBAT部分说明了当关闭VDD时,通过内部电源切换器,VBAT为RTC、外部32kHz振荡器和后备寄存器供电。这里说的内部电源切换器就是下图中靠近VBAT的“供电开关”,下面这张图就是上面贴图中提到的图12:
这张图中没有说明这个供电开关是由哪个电源控制,但从图上看可以认为是VDD控制。
关于你的问题(包括在前面提的问题),我是这样分析的:VDD先掉电,在VDDA还没有完全掉电时,因为内部漏电流,上述供电开关并没有切换到VBAT,而此时VDD已经消失,造成RTC内容丢失。正因为如此,数据手册上才会要求VDD应与VDDA同源,同时他们之间的电压差不能超过300mV。
如果这个供电开关是由VDDA控制,那么你看到的现象就是显而易见了。不过这一点我需要确认。
"AN2586-STM32F10xxx硬件开发入门"中说明:供了电开关由PDR控制在应用笔记《AN2586-STM32F10xxx硬件开发入门》中,我找到上面所提到的供电开关是由VDDA控制的清楚说明。
这里是有关部分截图,这个文档的中文译文在ST MCU中文网页上:
文中红线划出的部分写明:VBAT的开关由复位模块内的掉电复位(PDR)电路控制。再根据上面提到的部分,复位模块由VDDA供电。所以当VDDA晚于VDD调电时,VBAT的开关还没有切换到VBAT,VDD已经消失了,RTC的内容自然也就消失了。
关于前面提到的多电源问题,手册上已经明确写明,VDD必须与VDDA同源,所以不应理解为是多电源供电。
至于VBAT缺失和电池没有电是2个问题,VBAT缺失的情况时,电路上有相应处理,所以不会有问题;而电池没有电的情况下,并不表示VBAT信号悬空,此时VBAT是通过电池接地,也不会有问题,只不过RTC的内容不能继续维持。电池没有电时好像应该是等效于一个电容加一个电阻,具体什么样的参数我不太清楚,但我可以肯定不是一个无穷大的电阻。