[其他产品] MicroChip SAM L21 内部温度传感器

[复制链接]
 楼主| 发GV第几啊 发表于 2022-2-10 15:50 | 显示全部楼层 |阅读模式
ic, ip, sam
MicroChip SAM L21 内部温度传感器的应用
温度采样的ADC配置



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
deliahouse887 发表于 2022-3-6 18:15 | 显示全部楼层
PIC32MZ EC内部温度传感器读取数值 正确吗
ccook11 发表于 2022-3-6 17:41 | 显示全部楼层
有哪位大侠用PIC16F1947的内部温度传感器吗
yorkbarney 发表于 2022-3-6 17:12 | 显示全部楼层
内部温度传感器的转换公式是怎么计算的
aspoke 发表于 2022-3-6 15:30 | 显示全部楼层
内部温度传感器怎么使用的?
averyleigh 发表于 2022-3-6 14:46 | 显示全部楼层
内部温度传感器采集的值不稳定是什么原因?
eefas 发表于 2022-3-6 14:10 | 显示全部楼层
利用ADCC和内部温度传感器测量温度。
pmp 发表于 2022-3-6 13:29 | 显示全部楼层
是不是每个MicroChip SAM L21 都有内部温度传感器
mmbs 发表于 2022-3-5 23:34 | 显示全部楼层
内部温度传感器通过哪个AD采集
saservice 发表于 2022-3-5 23:06 | 显示全部楼层
为什么还需外部温度传感器
isseed 发表于 2022-3-5 22:02 | 显示全部楼层
内部温度传感器在哪?
晓伍 发表于 2022-3-2 15:54 | 显示全部楼层
移位比乘除好多了
磨砂 发表于 2022-3-2 15:47 | 显示全部楼层
需要的参数好多啊
木木guainv 发表于 2022-3-2 15:39 | 显示全部楼层
可以简单一点吗
xiaoqizi 发表于 2022-3-2 15:30 | 显示全部楼层
有必要优化一下吗
wowu 发表于 2022-3-2 15:25 | 显示全部楼层
算法很是复杂啊
tpgf 发表于 2022-3-2 15:05 | 显示全部楼层
这个需要校对吗
 楼主| 发GV第几啊 发表于 2022-2-10 17:24 | 显示全部楼层
  1. #include "definitions.h" // SYS function prototypes
  2. #include "temperature.h"
  3. #include "sapmle_pow.h"
  4. static float f_int1_h; // 基准电压
  5. static float f_int1_r;

  6. static float f_temp_h; // 高温
  7. static float f_temp_r; // 室温

  8. static uint16_t u16_adc_h; // 校准过的ADC值
  9. static uint16_t u16_adc_r; // 校准过的ADC值

  10. void Device_Temp_Init(void) {
  11.     // 基准电压换算

  12.     f_int1_h = ((int8_t) HOT_TEMP_VAL_INT) * 0.001 + 1;
  13.     f_int1_r = ((int8_t) ROOM_INT1V_VAL) * 0.001 + 1;

  14.     // 温度换算
  15.     f_temp_h = HOT_TEMP_VAL_INT + HOT_TEMP_VAL_DEC * 0.1;
  16.     f_temp_r = ROOM_TEMP_VAL_INT + ROOM_TEMP_VAL_DEC * 0.1;

  17.         // 校准ADC值
  18.     u16_adc_h = HOT_ADC_VAL * f_int1_h + 0.5;
  19.     u16_adc_r = ROOM_ADC_VAL * f_int1_r + 0.5;

  20. }

  21. int8_t Get_Device_Temp(void) {

  22.     float f_temp_c; // 粗略温度值
  23.     float f_temp_f; // 实际温度值
  24.     float f_int1_m; // 基准电压
  25.     uint16_t u16_adc_m;
  26.    
  27.     u16_adc_m = Get_ADC_Val(ADC_TEMP_CH) * 3.3; // 基准使用 3.3 V 所以放大3.3倍

  28.     f_temp_c = f_temp_r + ((u16_adc_m - u16_adc_r)*(f_temp_h - f_temp_r) / (u16_adc_h - u16_adc_r)); // 温度粗值计算
  29.     f_int1_m = f_int1_r + ((f_int1_h - f_int1_r)*(f_temp_c - f_temp_r) / (f_temp_h - f_temp_r)); // 基准电压计算
  30.     u16_adc_m = u16_adc_m * f_int1_m + 0.5;
  31.     f_temp_f = f_temp_r + ((u16_adc_m - u16_adc_r)*(f_temp_h - f_temp_r) / (u16_adc_h - u16_adc_r));

  32.     return (int8_t) f_temp_f;
  33. }
 楼主| 发GV第几啊 发表于 2022-2-10 17:23 | 显示全部楼层
下列是实际应用的代码。
  1. #ifndef TEMPERATURE_H
  2. #define        TEMPERATURE_H

  3. #include <stdint.h>

  4. #define TEMP_LOG_ADDR                  _UL_(0x00806030)    /**< TEMP_LOG base address (type: fuses)*/

  5. #define NVM_TEMPERATURE_LOG_ROW_BASE    (*(uint32_t*)TEMP_LOG_ADDR)
  6. #define NVM_TEMPERATURE_LOG_ROW_HIG_BASE    (*(uint32_t*)(TEMP_LOG_ADDR + 4))


  7. // 室温温度值
  8. #define ROOM_TEMP_VAL_INT     (NVM_TEMPERATURE_LOG_ROW_BASE & 0xFF)   
  9. #define ROOM_TEMP_VAL_DEC     ((NVM_TEMPERATURE_LOG_ROW_BASE>>8) & 0x0F)

  10. // 高温温度值
  11. #define HOT_TEMP_VAL_INT     ((NVM_TEMPERATURE_LOG_ROW_BASE>>12) & 0xFF)
  12. #define HOT_TEMP_VAL_DEC     ((NVM_TEMPERATURE_LOG_ROW_BASE>>20) & 0x0F)

  13. // 相应温度下,参考电压的浮动值
  14. #define ROOM_INT1V_VAL       ((NVM_TEMPERATURE_LOG_ROW_BASE>>24) & 0xFF)
  15. #define HOT_INT1V_VAL       ((NVM_TEMPERATURE_LOG_ROW_HIG_BASE) & 0xFF)

  16. // 相应温度的AD值
  17. #define ROOM_ADC_VAL        ((NVM_TEMPERATURE_LOG_ROW_HIG_BASE>>8) & 0xFFF)
  18. #define HOT_ADC_VAL        ((NVM_TEMPERATURE_LOG_ROW_HIG_BASE>>20) & 0xFFF)

  19. 室温温度值
  20. #define ROOM_TEMP_VAL   (ROOM_TEMP_VAL_INT + ROOM_TEMP_VAL_DEC*0.1)

  21. // 高温温度值
  22. #define HOT_TEMP_VAL   (HOT_TEMP_VAL_INT + HOT_TEMP_VAL_DEC*0.1)


  23. extern void Device_Temp_Init(void);
  24. extern int8_t Get_Device_Temp(void);

  25. #endif        /* GRID_H */

 楼主| 发GV第几啊 发表于 2022-2-10 17:19 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
 楼主| 发GV第几啊 发表于 2022-2-10 17:17 | 显示全部楼层

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

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

本版积分规则

20

主题

323

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

20

主题

323

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部