当前位置: 首页 > news >正文

杰发科技AC7840——使用内部温度

1. 简介

杰发的芯片都自带内部温度检测,在ADC通道中获取即可。

7801自带了温度检测例程,7840不带,因此在这里分享一下相关温度检测代码。

根据产线反馈,7840在常温时候25℃比较准,温箱测试,高温和低温下有5℃的误差。

2. 使用BG校准,增大采样时间

直接采集内部温度adc通道,值不是很准确,可以考虑使用内部BG对ADC值进行校准。

void ADC_Init(void)
{adc_converter_config_t adcConfig;/*! ADC输入端口(电位器)配置*/GPIO_DRV_SetMuxModeSel(VR1_PORT, VR1_PIN, PORT_PIN_DISABLED); /*! 电位器VR1*/GPIO_DRV_SetMuxModeSel(VR2_PORT, VR2_PIN, PORT_PIN_DISABLED); /*! 电位器VR2*//*! ADC配置配置ADC为12位分辨率,工作模式为MODE3规则组扫描+注入组扫描模式多通道单次转换,规则组长度为4。每触发一次进行一次ADC转换,每次转换规则组中的4个通道。*/ADC_DRV_Init(ADC_INDEX);ADC_DRV_InitConverterStruct(&adcConfig);adcConfig.clockDivide                = ADC_CLK_DIVIDE_6;     /*! ADC时钟分频。ADC时钟源选择在时钟初始化里配置,此例程选择为SPLLDIV2_CLK,频率为60MHz*/adcConfig.resolution                 = ADC_RESOLUTION_12BIT; /*! ADC分辨率设置*/adcConfig.regularTrigger             = ADC_TRIGGER_INTERNAL; /*! 规则组触发源类型选择*/adcConfig.injectTrigger              = ADC_TRIGGER_INTERNAL; /*! 注入组触发源类型选择*/adcConfig.dmaEnable                  = false;                /*! DMA使能位*/adcConfig.voltageRef                 = ADC_VOLTAGEREF_VREF;  /*! ADC参考电压源选择,VREF/VDDA*/adcConfig.scanModeEn                 = true;                 /*! 工作模式配置:扫描模式使能位,多通道时需要使能扫描模式,单个通道时不需要使能扫描*/adcConfig.continuousModeEn           = false;                /*! 工作模式配置:连续模式使能位,1:触发后可连续转换,0:触发一次只转换一次,转换完成后停止*/adcConfig.regularDiscontinuousModeEn = false;                /*! 工作模式配置:规则组不连续模式使能位*/adcConfig.injectDiscontinuousModeEn  = false;                /*! 工作模式配置:注入组不连续模式使能位*/adcConfig.injectAutoModeEn           = false;                /*! 工作模式配置:自动注入模式使能位*/adcConfig.intervalModeEn             = false;                /*! 工作模式配置:间隔模式使能位*/adcConfig.regularDiscontinuousNum    = 0;                    /*! 规则组子组长度 (用于mode7)*/adcConfig.regularSequenceLength      = 4;                    /*! 规则组长度设置*/adcConfig.injectSequenceLength       = 0;                    /*! 注入组长度设置*/adcConfig.powerEn                    = true;                 /*! ADC上电*/ADC_DRV_ConfigConverter(ADC_INDEX, &adcConfig);              /*! 初始化ADC配置*//*! ADC通道配置*/ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_0, VR1_ADC_CH);     /*! 电位器VR1对应通道*/ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_1, VR2_ADC_CH);     /*! 电位器VR2对应通道*/ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_2, ADC_CH_TSENSOR); /*! 内部温度传感器通道*/ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_3, ADC_CH_BANDGAP);  /*! ADC_CH_BANDGAP   */ //ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_4, ADC_CH_SUPPLY);  /*! 内部供电电压通道*/
}

对采样时间没有要求的话,在初始化时候可以增加采样时间

/*!ADC采样转换时间计算:FCLK 时钟源为SPLLDIV2_CLK,频率为60MHzADCCLK = FCLK/clockDivide = 60/6 = 10MHz总转换时间 = (SPT+ resolution(12/10/8))×ADCCLK周期+5个FCLK = (5+12)/10+5/60 ≈ 1.78us注意:12bit分辨率最大转换率为1Msps,10bit分辨率最大转换率为1.2Msps,8bit分辨率最大转换率为1.4Msps*/

周期5是1.78us,按照公式计算,185是 (5+12)/10+185/60 = 4.78us

在计算时候使用BG进行校准

bg电压在开发板上测试,3.3v时候测出来是1500,5V时候测出来960左右。

BG电压实际上1.2V,即1200mV,对应的是1200的ad值才对,目前7801上测试1200很准,可能7840的值和7801不一样。

void ADC_TriggerTest(void)
{ADC_DRV_SoftwareStartRegularConvert(ADC_INDEX);              /*! ADC软件触发*/while (!ADC_DRV_GetConvCompleteFlag(ADC_INDEX, ADC_RSEQ_3)); /*! 等待ADC最后一个通道转换完成*/ADC_DRV_GetSeqResult(ADC_INDEX, ADC_RSEQ_0, &g_adc_array[0]); /*! 获取规则组0的转换值*/ADC_DRV_GetSeqResult(ADC_INDEX, ADC_RSEQ_1, &g_adc_array[1]);ADC_DRV_GetSeqResult(ADC_INDEX, ADC_RSEQ_2, &g_adc_array[2]);ADC_DRV_GetSeqResult(ADC_INDEX, ADC_RSEQ_3, &g_adc_array[3]);//ADC_DRV_GetSeqResult(ADC_INDEX, ADC_RSEQ_3, &g_adc_array[4]);/*! 打印ADC各通道转换结果*/convertVal = (float)g_adc_array[2]  / (float)g_adc_array[3];   // bgADC /1200 =  TempADC/TempVolconvertVol = convertVal*1200;temperatureVal = 25 - (convertVol - 673  )/1.788 ;
}

相关文章:

  • AbMole推荐Rapamycin: 自噬、肿瘤、免疫、衰老研究的关键工具
  • Idea出现 100% classes 等
  • C++初阶-list的使用2
  • 【软考向】Chapter 3 数据结构
  • 全面学习c++类与对象(中)(非常重要)(析构构造拷贝函数赋值运算符重载等等)
  • SOC-ESP32S3部分:7-如何学习ESP32S3-IDF开发
  • PHP7内核剖析 学习笔记 第七章 面向对象
  • 如何减⼩dockerfile⽣成镜像体积?
  • ollama+open-webui搭建可视化大模型聊天
  • Android-MVVM框架学习总结
  • BERT框架:自然语言处理的革命性突破
  • 服务器操作系统调优内核参数(方便查询)
  • SDWebImage源码学习
  • vue组件渲染到iframe里面(同域名下),组件可以在同一项目下维护
  • Linux 部署 RocketMQ
  • oracle数据库查看当前session会话数、查询最大支持连接数、修改最大支持连接数
  • 服务器并发实现的五种方法
  • MCP Server Resource 开发学习文档
  • WebGL基本概念
  • CUDA 加速的基础线性代数库cuBLAS
  • ic交易网站建设/河南seo推广
  • 网站备案 论坛/网络运营师
  • app设计模板网站/网络推广岗位职责和任职要求
  • 苏州网站建设运营推广/网络营销概念是什么
  • 做电影网站被告版权/百度top排行榜
  • 比较好的做外贸网站/做推广哪个平台好