OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 41835|回复: 36

ADC实验中的这句怎么理解temp=(float)adcx*(3.3/4096);

[复制链接]

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2011-5-19
在线时间
0 小时
发表于 2011-6-29 19:58:03 | 显示全部楼层 |阅读模式
我好像知道是算出整数部分,但是不理解adcx*(3.3/4096)是什么意思
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

1

主题

3

帖子

0

精华

初级会员

Rank: 2

积分
73
金钱
73
注册时间
2017-7-30
在线时间
10 小时
发表于 2017-9-12 17:25:17 | 显示全部楼层
正点原子 发表于 2011-6-29 20:00
回复【楼主位】黑雨:
---------------------------------
参考电压3.3V,被分成4096份

原子哥,12位全为1 也才4095,如果是3.3/4096,即使最大值4095*(3.3/4096)也达不到3.3V啊
回复 支持 1 反对 0

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2011-6-29 20:00:21 | 显示全部楼层
回复【楼主位】黑雨:
---------------------------------
参考电压3.3V,被分成4096份
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

1

主题

3

帖子

0

精华

新手入门

积分
27
金钱
27
注册时间
2011-5-19
在线时间
0 小时
 楼主| 发表于 2011-6-29 20:53:21 | 显示全部楼层
回复【2楼】正点原子:
-------------------------------
谢谢原子 我懂了
回复 支持 反对

使用道具 举报

5

主题

52

帖子

0

精华

初级会员

Rank: 2

积分
125
金钱
125
注册时间
2012-7-28
在线时间
6 小时
发表于 2012-8-8 11:48:37 | 显示全部楼层
感谢楼主的问题,我也学习了
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2013-12-13
在线时间
0 小时
发表于 2014-5-8 10:44:52 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
为什么是4096份,问不是别的呢?
回复 支持 反对

使用道具 举报

0

主题

2

帖子

0

精华

新手入门

积分
22
金钱
22
注册时间
2013-12-13
在线时间
0 小时
发表于 2014-5-8 10:46:33 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
明白了 12位的ADC
回复 支持 反对

使用道具 举报

7

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2014-7-12
在线时间
0 小时
发表于 2014-8-1 12:52:23 | 显示全部楼层
回复【2楼】正点原子:
---------------------------------
原子哥,请问后面那几句
temp-=adcx;
temp*=1000;
LCD_ShowNum(172,150,temp,3,16);
是什么作用呀?
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-2 00:21:29 | 显示全部楼层
回复【7楼】beiker:
---------------------------------
减去整数部分
放大1000倍
显示小数部分。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

7

主题

31

帖子

0

精华

初级会员

Rank: 2

积分
79
金钱
79
注册时间
2014-7-12
在线时间
0 小时
发表于 2014-8-5 18:13:26 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
哦哦,这么高级呀,好的谢谢原子哥,我再研究研究。
回复 支持 反对

使用道具 举报

1

主题

2

帖子

0

精华

新手上路

积分
29
金钱
29
注册时间
2014-8-27
在线时间
1 小时
发表于 2014-8-27 11:37:28 | 显示全部楼层
回复【7楼】beiker:
---------------------------------
原子哥,这个ADC的采样值是怎么来的?开发板实验上显示3657,电压是2.946V.我现在不明的3657是怎么来的?
u16 Get_Adc(u8 ch)     
{
ADC_RegularChannelConfig(ADC1, ch, 1, ADC_SampleTime_239Cycles5 );       
ADC_SoftwareStartConvCmd(ADC1, ENABLE); 
while(!ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC ));
return ADC_GetConversionValue(ADC1); 
}
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-27 23:24:41 | 显示全部楼层
直接读取ADC转换结果的寄存器的值.
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

20

主题

44

帖子

0

精华

初级会员

Rank: 2

积分
147
金钱
147
注册时间
2012-8-24
在线时间
3 小时
发表于 2014-8-28 10:33:21 | 显示全部楼层
回复【11楼】正点原子:
---------------------------------
原子哥,请问我用ADC123_IN1 ADC123_IN2 ADC123_IN2 也就是PA0 1 2 口分别显示同一路电压,  但为什么只有PA1是正确的(经过万用表测量)。其他两路都相差很大。 板子我看PA0 1  2 口都没接外设。
void  Adc_Init(void)
{    
  RCC->APB2ENR|=1<<2;    
GPIOA->CRL&=0XFFFFF000  
RCC->APB2ENR|=1<<9;    //ADC1?±??????   
RCC->APB2RSTR|=1<<9;   //ADC1????
RCC->APB2RSTR&=~(1<<9);//?????á??     
RCC->CFGR&=~(3<<14);   //·????ò×?????  
RCC->CFGR|=2<<14;        

ADC1->CR1&=0XF0FFFF;   //?¤×÷????????
ADC1->CR1|=0<<16;      //?????¤×÷????    0== 0000
ADC1->CR1&=~(1<<8);    //·??¨?è????   
ADC1->CR2&=~(1<<1);    //????×???????
ADC1->CR2&=~(7<<17);    
ADC1->CR2|=7<<17;    //?í??????×???  
ADC1->CR2|=1<<20;      //????????????·?(SWSTART)!!! ±???????????????????·?
ADC1->CR2&=~(1<<11);   //??????  
ADC1->SQR1&=~(0XF<<20);
ADC1->SQR1&=0<<20;     //1??×????????ò?ò???? ????????×??????ò?ò??1     
ADC1->SMPR2&=0XFFFFF000;//?¨??0,1,2,3???ù?±??????   
        ADC1->SMPR2|=7<<9;      //?¨??3  239.5????,?á?????ù?±???????á?????·??  
ADC1->SMPR2|=7<<6;      //?¨??2  239.5????,?á?????ù?±???????á?????·??  
ADC1->SMPR2|=7<<3;      //?¨??1  239.5????,?á?????ù?±???????á?????·??  
ADC1->SMPR2|=7<<0;      //?¨??0  239.5????,?á?????ù?±???????á?????·??  

ADC1->CR2|=1<<0;     //????AD×????÷  
ADC1->CR2|=1<<3;        //??????????×?  
while(ADC1->CR2&1<<3);  //??????×??á??     
ADC1->CR2|=1<<2;        //????AD??×?    
while(ADC1->CR2&1<<2);  //??????×??á??
//???????í???è??????????×?????????×??á???±??????????  
}   
//获取电压值
u16 Get_Adc(u8 ch)          //     ch  为  0   1   2  
{
//?è??×????ò??     
ADC1->SQR3&=0XFFFFFFE0;//???ò?ò??1 ?¨??ch
ADC1->SQR3|=ch;        
ADC1->CR2|=1<<22;       //???????ò×????¨?? 
while(!(ADC1->SR&1<<1));//????×????á??      
return ADC1->DR; //·???adc??
}
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-8-28 23:36:34 | 显示全部楼层
回复【12楼】firexxl:
---------------------------------
是不是接了其他外设?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-9-3
在线时间
2 小时
发表于 2014-10-18 00:18:37 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
原子哥,temp-=adcx;这句程序为什么只是减去整数部分呢?之前不是已经不temp得值赋给adcx了吗?照道理再执行temp-=adcx时,temp的值应该为0才对啊,有点不解!求原子哥解释一下。
回复 支持 反对

使用道具 举报

5

主题

46

帖子

0

精华

初级会员

Rank: 2

积分
93
金钱
93
注册时间
2014-9-3
在线时间
2 小时
发表于 2014-10-18 00:20:20 | 显示全部楼层
回复【8楼】正点原子:
---------------------------------
原子哥,temp-=adcx;这句程序为什么只是减去整数部分呢?之前不是已经把temp的值赋给adcx了吗?照道理再执行temp-=adcx时,temp的值应该为0才对啊,有点不解!求原子哥解释一下。
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2014-10-18 00:57:32 | 显示全部楼层
回复【15楼】冬迹:
---------------------------------
就是取小数部分。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
发表于 2015-1-1 21:56:06 | 显示全部楼层
回复【16楼】正点原子:
---------------------------------
原子哥这里我也困扰很久我算出来也是0
都是0了怎么取小数?
爬了很多文得到的结果都是说取小数
是否麻烦原子哥可以演算一下
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2015-1-1 22:53:04 | 显示全部楼层
回复【17楼】hack906447:
---------------------------------
请自行仿真解决。如果这代码有问题,你下载到我们开发板,肯定就不能显示正确结果了。所以代码是没问题的,有问题的是你看不懂代码
然后可以仿真看下,就知道什么情况了。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

51

主题

340

帖子

0

精华

论坛元老

Rank: 8Rank: 8

积分
3275
金钱
3275
注册时间
2013-9-21
在线时间
281 小时
发表于 2015-1-2 08:17:40 | 显示全部楼层
回复【18楼】正点原子:
---------------------------------
謝謝原子哥我理解了
問題出在浮點數轉換到整數的類型後
回复 支持 反对

使用道具 举报

4

主题

40

帖子

0

精华

初级会员

Rank: 2

积分
76
金钱
76
注册时间
2015-3-17
在线时间
0 小时
发表于 2015-5-9 16:51:56 | 显示全部楼层
有的分成4095份为什么???,哪一个更好
回复 支持 反对

使用道具 举报

0

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2015-3-30
在线时间
17 小时
发表于 2015-5-10 22:06:58 | 显示全部楼层
回复【9楼】beiker:
---------------------------------
北科大的
回复 支持 反对

使用道具 举报

16

主题

64

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
201
金钱
201
注册时间
2014-9-23
在线时间
15 小时
发表于 2015-6-11 08:20:22 | 显示全部楼层
回复【5楼】宋奧林:
---------------------------------
ADC的精度是12位的,也就是2^12
回复 支持 反对

使用道具 举报

28

主题

303

帖子

0

精华

高级会员

Rank: 4

积分
541
金钱
541
注册时间
2014-8-14
在线时间
67 小时
发表于 2015-8-3 13:54:54 | 显示全部楼层
回复【6楼】宋奧林:
------------------------------
赞   ==
这个世界上还有很多很多的人,但你不认识他们,他们也不属于你的世界。这个世界上还有很多好吃的好玩的好看的东西,可真正属于你的世界其实是很小的,只是你去过的地方吃过的东西和见过的落日,还有会在乎你死活的朋友。”——《龙族》
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
21
金钱
21
注册时间
2015-10-7
在线时间
0 小时
发表于 2015-12-23 13:33:20 | 显示全部楼层
先用眼睛直接看看代码,不清楚的挂仿真器,这样的话就可以看到程序的运行情况了,另外默认是16进制不是很方便,可以把那个16进制的标记给去掉,最后得到的是10进制,当然看原子哥的代码还得知其然还得知其所以然,操作寄存器的时候,最好把数据手册里边的功能描述给看看,发觉原子哥写初始化的时候就是按照功能描述给在写代码,至于执行的情况,一般写程序挂个J_Link是很好的。可以知道自己程序写的情况。这样是很方便的,在分析驱动程序的时候如果能挂上逻辑分析仪那就更方便了,这只是个人的看法啊。
回复 支持 反对

使用道具 举报

3

主题

13

帖子

0

精华

初级会员

Rank: 2

积分
50
金钱
50
注册时间
2015-6-4
在线时间
12 小时
发表于 2016-3-22 15:50:25 | 显示全部楼层
正点原子 发表于 2011-6-29 20:00
回复【楼主位】黑雨:
---------------------------------
参考电压3.3V,被分成4096份

原子哥,参考电压是在哪里看来着
回复 支持 反对

使用道具 举报

5

主题

21

帖子

0

精华

初级会员

Rank: 2

积分
174
金钱
174
注册时间
2016-3-26
在线时间
45 小时
发表于 2016-4-13 16:50:44 | 显示全部楼层
正点原子 发表于 2014-8-2 00:21
回复【7楼】beiker:
---------------------------------
减去整数部分
放大1000倍
显示小数部分。

原子哥,adcx=Get_Adc_Average(ADC_Channel_5,20);     
               LCD_ShowxNum(134,130,adcx,4,16,0);
                temp=(float)adcx*(3.3/4096);   
                adcx=temp;                           
                LCD_ShowxNum(134,150,adcx,1,16,0);   
                temp-=adcx;                    
                temp*=1000;         
其中adcx=0x00003, 根据公式,temp=(float)adcx*(3.3/4096);   这一步怎么计算的?我算的和采集的不一样(采集的准确)
   
回复 支持 反对

使用道具 举报

30

主题

87

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
427
金钱
427
注册时间
2015-3-11
在线时间
123 小时
发表于 2016-9-27 16:45:34 | 显示全部楼层
曹世鹏 发表于 2015-5-10 22:06
回复【9楼】beiker:
---------------------------------
北科大的

我靠 我晃眼一看 还以为哦是我呢 咱长得一模一样啊
回复 支持 反对

使用道具 举报

0

主题

22

帖子

0

精华

初级会员

Rank: 2

积分
124
金钱
124
注册时间
2015-3-30
在线时间
17 小时
发表于 2016-9-28 10:59:03 | 显示全部楼层
smallshuo 发表于 2016-9-27 16:45
我靠 我晃眼一看 还以为哦是我呢 咱长得一模一样啊

失散多年的。。。
回复 支持 反对

使用道具 举报

2

主题

16

帖子

0

精华

初级会员

Rank: 2

积分
61
金钱
61
注册时间
2016-9-28
在线时间
21 小时
发表于 2016-9-28 14:11:34 | 显示全部楼层
学习了,看懂了,把每一句理清了就明白了
回复 支持 反对

使用道具 举报

7

主题

41

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
244
金钱
244
注册时间
2016-7-12
在线时间
38 小时
发表于 2016-10-17 20:25:10 | 显示全部楼层
正在学习,还得慢慢思索!
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2017-8-4
在线时间
0 小时
发表于 2017-8-4 19:13:32 | 显示全部楼层
请问原子哥,是不是参考电压为3.3V,那么STM32  ADC转换器测出来的结果一定不能超过3.3V?
回复 支持 反对

使用道具 举报

1

主题

32

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2017-8-4
在线时间
13 小时
发表于 2017-8-5 08:32:02 | 显示全部楼层
linchangyong 发表于 2017-8-4 19:13
请问原子哥,是不是参考电压为3.3V,那么STM32  ADC转换器测出来的结果一定不能超过3.3V?

不是的吧,就像海平面被参考为海拔的0m一样,高于海平面称为海拔多少米。这个参考电压应该也是这样被参考的吧,还请批评指正
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
2
金钱
2
注册时间
2017-8-5
在线时间
0 小时
发表于 2017-8-5 15:40:40 | 显示全部楼层
请问原子哥,ADC实验中是把什么样的模拟量转化为数字量,也就是说实验的模拟量是什么?新手问题
回复 支持 反对

使用道具 举报

0

主题

11

帖子

0

精华

新手上路

积分
43
金钱
43
注册时间
2019-4-30
在线时间
10 小时
发表于 2019-7-23 10:23:33 | 显示全部楼层
学习了
回复 支持 反对

使用道具 举报

33

主题

218

帖子

0

精华

高级会员

Rank: 4

积分
568
金钱
568
注册时间
2015-1-12
在线时间
75 小时
发表于 2020-6-28 19:32:58 | 显示全部楼层
应该是4095不应该是4096
回复 支持 反对

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
9
金钱
9
注册时间
2021-6-15
在线时间
2 小时
发表于 2021-7-23 13:46:55 | 显示全部楼层
原子哥我爱你 么么
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-25 21:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表