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

     

     

  • 相关阅读:
    bzoj 1017 魔兽地图DotR
    poj 1322 chocolate
    bzoj 1045 糖果传递
    poj 3067 japan
    timus 1109 Conference(二分图匹配)
    URAL 1205 By the Underground or by Foot?(SPFA)
    URAL 1242 Werewolf(DFS)
    timus 1033 Labyrinth(BFS)
    URAL 1208 Legendary Teams Contest(DFS)
    URAL 1930 Ivan's Car(BFS)
  • 原文地址:https://www.cnblogs.com/liang123/p/6325762.html
Copyright © 2011-2022 走看看