怎样通过内部的1.2v基准电压去反推算出VDD的大小,我所想问的其实是这个,忘掉什么NTC测温度,什么LDO耗电吧。 一个3.7V的锂电池,不通过LDO直接接在STM32f103c8t6的VDD.在使用的过程中,VDD会从4.2V慢慢降低到3.7v,那么怎样知道此时VDD到底是多少呢? 这其实是内部1.2V的设置的目的和基本应用。如果内部1.2v不好理解,我们不妨想像在外面接个1.2V的LDO,这LDO的输出是在VDD的变低,一直稳定在1.2V。 请看附图 (3条消息)stm32 精确电压测量法(内部参考电压) - qq_34672688的博客 http://blog.csdn.net/qq_34672688/article/details/91874371 网上的方法如下: (3条消息)STM32内置参照电压的使用(转) - oushaojun2的专栏 http://blog.csdn.net/oushaojun2/article/details/7735286 |
【MCU实战经验】基于STM32F103C8T6的hart总线调试器设计
求教STM32F103进入STOP模式后用外部中断唤醒的问题
基于STM32F103RCT6的无源蜂鸣器音乐播放(生日快乐歌)
STM32F103c8t6有没有DAC 功能?
STM32F103x中文数据手册
新手求教,为何在我电脑上找不到STM32F1Xx.h文件
金龙107例程汇总(STM32F107)
万利STM32F107VC 原理图
STM32F103 ADC多通道检测必须要DMA吗?
【官方例程】STM32F107以太网官方例程
但是如果AVDD的电压不知道是多少的话,那么通过1.2V来反推;
假如你在通道17通道采到的码值为 1800,但是现在通道0采到的码值依然是4095;
那么通道0上是实际电压换算就是,(1.2/1800)*4095 = 2.73V
麻烦请看完
17通道的码值是会变的,只是电压不变。
17通道能采到码值为1489的机率很少,只有你的AVDD是准确的3.3V时,才有可能采到1489
评分
查看全部评分
我把我的项目附上,大家可以直接在上面尝试。STM32F103C8T6的规格书上也附上,大家也可在上面研究下。
网上的链接如下:
(3条消息)STM32内置参照电压的使用(转) - oushaojun2的专栏 http://blog.csdn.net/oushaojun2/article/details/7735286
(3条消息)stm32 精确电压测量法(内部参考电压) - qq_34672688的博客 http://blog.csdn.net/qq_34672688/article/details/91874371
STM32F103C8T6.pdf
2019-12-16 11:37 上传
点击文件名下载附件
下载积分: ST金币 -11.06 MB, 下载次数: 23, 下载积分: ST金币 -1
stm32f103c8t6_ADC - å¯æ¬.rar
2019-12-16 11:38 上传
点击文件名下载附件
下载积分: ST金币 -19.01 MB, 下载次数: 497, 下载积分: ST金币 -1
ADC_CHANNEL_VREFINT 即为 ADC_CHANNEL_17采通道17的方式,除了不用作用IO外,其它与通道0到15没有区别。
STM32F103C8T6 没有单独的外部模拟参考电压,是与AVDD共用的,即3.3V。
那么当你在某个ADC通道接上3.3V时,比如通道0,通道0采到的码值就是4095;
如果AVDD是准确的3.3V的话,理论上1.2V参考电压,即通道17的码值为(4095/3.3)*1.2 = 1489;
但是如果AVDD的电压不知道是多少的话,那么通过1.2V来反推;
假如你在通道17通道采到的码值为 1800,但是现在通道0采到的码值依然是4095;
那么通道0上是实际电压换算就是,(1.2/1800)*4095 = 2.73V
在实际工作中也解决过类似问题,在项目中公司同事用了一片STM32F103RBT6,外加一片AD7606。
由于AD7606通道不够用,精度要求高的用AD7606采集,精度要求低的用STM32片上ADC采集。
在实测过程中,STM32片上ADC采集的电压误差大,并且一致性相当差。分析原因是供电电压3.3V受干扰,导致对ADC影响大。
此时正好有AD7606的内部2.5V参考电压可以输出,STM32片上ADC通道还有几个预留引出,于是将2.5V的参考电压接到STM32的一个预留ADC通道上。经实验,通过一路ADC采集2.5V电压作为参考,反推其余ADC通道电压值,效果相当好,采集固定电压值ADC精度达到mV级。
只要你告诉我怎样读1.2v基准电压的AD值就行了,可以在我的项目文件里帮标下吗?你说还要读取的是哪个寄存器?对于STM32F103C8T6。
toofree,多谢你的指教。
STM32F103C8T6 没有单独的外部模拟参考电压,是与AVDD共用的,即3.3V。
那么当你在某个ADC通道接上3.3V时,比如通道0,通道0采到的码值就是4095;
如果AVDD是准确的3.3V的话,理论上1.2V参考电压,即通道17的码值为(4095/3.3)*1.2 = 1489;
这样说的话,其实程序能实际读出IN17的话,它的AD值也应该是大约是 1489才对。
那在VDD由3.3v慢慢降到2.8V时,真要再读出IN17,它的AD值也不会变的吧?还是大约1489吗?
如果理解程不变的话,那其实也没必要专门去读下IN17了,直接就还是用1489来算就行了。
一开头,其实,我们也没必要通过实际去读IN17,因为我们通过理论就能算出是1489了。
所以,我还想就上面的问题请教下你和大家。
明白了,
多谢指教
对了,我其实还是想问一下,这内部的1.2v基准电压,应该也是通过MCU的VDD稳压得到,我们应该可以把它理解成内部做了个1.2V的LDO。对于稳压输出1.2V这么低的输出,在VDD从3.3V慢慢降到2.8v,能让这内部的LDO输出一直都稳压在1.2v应该是没有问题的,对吧?
那么,这1.2V内部是接到IN17,这样,读取IN17的AD值,应该是一直不变的。因为不管VDD是3.3V还是2.8V,这IN17的模拟输入电压一直都是1.2v,对吧?这AD值,只跟输入量有关。
对于普通的AD通道而言,(VDD通过两个电阻分压输入的话)如果是要把AD值转换成分压点的电压值,这才跟VDD有关。