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

杰发科技AC7801——ADC之Bandgap和内部温度计算

0. 参考

电流模架构Bandgap设计与仿真

bandgap的理解(内部带隙电压基准)
 

虽然看不懂这些公式,但是比较重要的一句应该是这个:因为传统带隙基准的输出值为1.2V

1. 使用

参考示例代码。

40002000是falsh控制器寄存器,40002058应该也是flash相关。

flash控制寄存器到0x40002040就结束了,参考下表的地址规律,在0x40002044应该就是eflash控制寄存器结束地址。跟代码里面的40002058没有啥关系。

可以看到这个也是存在falsh中,手册中没有说明这个地址的作用,应该也是专门用来存储基校准电压的地方。

看到7801的BG输出电压是1.2V,并且出厂自带校准。

温度曲线斜率1.692,单位是mV/℃

25℃时候电压是0.72V

可以看到低5位用来存储BG校准值

高8位用来存储25℃时候的温度值

    TsensorCali = *((uint32_t *)0x40002058);VbandgapRT = (uint8_t)(TsensorCali & 0x1F); // 0 1111 低5位 VtsensorRT = (uint8_t)((TsensorCali >> 8) & 0xFF);  // 1111 1111 高8位

最高位第5位不为0  因此可以判断第5位是符号位

最高位第8位不为0  因此可以判断第8位是符号位

经过换算之后1200的ADC值对应的就是1.2V电压值。

温度值720对应0.72V【720mV】,与后面的0.5系数就不太懂了,应该是特殊公式。

    /* BG calibration */if (VbandgapRT >> 4) //最高位第5位不为0  因此可以判断第5位是符号位{bgVol = 1200 - (VbandgapRT & 0xF); }else{bgVol = 1200 + (VbandgapRT & 0xF);}/* Vtsensor calibration */if (VtsensorRT >> 7)   //最高位第8位不为0  因此可以判断第8位是符号位{vt25Vol = 720 - (VtsensorRT & 0x7F) * 0.5;}else{vt25Vol = 720 + (VtsensorRT & 0x7F) * 0.5;}

进行ADC采样

测出来的数据

使用BG的校准值和测出来的BG值对温度ADC值进行校准

ADC值即mV单位的电压值,进行温度曲线斜率换算,得到目前的温度值。

http://www.lryc.cn/news/345785.html

相关文章:

  • 了解 macOS 中的系统完整性保护 (SIP):开启与关闭
  • 【Linux】简易进度条的实现
  • Docker + Django跨域解决方案
  • Maven 插件使用
  • 【HMGD】GD32/STM32 DMA接收不定长串口数据
  • 局域网手机端远程控制手机
  • 如何在OpenWrt软路由中增加一个新功能
  • 【linux】vmtouch文件缓存管理工具
  • 论文阅读:The Unreasonable Ineffectiveness of the Deeper Layers 层剪枝与模型嫁接的“双生花”
  • Python批量备份华为设备配置到FTP服务器
  • Java虚拟机(JVM)中确保资源及时释放的策略
  • 04-Fortran基础--Fortran数组和矩阵运算
  • el-select选项框内容过长
  • K8S面试题学习5
  • 字符以及字符串函数
  • 记录解决问题--redis ssl连接
  • 买卖股票的最佳时机
  • Linux部署安装
  • docker搭建mysql集群实现主从复制
  • Neo4j 之安装和 CQL 基本命令学习
  • 【全开源】JAVA台球助教台球教练多端系统源码支持微信小程序+微信公众号+H5+APP
  • 机器学习-如何为模型选择评估指标?
  • 【AutoGPT】踩坑帖(follow李鱼皮)
  • 机器学习-L1正则/L2正则
  • Linux——socket编程之tcp通信
  • HTTP协议介绍
  • elasticsearch安装配置注意事项
  • Istio 流量管理(请求路由、流量转移、请求重试、流量镜像、故障注入、熔断等)介绍及使用
  • Transformers中加载预训练模型的过程剖析
  • 使用MCU的 GPIO口 模拟SDIO时序读写TF/SD卡的可能性。