Qcom LK阶段如何使用ADC介绍
发布日期:2021-06-30 21:59:16 浏览次数:2 分类:技术文章

本文共 2537 字,大约阅读时间需要 8 分钟。

摘要

本文叙述了在高通平台LK阶段读取mpp2引脚电平的实现过程,附上实现代码。主要实现过程包括配置引脚功能,读取引脚电压。需要特别注意配置mpp2通道和AIN route的选择。

需要修改的文件:

bootable\bootloader\lk\app\aboot\aboot.c
Pm8x41_adc.c (dev\pmic\pm8x41)
Pm8x41_adc.h (dev\pmic\pm8x41\include)

PM8916 MPP2引脚说明

可以看出
MPP2引脚具有ADC输入的功能。

修改过程及例子

在使用mpp2
引脚之前需要配置这个引脚为ADC
功能,在LK
阶段提供了一个操作函数,在Pm8x41_adc.c (dev\pmic\pm8x41)
中实现。
/*
 * API: pm8x41_enable_mpp_as_adc
 * Configurate the MPP pin as the ADC feature.
 */
void
pm8x41_enable_mpp_as_adc(uint16_t mpp_num)
注意:mpp2
mpp_num
值为0x01
使用pm8x41_adc_channel_read(mpp2_chan);读取该引脚ADC采样得到的电压值
另外
mpp2_chan
的值是33(0x21)
这个通道号是根据这个寄存器
VADC1_LC_USR_ADC_CH_SEL_CTL
来的:
在配置引脚的地方有一个
选择ADC
输入路线选择的地方,根据寄存器信息可知道这里可以选择AMUX5-8!

下面是需要修改的代码:

\bootable\bootloader\lk\app\aboot\aboot.c
[cpp]
  1. void adc_test_selc_lcm()  
  2. {  
  3.          uint32_t vadc_chan3;  
  4.    
  5.          uint16_t mpp2_chan = 33;  
  6.          /* 
  7.           * TEST: Read the voltage on batt_id & vbat_sns channels 
  8.           */  
  9.           
  10.          pm8x41_enable_mpp_as_adc_for_mpp2(1);  
  11.           
  12.          vadc_chan3 = pm8x41_adc_channel_read(mpp2_chan);  
  13.          dprintf(INFO, "The channel [%d] voltage is :%d\n",mpp2_chan, vadc_chan3);  
  14.    
  15. }  
  16.    
  17. void aboot_init(const struct app_descriptor *app)  
  18. {  
  19. ……  
  20. adc_test_selc_lcm();  
  21. ……  
  22. }  
Pm8x41_adc.c (dev\pmic\pm8x41)
 
[cpp]
  1. /* 
  2.  * This is the predefined adc configuration values for the supported 
  3.  * channels 
  4.  */  
  5. static struct adc_conf adc_data[] = {  
  6.          CHAN_INIT(VADC_USR1_BASE, VADC_BAT_CHAN_ID,     VADC_MODE_NORMAL, VADC_DECIM_RATIO_VAL, HW_SET_DELAY_100US, FAST_AVG_SAMP_1, CALIB_RATIO),  
  7.          CHAN_INIT(VADC_USR1_BASE, VADC_BAT_VOL_CHAN_ID, VADC_MODE_NORMAL, VADC_DECIM_RATIO_VAL, HW_SET_DELAY_100US, FAST_AVG_SAMP_1, CALIB_ABS),  
  8.          CHAN_INIT(VADC_USR1_BASE, MPP_8_CHAN_ID, VADC_MODE_NORMAL, VADC_DECIM_RATIO_VAL, HW_SET_DELAY_100US, FAST_AVG_SAMP_1, CALIB_ABS),  
  9.          CHAN_INIT(VADC_USR1_BASE, MPP_2_CHAN_ID, VADC_MODE_NORMAL, VADC_DECIM_RATIO_VAL, HW_SET_DELAY_100US, FAST_AVG_SAMP_1, CALIB_ABS),  
  10.    
  11. };  
  12.    
  13. void pm8x41_enable_mpp_as_adc_for_mpp2(uint16_t mpp_num)  
  14. {  
  15.          uint32_t val;  
  16.          if(mpp_num >MPP_MAX_NUM)  
  17.          {dprintf(CRITICAL,"Error: The MPP pin number is unavailable\n");  
  18.          return;}  
  19.          /* set the MPP mode as AIN */  
  20.          val =(MPP_MODE_AIN <<Q_REG_MODE_SEL_SHIFT)\  
  21.                    |(0x1<<Q_REG_OUT_INVERT_SHIFT)\  
  22.                    |(0x0<<Q_REG_SRC_SEL_SHIFT);  
  23.          REG_WRITE((MPP_REG_BASE +mpp_num *MPP_REG_RANGE +Q_REG_MODE_CTL),val);  
  24.          /* Enable the MPP */  
  25.          val =(MPP_MASTER_ENABLE <<Q_REG_MASTER_EN_SHIFT);  
  26.          REG_WRITE((MPP_REG_BASE +mpp_num *MPP_REG_RANGE +Q_REG_EN_CTL),val);  
  27.          /* AIN route to AMUX8 */  
  28.          val =(0x1<<Q_REG_AIN_ROUTE_SHIFT);//AMUX1  
  29.          REG_WRITE((MPP_REG_BASE +mpp_num *MPP_REG_RANGE +Q_REG_AIN_CTL),val);  
  30. }  
Pm8x41_adc.h (dev\pmic\pm8x41\include)
[cpp]
  1. #define MPP_2_CHAN_ID                   33  

转载地址:https://loongembedded.blog.csdn.net/article/details/80577667 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:qcom charger
下一篇:msm8937 充电相关

发表评论

最新留言

表示我来过!
[***.240.166.169]2024年04月17日 05时49分47秒

关于作者

    喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!

推荐文章

“头号玩家”距离我们究竟有多远? 2021-07-04
首批!金山云获得可信金融云解决方案认证 2021-07-04
金山云张斯聪:探索沉浸式解决方案 提升教育云上体验 2021-07-04
高防弹性IP 金山云荣获“可信云技术最佳实践--网络安全”奖 2021-07-04
一周拿下百度Offer!211本+985硕+计算机专业~ 2021-07-04
闭关三月!猛男逆道而行,四杀斩获阿里 / 腾讯 / 京东 / 百度等大厂 offer 2021-07-04
花了3个达不溜!让隔壁小姐姐从圈内大佬手中拿到“阿里面试官手册”,看完之后我大呼“不亏”! 2021-07-04
上线三天获 22w 浏览量!2021 最新一线大厂 Java 高级架构师面试题总结~ 2021-07-04
电信物联网平台SOTA升级(软件升级)的全流程说明 2019-05-01
电信物联网平台插件开发相关总结 2019-05-01
ARM之一 分散加载文件(scatter)详述 2019-05-01
centos6 python3.6 安装配置jupyer 2019-05-01
CDH5.14 spark2.4.0配置python3 以及读取hive表 2019-05-01
VMware安装centos7.2后配置网络并设置固定ip 2019-05-01
在 centos7.2安装docker 并设置阿里云源 2019-05-01
centos7.2 将mysql添加到服务中 2019-05-01
【nifi数据采集】nifi给kafka打数据遇到的坑 - kafka2.1 的listeners配置 2019-05-01
【linux用户模块】/etc/passwd的字段含义 2019-05-01
【linux用户模块】用户/用户组的管理 2019-05-01
【spark2】【源码学习】【环境编译】在idea导入spark源码,执行example并debug 2019-05-01