我是靠谱客的博主 老迟到鱼,最近开发中收集的这篇文章主要介绍STM32MP157实验(十一)——ADC(测量内部温度)设计需求一、基础知识二、硬件设计三、STM32CubeIDE开发运行结果,觉得挺不错的,现在分享给大家,希望可以做个参考。
概述
文章目录
- 设计需求
- 一、基础知识
- 二、硬件设计
- 三、STM32CubeIDE开发
- MX设置
- 程序设计
- 项目结构
- 运行结果
设计需求
使用ADC,获取芯片内部的温度
一、基础知识
STM32MP157可以通过ADC2的通道19设置为获取芯片内部温度
二、硬件设计
不涉及电路设计
三、STM32CubeIDE开发
MX设置
ADC有两个时钟方案:一个是来自adc_hclk(AHB时钟),一个是来自adc_ker_ck(ADC Kernel时钟)。两个时钟源独立且异步
程序设计
创建“ DemoDriver”目录,在里面新建“ driver_adc.c”,在该文件里调用“ HAL_ADC_Start()”启动
ADC,调用“ HAL_ADC_PollForConversion()”等待 ADC 转换结束,调用“ HAL_ADC_GetValue()”获取 ADC 的
结果,最后再将 ADC 值转换为温度值,转换公式在手册写有如下:
driver_adc.h
#ifndef DRIVER_ADC_H_
#define DRIVER_ADC_H_
#include "main.h"
#include "stm32mp1xx_hal.h"
extern ADC_HandleTypeDef hadc2;
int GetTemperatureValue(void);
#endif /* DRIVER_ADC_H_ */
driver_adc.c
#include "driver_adc.h"
#include "stm32mp1xx_hal_adc.h"
//获取ADC的采样到的内部温度
int GetTemperatureValue(void){
uint16_t nData=0;
int nValue=0;
HAL_ADC_Start(&hadc2);//开启ADC
HAL_ADC_PollForConversion(&hadc2,100);//轮询查看转换是否完成
//第二个参数表示超时时间,防止CPU卡死
nData=HAL_ADC_GetValue(&hadc2);//获取采集数据的值
//157的参考电压是3.3V;采样位是16bit
nValue=__HAL_ADC_CALC_TEMPERATURE(3300UL,nData,ADC_RESOLUTION_16B);
return nValue;
}
main.c
项目结构
运行结果
最后
以上就是老迟到鱼为你收集整理的STM32MP157实验(十一)——ADC(测量内部温度)设计需求一、基础知识二、硬件设计三、STM32CubeIDE开发运行结果的全部内容,希望文章能够帮你解决STM32MP157实验(十一)——ADC(测量内部温度)设计需求一、基础知识二、硬件设计三、STM32CubeIDE开发运行结果所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复