OpenEdv-开源电子网

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

原子战舰stm32开发板--内部温度传感器实验--几点疑惑

[复制链接]

3

主题

7

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2014-3-13
在线时间
0 小时
发表于 2015-8-21 10:13:02 | 显示全部楼层 |阅读模式
5金钱
本人在学习原子战舰stm32开发板实验--内部温度传感器实验时,有以下疑惑,还望各位可以给予帮助,谢谢。
(1)ADC初始化部分代码
[mw_shl_code=c,true]//初始化ADC //这里我们仅以规则通道为例 //我们默认将开启通道0~3 void T_Adc_Init(void) //ADC通道初始化 { //变量定义 ADC_InitTypeDef ADC_InitStructure; //用于ADC初始化 //使能GPIOA时钟和ADC1时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1,ENABLE ); //使能GPIOA,ADC1通道时钟 //复位ADC1 同时设置ADC1分频因子 设置分频因子为6 72MHz/6=12MHZ ADC_DeInit(ADC1); //复位 RCC_ADCCLKConfig(RCC_PCLK2_Div6); //ADC最大时间不能超过14MHZ,否则会转换不准确 //初始化ADC1参数 设置ADC1的工作模式以及规则序列的相关信息 ADC_InitStructure.ADC_Mode = ADC_Mode_Independent; //ADC1(和ADC2)工作在独立模式 ADC_InitStructure.ADC_ScanConvMode = DISABLE; // 单次扫描模式,即单通道模式 ADC_InitStructure.ADC_ContinuousConvMode = DISABLE; //工作在单次转换模式 ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None; // 软件由软件而不是外部触发启动 ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right; // 数据右对齐方式 ADC_InitStructure.ADC_NbrOfChannel = 1; //选择通道 ADC通道1 顺序进行规则转换的ADC通道数目是通道1 ADC_Init(ADC1,&ADC_InitStructure); //根据ADC_InitStrcuture中指定的参数初始化外设ADCx的寄存器 //开启内部温度传感器 ADC_TempSensorVrefintCmd(ENABLE); //使能ADC 并校准 ADC_Cmd(ADC1,ENABLE); //使能 ADC_ResetCalibration(ADC1); //复位校准 while(ADC_GetResetCalibrationStatus(ADC1)); //等待复位校准结束 ADC_StartCalibration(ADC1); // ADC转换校准 while(ADC_GetCalibrationStatus(ADC1)); //等待AD校准结束 }[/mw_shl_code]
(2)疑惑
    a. 内部温度传感器连接的是ADCx_IN16,即和通道16相连,那么在ADC初始化函数中
[mw_shl_code=c,true]ADC_InitStructure.ADC_NbrOfChannel = 1; //选择通道 ADC通道1 顺序进行规则转换的ADC通道数目是通道1[/mw_shl_code]
这句话就应该配置为16,而不是1啊。原例程是不是错了?
    b. 内部温度传感器并没有占用GPIOA啊,为什么依旧要开启GPIOA的时钟?
[mw_shl_code=c,true]//使能GPIOA时钟和ADC1时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_ADC1,ENABLE ); //使能GPIOA,ADC1通道时钟[/mw_shl_code]
   c. 查阅一些别的资料,有的说要选中ADC1的通道16作为输入,设置采样时间17.1us ( Ncycle × tADC = 17.1靤 )。而原例程中没有这句话,是否是漏掉了?
[mw_shl_code=c,true]// ADC1 regular channel16 Temp Sensor configuration ADC_RegularChannelConfig(ADC1, ADC_Channel_16, 1, ADC_SampleTime_55Cycles5);[/mw_shl_code]

感谢各位给予解答,谢谢!


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

使用道具 举报

9

主题

18

帖子

0

精华

初级会员

Rank: 2

积分
84
金钱
84
注册时间
2015-3-21
在线时间
3 小时
发表于 2015-8-21 16:57:33 | 显示全部楼层
楼主参考这个图就明白了

新建 Microsoft Word 文档.doc

47.5 KB, 下载次数: 56

我要天天进步
回复

使用道具 举报

3

主题

7

帖子

0

精华

新手上路

积分
39
金钱
39
注册时间
2014-3-13
在线时间
0 小时
 楼主| 发表于 2015-8-21 18:59:18 | 显示全部楼层
回复【2楼】a3623037:
---------------------------------
谢谢了。我看见了,通道16对应的内部温度传感器,并没有对应GPIOA啊。能进一步解释下吗?谢谢
回复

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-22 15:28

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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