OpenEdv-开源电子网

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

关于内部温度差传感器实验

[复制链接]

46

主题

177

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
381
金钱
381
注册时间
2012-5-2
在线时间
0 小时
发表于 2012-5-29 08:42:17 | 显示全部楼层 |阅读模式
得到AD转换结果的程序如下.
u16 Get_Adc(u8 ch)   
{
//设置转换序列    
ADC1->SQR3&=0XFFFFFFE0;//规则序列1 通道ch      疑问语句1
ADC1->SQR3|=ch;                    疑问语句2
ADC1->CR2|=1<<22;       //启动规则转换通道 
while(!(ADC1->SR&1<<1));//等待转换结束   
return ADC1->DR; //返回adc值
}

内部温度传感器接的是第16通道,文中令ch=16,然后进行相关计算。
我认为疑问语句1就是给各个通道进行编号,但这里使用了SQR3,并没有使用SQR1,而第16通道不是在SQR1吗?
请问SQ16是不是表示第16通道?还是说他可以表示任意通道(通道1,2,...),只是他排第16,是第16个转换通道?

然后疑问语句2为SQR3赋值ch, 即令
ADC1->SQR3|=16; 请问这一句又作何解释?
SQR3|=16的话,应该是SQ1通道的编号为16,对吗?
若SQR3|=16<<5;则是SQ2的通道编号是16,是这样理解吗?




正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165371
金钱
165371
注册时间
2010-12-1
在线时间
2110 小时
发表于 2012-5-29 12:59:16 | 显示全部楼层
规则通道就是个容器,可以设置为任何adc通道。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

108

主题

1433

帖子

2

精华

论坛大神

Rank: 7Rank: 7Rank: 7

积分
2233
金钱
2233
注册时间
2012-4-30
在线时间
7 小时
发表于 2012-5-29 17:17:15 | 显示全部楼层
回复【楼主位】stm32007:
---------------------------------
我没明白你讲的是啥。
但是大概知道你的迷惑是什么。
在SQR1中的那个16 不是代表第16通道,而是代表的第16个转换。还记得那个设置转换通道数的那几个位吗?如果设置了16个转换,那么就会从第一个转换开始 一直到 第十六个转换。 但是你的转换顺序是什么顺序呢?就是根据SQRx来决定的。SQR1中的SQ1 代表的是第一个转换,其有5个位可以代表转换通道0-17。 即 如果这里你写16 进去,就是代表第一个转换是转换通道16. 如果写0进去,就代表第一个转换是通道0.   原子大哥的实验是仅一个转换,所以转换通道数为1个转换,即SQR1 = 0。而第一个转换转换哪儿的通道呢?是测内部温度呢 还是采集引脚电压值,就是ADC1->SQR3&=0XFFFFFFE0; 
ADC1->SQR3|=ch; 来决定了
所以这里的ch代表通道
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-2-26 02:31

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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