[国产单片机]

AD转换

[复制链接]
1452|22
手机看帖
扫描二维码
随时随地手机跟帖
Royal7z7z|  楼主 | 2018-12-4 11:46 | 显示全部楼层 |阅读模式
输入电压是3.7v,分压后输入电压是2.4v.AD采集到电池电压值为0.25,公式是3.3*(get_ad/4096)吗?

相关帖子

神的棋子| | 2018-12-4 11:52 | 显示全部楼层
ADC的基准是啥?多少位的采样值这些都没有……

使用特权

评论回复
ningling_21| | 2018-12-4 13:26 | 显示全部楼层
扩大10倍就很接近了

使用特权

评论回复
Royal7z7z|  楼主 | 2018-12-4 14:25 | 显示全部楼层
神的棋子 发表于 2018-12-4 11:52
ADC的基准是啥?多少位的采样值这些都没有……

ADC的基准是内部基准电压,12位的采样值

使用特权

评论回复
Royal7z7z|  楼主 | 2018-12-4 14:26 | 显示全部楼层
ningling_21 发表于 2018-12-4 13:26
扩大10倍就很接近了

扩大十倍是乘10的意思吗?呜呜

使用特权

评论回复
评论
ningling_21 2018-12-4 15:29 回复TA
没错 
Royal7z7z|  楼主 | 2018-12-4 14:27 | 显示全部楼层
内部基准电压测量是3V,ADC存放在两个八位数据寄存器,一个是高八位一个是低四位

使用特权

评论回复
ningling_21| | 2018-12-4 15:29 | 显示全部楼层
Royal7z7z 发表于 2018-12-4 14:25
ADC的基准是内部基准电压,12位的采样值

基准电压是多少?

使用特权

评论回复
Royal7z7z|  楼主 | 2018-12-4 15:56 | 显示全部楼层
ningling_21 发表于 2018-12-4 15:29
基准电压是多少?

我测出来的基准电压是3.3v

使用特权

评论回复
神的棋子| | 2018-12-4 17:03 | 显示全部楼层
V待测 = V基准*(采样值/4096)

使用特权

评论回复
评论
Royal7z7z 2018-12-6 16:37 回复TA
@神的棋子 :嗯,是的,内部有一个0.6-1.2v的基准电压,我测量待测电压的参考电压是3.3V,规格书上有参考公式。 
神的棋子 2018-12-6 08:53 回复TA
@Royal7z7z :基准电压不是测出来的,是你测量待测电压的参考电压,一般单片机的ADC基准电压要么是VDD,要么是内部的电压基准,规格书上有说明的。 
Royal7z7z 2018-12-4 17:12 回复TA
V基准我看手册解释是:开启AD转换并将AD通道选择内部电压基准通道,测试其AD值。该值表示的是当前电源电压下,AD输入口1.2V时,芯片所测试得到的AD值。请问是这样的吗 
ningling_21| | 2018-12-6 13:12 | 显示全部楼层
Royal7z7z 发表于 2018-12-4 15:56
我测出来的基准电压是3.3v

验证:输入3.3V电压,得到的AD值应该是最大值0XFFF(12位AD),输入接地,得到的AD值应该是0

使用特权

评论回复
Royal7z7z|  楼主 | 2018-12-6 16:40 | 显示全部楼层
ningling_21 发表于 2018-12-6 13:12
验证:输入3.3V电压,得到的AD值应该是最大值0XFFF(12位AD),输入接地,得到的AD值应该是0 ...

3.3V的输入电压,我测出来的电压值是1.81V.可能是我以前算错了,把高八位数据寄存器(0XFF)的值直接加上低八位(0xff),后来我上网查了一下,才想起来是把低八位放到高八位后面。呃呃呃

使用特权

评论回复
评论
ningling_21 2018-12-6 18:29 回复TA
注意 数据对齐 方式 
Royal7z7z|  楼主 | 2018-12-6 17:20 | 显示全部楼层
还有一个问题,两个16位数相乘怎么实现比较好,我网上查的是左移和加法

使用特权

评论回复
ningling_21| | 2018-12-6 18:29 | 显示全部楼层
Royal7z7z 发表于 2018-12-6 17:20
还有一个问题,两个16位数相乘怎么实现比较好,我网上查的是左移和加法

用的汇编吗

使用特权

评论回复
Royal7z7z|  楼主 | 2018-12-7 08:52 | 显示全部楼层

是的,两个十六位的数相乘,用移位怎么实现呢,我网上百度说是左移和加法

使用特权

评论回复
神的棋子| | 2018-12-7 08:53 | 显示全部楼层
Royal7z7z 发表于 2018-12-6 17:20
还有一个问题,两个16位数相乘怎么实现比较好,我网上查的是左移和加法

如果是汇编的话肯定是左移和加法是最简单也是效率最高的,如果是C的话编译器会处理好。

使用特权

评论回复
Royal7z7z|  楼主 | 2018-12-7 09:32 | 显示全部楼层
神的棋子 发表于 2018-12-7 08:53
如果是汇编的话肯定是左移和加法是最简单也是效率最高的,如果是C的话编译器会处理好。 ...

两个16位数据比如12位的AD数据是1000 1111 0101 0000乘00....11怎么左移和相加呢?

使用特权

评论回复
神的棋子| | 2018-12-7 10:23 | 显示全部楼层
Royal7z7z 发表于 2018-12-7 09:32
两个16位数据比如12位的AD数据是1000 1111 0101 0000乘00....11怎么左移和相加呢? ...

搜一下匠人笔记,有一篇专门说明的,不过很老了, 不知道现在还能不能找得到

使用特权

评论回复
Royal7z7z|  楼主 | 2018-12-8 10:01 | 显示全部楼层
神的棋子 发表于 2018-12-7 10:23
搜一下匠人笔记,有一篇专门说明的,不过很老了, 不知道现在还能不能找得到 ...

原来是一本书啊,。。。。还是解决不了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

9

主题

35

帖子

1

粉丝