回答

收藏

【赚周年币】技术帖Week3-Day5——LPC824之18、模拟比较器

#线上活动 #线上活动 2872 人阅读 | 0 人回复 | 2017-01-19

本帖最后由 toofree 于 2017-1-19 03:24 编辑

        【赚周年币】技术帖Week3-Day5——LPC824之18、模拟比较器

        LPC824内部集成了模拟比较器,好像其它cortex-m0系列的也有模拟比较器,知道有,但是从来没用过,那么今天就来试试。
       今天以工程“LPC824_Example_Code_Bundle_Keil_r1.0\Keil_Projects\Example_Analog_Comparator\Example_Analog_Comparator.uvoptx”模板来学习。
      


       本测试不用任何连线,因为是在模拟比较器内部模拟梯度与内部电压的比较。
       样例程序中,主要用到两个文件“Example_Analog_Comparator.c”和“Example_Analog_Comparator_ISR.c”,其它文件在别的工程要类似,这里不必做解释。其中两个文件中,又各一个函数,主函数main()和中断处理函数CMP_IRQHandler()。

        主函数,初始化调试串口,开启模拟比较器上电,并开比较器和IO时钟,复位比较器。
        


        这两句是最关键的。设置模拟比较器负极为BANDGAP(即内部0.9V参考电源),正极为模拟梯度输出(即LADDER OUT),检测方式为双沿(即大于和小于的瞬间都检测)。模拟梯度参考电压为电源电压(3.3V),梯度初始值为0,使能梯度。
        

        那么比较用户手册“UM10800.pdf”,以上设置实质就是下图。
      


        清除沿检测状态,模拟比较器开中断。初始化LED,并点亮红灯。
        


        从调试串口输入不大于1F的16进制数,把读取的数赋更新到模拟梯度寄存器。因为模拟梯度是5位的,避免出现大于1F的数,做了位与0x1f操作。
        


        中断处理函数中,判断比较结果,结果为1,点亮绿灯;结果为0点亮红灯。那么怎么判断呢,3.3V分为31份,那么每一份步进值为0.10645V,步进值乘以梯度,即为比较器正极电压;比较器负极电压为0.9V。0.10645*8=0.851V, 0.10645*9=0.958V,那么显然,梯度小于等于8的时候,比较器结果输出为0;梯度大于等于9的时候,比较器结果输出为1。
        


        实际可比较的源有很多,可以为ICMP_I1、ICMP_I2、ICMP_I3、ICMP_I4、bandgap、ADC0、VSS、LADDER OUT,其中任意两者的组合,也就是8x7 = 56种。

        最后一天,收工。

        

        
      
关注下面的标签,发现更多相似文章

评分

参与人数 1 +75 收起 理由
EEboard爱板网 + 75 3周发帖养成记 奖励

查看全部评分

分享到:
回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条