zoukankan      html  css  js  c++  java
  • WINCE6.0+S3C2443下ADC在电池驱动应用

    ********************************LoongEmbedded************************

    作者:LoongEmbedded(kandi)

    时间:2011.02.25

    类别:WINCE 驱动开发

    ********************************LoongEmbedded************************

     

    1.       ADC在电池驱动中的应用

    1.1    电池检测端口和CPU的硬件接口

    1

     

    1.2    电池驱动中需要使用ADC来转换电池的电压值

    下面是电池驱动battif.cBattery_sampleADC的函数体,这个函数用于对输出的电池电压这个模拟值转换为数字值

    2

    下面就来学习这个函数对这些寄存器的设置

    ACDMUX

    ACDMUX用于选择模拟输入通道,根据图1选择的是AIN0通道,见下图对ACDMUX寄存器的描述

    3

    ADCCON

    ADCCONADC的控制寄存器

    4

    我的系统中FCLK=533MHZPCLK=FCLK/8,根据下面的公式

    5

    根据图25,可以算出A/D转换频率=PCLK/(49+1)=FCLK/(8*(49+1))=533/(8*50)=1.3325MHZ,从而计算出一次的A/D转换时间=5*(1/1.3325MHZ)=3.725us

     

    ADCDAT0

    ADCDAT0ADC转换数据寄存器,ADCDAT0[9:0]保存着电池电压值经过ADC转换之后的数字值,这里ADCDAT0要和0x3FF进行与运算就是为了取出ADCDAT0[9:0]的值

    6

     

     

    1.3    KSPS

    7

    KSPS(kilo samples per second)表示每秒采样千次,是转换速率的单位,而转换速率(conversion rate)是指完成一次从模拟量到数字量的AD转换所需要时间的倒数。我们知道S3C2443ADC最大的A/D转换时钟频率是2.5MHZ,所以可以计算出一次A/D转换的时间=5*(1/2.5MHZ)=2us,所以1s中的采样次数=1s/2us=500KSPS,这就是500KSPS的由来。

     

     

    2.       获取电池状态的函数BatteryPDDGetStatus

    电池驱动mdd层的battapi.c下面的函数BatteryAPIGetSystemPowerStatusEx2会定时调用BatteryPDDGetStatus来获取电池的状态,包括是否在充电,电量的百分比等,这些信息就是功过pddBatteryPDDGetStatus函数来填充结构体SYSTEM_POWER_STATUS_EX2的成员来告诉mdd层的,这个结构体/WINCE600/PUBLIC/COMMON/SDK/INC/winbase.h中定义,如下:

    8

    下面来学习这个结构体的主要的常用的成员的含义

    ACLineStatus

    用于指示AC电源状态,也就是电池是否在充电

    9

    BatteryFlag

    表示电池是否在充电以及充电的情况

    10

    BatteryLifePercent

    表示电池电量所剩的百分比,这个值可以是从0100,也可以是BATTERY_PERCENTAGE_UNKNOWN的状态,我们的电池的驱动中就有这方面的应用,在充电的时候,如果计算出电池电量小于50%的时候,就不显示电池具体的电量显示,这时候只需要对BatteryLifePercent赋值为BATTERY_PERCENTAGE_UNKNOWN就可以了

    11

    12

    13

    14

     

     

    S3C2440AADC和触摸屏接口

    http://blog.sina.com.cn/s/blog_63f980240100kxjx.html

     

    KSPS

    http://www.baidu.com/s?wd=KSPS

     

     

  • 相关阅读:
    location 匹配规则
    nginx+keepalived 高可用方案
    Nginx 静态文件服务
    web服务器-nginx优化
    Oracle 修改字符集(AL32UTF8 转换成UTF8字符集)
    xshell复制粘贴
    关于mysql中的DDL,DML,DQL和DCL
    LVS实现Kubernetes集群高可用
    k8s实践(一):Centos7.6部署k8s(v1.14.2)集群
    Centos7.6部署k8s v1.16.4高可用集群(主备模式)
  • 原文地址:https://www.cnblogs.com/LoongEmbedded/p/5298806.html
Copyright © 2011-2022 走看看