你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32L011k4内部温度传感器HAL库得到电压值,如何得到12bit数....

[复制链接]
wsyzxxnsjz 提问时间:2019-10-28 15:18 /
cubemx +ia。hal库adc采样温度传感器的值,
1 通道采集外部电压值,输入最高电压 可得到4096的采集结果
2 通道选择内部温度传感器,室温采集得到约680mv,为电压值。
实际项目要求采集到的温度值对绝对温度没有要求,仅需要一个分辨率较高、线性度较好的的数字量即可(0~4096)。之前用MSP430是得到的数字量。不知道HAL库是不是封装的太彻底了。请知道的朋友告知。如何实现。十分感激
收藏 评论8 发布时间:2019-10-28 15:18

举报

8个回答
废鱼 回答时间:2019-10-28 16:15:26
楼主,不知道咋们使用的AD采集,应该时直接采集到数字量,再根据数字量进行电压换算。最好能把代码贴一下,这样好分析原因。
wsyzxxnsjz 回答时间:2019-10-28 16:37:33
在cubemx 中配置好时钟和ADC采样通道为内部温度传感器。
生成IAR代码,下面是代码;实际adc_v 的值,断点查看为670~680。
/* USER CODE BEGIN 0 */
unsigned int adc_v;
double adcx;
double temp;
/* USER CODE END 0 */


int main(void)
{
  HAL_Init();

  SystemClock_Config();

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART2_UART_Init();
  MX_ADC_Init();

  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {

  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
                HAL_ADC_Start(&hadc);
                adc_v = HAL_ADC_GetValue(&hadc);
               
  }
wsyzxxnsjz 回答时间:2019-10-28 16:43:04
内部温度传感器采样值.jpg cumbemx配置.jpg
补充AD断点采样截图
wsyzxxnsjz 回答时间:2019-10-29 08:49:41
cubemx配置AD为内部温度传感器通道。 以下为程序:定义温度值变量adc_v;采用HAL库的HAL_ADC_Start(&hadc);和 HAL_ADC_GetValue(&hadc);两个语句。后面有断点执行截图。        
/* USER CODE BEGIN 0 */
unsigned int adc_v;
double adcx;
double temp;
/* USER CODE END 0 */

int main(void)
{
  HAL_Init();
  SystemClock_Config();

  /* Initialize all configured peripherals */
  MX_GPIO_Init();
  MX_USART2_UART_Init();
  MX_ADC_Init();
  /* Infinite loop */
  /* USER CODE BEGIN WHILE */
  while (1)
  {
  /* USER CODE END WHILE */

  /* USER CODE BEGIN 3 */
                HAL_ADC_Start(&hadc);
                adc_v = HAL_ADC_GetValue(&hadc);               

  }
  /* USER CODE END 3 */
}

cumbemx配置.jpg 内部温度传感器采样值.jpg

注:同样的程序,将ADC采样通道配置为通道IN0,外部输入较高电压时 可以得到4096这个数字量。

wsyzxxnsjz 回答时间:2019-10-29 11:43:35
上面贴的是程序和截图,请大神们,教教我!万分感谢!卡到这里,实在不知道怎可处理了。
butterflyspring 回答时间:2019-10-30 16:47:54
请参考下图的原理。芯片ADC采集的是个比值数据,根据这个数据换算出电压。有了这个电压值或比值才能查表出外部温度传感器的电阻变化,对应多少温度。 如果想检测连续型号,首先要考虑温度传感器的线性变化是否合适。这样才能采集准确。
ADC原理.PNG

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

wsyzxxnsjz 回答时间:2019-10-31 08:42:09
请问如何将ADC的参考电压设置为内部的1.2v参考电压。
butterflyspring 回答时间:2019-11-1 17:28:24
参考电压是指VREF的电压,是与采样电压做比较用的。我猜你是想采集内部的Vrefint的那个1.2V的带隙电压。你看上面那边CUBE的配置图,就是选中那个AD通道,它是内部连接到ADC的通道。配置好后和其他通道一样的方式做转换就行了
关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版