STM8L之ADC

/*******************************************************************************

*名    称: Hal_Comm_GetBatADC

*功    能: 获取电池电量信息

*入口参数: 无

*出口参数: 电量AD值

*说    明:

*******************************************************************************/

unsigned int Hal_Comm_GetBatADC(void)

{

unsigned int Result = 0, value_adc = 0;

unsigned char index = 0;

GPIO_Init(VOL_ADC_PORT,VOL_ADC_PIN,GPIO_Mode_In_FL_No_IT);//VOL_ADC

ADC1->CR1 |= 0x01;//使能AD

ADC1->CR3 &= ~0x1F;//  选择采样时间 384 周期  通道清空

ADC1->CR3 |= 0x00;  // channel 0 is selected

ADC1->SQR[0] = ADC1->SQR[1] = ADC1->SQR[2] = ADC1->SQR[3] = 0x00;

ADC1->SQR[3] = 0x01;// 选择通道0扫描

ADC1->SR &= 0x00;// conversion not complete

ADC1->SR = 0;    // conversion 标识清空

ADC1->CR1 |= 0x03;//使能AD并开始转换

while(!(ADC1->SR & 0x01)); //waitloop   bit0: 1 complete   0 not complete

for(index = 0; index < 10; index++)

{

ADC1->SR = 0;  // conversion 标识清空

ADC1->CR1 |= 0x03;//使能AD  开始转换

while(!(ADC1->SR & 0x01));//waitloop  conversion  complete

Result = ADC1->DRH;     //总共计算16bit的值,但ADC为12 bit 长度

Result <<= 8;           //ADC1->DRH为高8位,

Result += ADC1->DRL;    //ADC1->DRL为低8位

value_adc += Result;

if(index != 0)value_adc = value_adc/2;  //获取多次数据,计算平均值

index++;

}

ADC1->CR1 &= 0xFE;//关闭AD

ADC1->CR3 &= ~0x1F;//选择通道

ADC1->CR3 |= 0x11;

return value_adc;

}

我们一般在设计原理图的时候会把ADC的输入电压范围设定在:0~3.3v,如果设置ADC为12位的,那么12位满量程对应的就是3.3V,12位满量程对应的数字值是:2^12。数值0对应的就是0V。如果转换后的ADC数值为X,X对应的模拟电压为Y,那么会有这么一个等式成立:2^12/3.3=X/Y,=>Y=(3.3*X)/2^12

在我们的智能锁项目中,满量程Vref为3.31V,总电压(M6V)/测试电压(VOL_ADC) = 3

4096/3.31 = value_adc/Va

Va = value_adc * 3.31 / 4096

总电压 = Va * 3

即程序中的vin = value_adc * 3.31 * 3 / 4096

ad stm8l 热电偶_STM8L之ADC相关推荐

  1. ad stm8l 热电偶_[转载]STM8S单片机入门3(AD转换及锂电池管理)

    锂电池以其容量大.充电性能好的优点,已经得到了广泛引用,特别在小型的需电池供电的电子设备上.但是锂电池的充电和使用条件比较严格,比如充电必须以恒流恒压方式,使用时电压不能低于3V等,所以用锂电池供电的 ...

  2. adc网络语什么意思_王者荣耀AD什么意思AP、ADC、AOE等术语是什么意思

    如果是没接触过MOBA类手游玩家,在玩王者荣耀游戏中进行匹配.排位时常常被一些专业性的术语名词说懵,下面让好六帅七来为你解答一下AD什么意思AP.ADC.AOE等术语什么意思吧~ AD什么意思? 1. ...

  3. 高速ad指标分析 matlab,高速ADC的动态性能参数和基于DSP技术的测试方法研究

    高速ADC是信号处理机的不可欠缺的组成部分,其性能的好坏对信号处理系统的整体性能也至关重要.通常ADC的技术参数是由生产厂商提供,可作为设计的重要依据,但是在电路板上形成的ADC模块的性能如何,还与A ...

  4. AD分辨率和精度区别

    最近做了一块板子,当然考虑到元器件的选型了,由于指标中要求精度比较高,所以对于AD的选型很慎重.很多人对于精度和分辨率的概念不清楚,这里我做一下总结,希望大家不要混淆.我们搞电子开发的,经常跟&quo ...

  5. pic1路AD转换c语言,pic单片机的ad转换(实例解析)

    描述 AD转换就是模数转换.顾名思义,就是把模拟信号转换成数字信号.主要包括积分型.逐次逼近型.并行比较型/串并行型.Σ-Δ调制型.电容阵列逐次比较型及压频变换型.A/D转换器是用来通过一定的电路将模 ...

  6. efm32芯片电压_【经验】基于EFM32G232芯片 ADC采样毛刺问题分析以及解决方案

    在JYL-60架空暂态录波型远传故障指示器项目开发过程中,Silicon Labs的EFM32G232 32位MCU作为暂态录波型故障指示器的CPU,发现ADC采样电流或电压数据出现毛刺的情况.下图1 ...

  7. STM32f4系列ADC解析

    12位ADC简介 12位ADC是一种逐次逼近型模拟数字转换器.它有多达19个通道,可测量16个外部和2个内部信号源和Vbat通道.各通道的A/D转换可以单次.连续.扫描或间断模式执行.ADC的结果可以 ...

  8. ADC 模数转换实验

    生活中的模拟信号,如温度.声音.压力等,需要转换为更方便储存.处理和发射的数字形式. 51 单片机无法直接操作这些模拟量,其系统内部时运算都是数字量 0 和 1,因此必须将模拟量转换成数字量.数字量, ...

  9. cubemx 配置多通道ADC进行ADC采样

    cubemx 配置多通道ADC进行ADC采样 AD的基础知识 AD很复杂,其实也不复杂,因为我们用的不多. AD:模拟量转换数字量(模拟信号转换数字信号). ADC:模拟量转数字量的转换器. 为什么需 ...

最新文章

  1. 进军ABP第一天:ABP理论知识
  2. SAP BADI应用
  3. 对于七段数码数字模型进行改进:一个关键的数字1的问题
  4. footer固定到底部
  5. 012 动态调试smali代码
  6. orion算法被解密了
  7. 服务化改造实践(三) | Dubbo + Zipkin
  8. 手眼标定eye-to-hand 示例:handeye_stationarycam_calibration
  9. 大神干货:腾讯广告算法大赛亚军宝藏指南带你顺利出圈
  10. 关于Excel中,下拉菜单的制作。
  11. MongoDB进阶系列(12)——MongoDB 固定集合
  12. 量子计算机可以预测未来吗,这台量子计算机可以同时预测16种不同的未来
  13. 装linux系统为什么会黑屏_Ubuntu安装时出现黑屏问题的解决
  14. zabbix如何自定义一个监控项对web网站进行存活监控和报警?
  15. xubuntu16.04修改开关机动画
  16. oracle人民币大写转换
  17. java sql查询空内容_返回null值而不是sql查询中的空集
  18. 【swagger】Swagger注解介绍
  19. 网上流传的35岁很多人会失业,这是真的吗
  20. EF学习之一:入门之新建一个EF项目

热门文章

  1. 鼠标手是否算工伤 专家:法定职业病才能获赔
  2. 如何将macbook触摸板和外接鼠标的滚轮设置相反方向
  3. ITIL Expert
  4. 深度学习21_李宏毅_02_Regression_P2
  5. OKR 如何彻底激发员工积极性,挑战不可能?
  6. POJ 1659 Frogs‘ Neighborhood (Havel 定理)
  7. 【Matlab】希腊字母
  8. 工业生产ERP系统常见的五大统计分析功能
  9. 博实乐公布季度业绩,前三季度收入增长46.6%
  10. rabbitmq和erlang版本对应关系