高通平台ADC开发-AT+QTEMP

1.高通平台AP内部没有集成ADC电路,使用的是PMU内部的ADC,通过PMU的GPIO或者AMUX采集接口,AT+QADC命令采集电压信息,AT+QTEMP命令将采集的电压信息转换为温度信息,信息通过spmi总线发送给AP处理。sdx55平台使用的PMU型号为PMX55,内部集成的ADC channel信息如下:

PMX55 ADC功能图:

ADC channel定义在qcom,spmi-vadc.h中,根据不同的芯片内部上拉电阻来区分不同channel,上拉电阻可以通过软件来控制,比如下图中的AMUX1物理接口的ADC如果内部上拉是30k,则软件控制的ADC channel是0x2d;如果内部上拉是100k,则ADC channel是0x4d

比如我们需要读AMUX4(原理图如下)物理channel的温度信息,首先确认下内部上拉选择多少,比如100k上拉,则从qcom,spmi-vadc.h中我们知道100k内部上拉的AMUX4的channel是0x50。

则需要修改的代码如下,在pmxprairie.dtsi的pmxprairie_adc_tm_iio节点中添加改节点的处理信息

从上图可以看出来实际的ADC配置节点是在pmxprairie_vadc中,所以需要做下面修改,在sdxprairie-mtp.dtsi的pmxprairie_vadc中添加如下节点代码,属性的解析可以参考qcom,spmi-adc5.txt文档

  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据题目要求,需要设计一个六进制减法计数器,具有同步始能、异步复位和预置控制功能。以下是程序设计: ```vhdl LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; USE IEEE.STD_LOGIC_ARITH.ALL; USE IEEE.STD_LOGIC_UNSIGNED.ALL; ENTITY CNT6 IS PORT( EN,CLR,LD,CLK: IN STD_LOGIC; D: IN STD_LOGIC_VECTOR(3 DOWNTO 0); Q: OUT STD_LOGIC_VECTOR(3 DOWNTO 0) ); END CNT6; ARCHITECTURE BEHA OF CNT6 IS SIGNAL QTEMP: STD_LOGIC_VECTOR(3 DOWNTO 0); BEGIN PROCESS(CLK,CLR,LD) BEGIN IF CLR = '1' THEN QTEMP <= "0000"; -- CLR = 1 清零 ELSIF (CLK'EVENT AND CLK = '1') THEN -- 判断是否上升沿 IF LD = '1' THEN QTEMP <= D; -- 判断是否置位 ELSIF EN = '1' THEN -- 判断是否允许计数 IF QTEMP = "0000" THEN QTEMP <= "0101"; -- 等于0,计数值置5 ELSE QTEMP <= STD_LOGIC_VECTOR(UNSIGNED(QTEMP) - 1); -- 否则,计数值减1 END IF; END IF; END IF; Q <= QTEMP; END PROCESS; END BEHA; ``` 该计数器的原理如下: - 当CLR为高电平时,计数器清零,QTEMP被赋值为"0000"。 - 在时钟的上升沿边缘,判断LD是否为高电平,如果是,则将D的值赋值给QTEMP;如果不是,则继续判断EN是否为高电平。 - 如果EN为高电平,则进入计数模式。如果QTEMP的值为"0000",则将QTEMP赋值为"0101",表示计数器的初始值为5;否则,将QTEMP的值减1。 - 最后将QTEMP的值赋给输出端口Q。 注意,在计数模式下,只有当EN为高电平时计数器才会工作。如果EN为低电平,则计数器不会进行计数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值