0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

GPADC功能介绍与实现

电子设计 来源:电子设计 作者:电子设计 2022-01-12 15:33 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

Other Parts Discussed in Post:AWR1642, IWR1642, IWR1642BOOST, AWR1443, IWR1443

作者:TI 工程师 Chris Meng

GPADC功能介绍

IWR1642/AWR1642的毫米波传感器芯片上集成了通用ADC(GPADC)的功能。用户可以利用GPADC对外部电压,例如电源电压进行监控。IWR1642/AWR1642上的ADC采样率为625Ksps,精度为10-bit,提供给用户6个ADC管脚进行测量。其中5个ADC支持缓冲模式和非缓冲模式,一个ADC仅支持非缓冲模式。在非缓冲模式下,ADC的测量范围是0V~1.8V,而缓冲模式下,测量范围是0.4V~1.3V。

GPADC本身是由雷达子系统控制,用户可以通过在MSS或者DSS调用检测GPADC的API,向雷达子系统发送相关请求来获取GPADC相关信息。雷达子系统收到ADC检测的消息后,会调度ADC测量和其他射频模拟的检测功能。用户可以配置ADC设定时间,也就是跳过多少采样点后开始正式采用,以及连续采样点数。雷达子系统会在一帧结束的时候把ADC采样的最小值,最大值和平均值通过消息发给GPADC采样的发起者(MSS或者DSS)。

注意事项

这里有两点需要注意。一个是BSS里面异步消息发送对象的设置。对于GPADC这个检测,是调用配置GPADC的那个核会收到BSS发出的消息。一个是mmwave Link下消息发送的对象。在mmw demo里面使用了mmwave link的消息,这个消息是不同于BSS的异步消息配置。在mmw demo里MMS代码的消息处理函数MmwDemo_mssMmwaveEventCallbackFxn()的返回值默认为0,表示在接收到消息后,同样需要把消息发给DSS。所以当MSS发起了GPADC的配置,默认情况下不仅MSS会收到GPADC的消息,DSS也是会收到GPADC的消息。如果DSS不处理收到的GPADC消息,DSS侧就会报错。所以如果不需要DSP处理相关事件,可以在DSP侧的MmwDemo_dssMmwaveEventCallbackFxn函数里添加GPADC消息的处理,例如收到消息后break。但是,更好的方法是在mss侧把相应消息事件的返回值设置为1。这样可以减少对DSS的打断。默认的代码MmwDemo_mssMmwaveEventCallbackFxn()函数的返回值只有统一的一个值,因为mmw demo每个核都会处理多个消息,所以最好修改一下MmwDemo_mssMmwaveEventCallbackFxn为不需要传给dss的消息返回值为1,而需要的返回值为0。如果用户需要在DSS侧调用GPADC的配置代码,也需要类似的处理。

GPADC功能实现

下面以MSS读取GPADC为例,介绍一下如何在mmWave SDK2.0的mmw demo下实现多次获取GPADC数值的功能。下面的测试基于IWR1642 BOOST ES2.0。DSS读取GPADC,也可以使用类似方法。

首先需要在mss_main.c里面添加GPADC配置的相关代码。每调用一次配置GPADC,就能够收到一个相关GPADC的消息,获取GPADC的值。如果需要多次读取GPADC的值,需要多次调用GPADC的配置。

#include

#include

rlUInt8_t isGetGpAdcMeasData = 0U;

rlRecvdGpAdcData_t rcvGpAdcData = {0};

const rlGpAdcCfg_t gpAdcCfg =

{

.enable = 0x3F,

.bufferEnable = 0,//0表示非缓冲模式,

//1表示使能缓冲模式,如果全部ADC使能缓冲模式则配置0x3F

.numOfSamples[0].sampleCnt = 20,

.numOfSamples[0].settlingTime = 3,

.numOfSamples[1].sampleCnt = 14,

.numOfSamples[1].settlingTime = 3,

.numOfSamples[2].sampleCnt = 14,

.numOfSamples[2].settlingTime = 3,

.numOfSamples[3].sampleCnt = 14,

.numOfSamples[3].settlingTime = 3,

.numOfSamples[4].sampleCnt = 14,

.numOfSamples[4].settlingTime = 3,

.numOfSamples[5].sampleCnt = 14,

.numOfSamples[5].settlingTime = 3,

.numOfSamples[6].sampleCnt = 14,

.numOfSamples[6].settlingTime = 3,

.numOfSamples[7].sampleCnt = 14,

.numOfSamples[7].settlingTime = 3

.numOfSamples[8].sampleCnt = 14,

.numOfSamples[8].settlingTime = 3,

.numOfSamples[9].sampleCnt = 14,

.numOfSamples[9].settlingTime = 3,

.numOfSamples[10].sampleCnt = 14,

.numOfSamples[10].settlingTime = 3,

.numOfSamples[11].sampleCnt = 14,

.reserved0 = 0

};

int32_t MmwaveLink_setGpAdcConfig (void)

{

int32_t retVal;

retVal = rlSetGpAdcConfig(RL_DEVICE_MAP_INTERNAL_BSS, (rlGpAdcCfg_t*)&gpAdcCfg);

/* Check for mmWaveLink API call status */

if(retVal != 0)

{

/* Error: Link reported an issue. */

System_printf("Error: rlSetGpAdcConfig retVal=%d\n", retVal);

return -1;

}

while(isGetGpAdcMeasData == 0U)

{

/* Sleep and poll again: */

Task_sleep(1);

}

return 0;

}

下面是具体调用GPADC配置的代码,可以添加在用户需要测试外部电压的地方。

if (MmwaveLink_setGpAdcConfig() < 0)               

{

System_printf ("Error: MmwaveLink_setGpAdcConfig\n"); break;

}

接下来在MSS侧添加GPADC消息的处理代码。下面的处理代码是在CCS输出窗口打印出ADC5的平均值。相关代码添加在MmwDemo_mssMmwaveEventCallbackFxn()函数里。将MmwDemo_mssMmwaveEventCallbackFxn函数的返回值设置为1,这样DSP就不会收到该消息,也就不需要在DSP侧添加消息处理代码了。当GPADC的配置代码被调用的时候,用户就可以在CCS打印输出窗口看到测量的GPADC的值。

case RL_RF_AE_GPADC_MEAS_DATA_SB:

{

isGetGpAdcMeasData = 1U;

memcpy(&rcvGpAdcData, payload, sizeof(rlRecvdGpAdcData_t));

System_printf ("GPADC value: %d V\n", rcvGpAdcData.sensor[4].avg);

break;

}

下面是在IWR1642BOOST上实测的数据和万用表测量的数据的比较。

万用表测量(V) ADC5的平均值 GPADC值转换为电压 (V)
IWR1642 ES2.0 EVM 1.7176 980 1.8/1024*980=1.722656
0 0 1.8/1024*0=0

上面介绍的GPADC使用方法适用于IWR1642/AWR1642,对于IWR1443/AWR1443上的GPADC的使用也是很好的参考。

审核编辑:何安

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 嵌入式处理
    +关注

    关注

    0

    文章

    341

    浏览量

    10533
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    示波器迟滞功能介绍

    (Hysteresis)。很多工程师在操作示波器时会忽略该功能,但实际上,它是实现稳定测量与触发,必须理解并活用的核心功能
    的头像 发表于 04-07 11:04 977次阅读
    示波器迟滞<b class='flag-5'>功能</b><b class='flag-5'>介绍</b>

    基于蓝牙信标的医院人员定位从特点、技术实现到应用功能详解

    本文介绍融合蓝牙LoRa与iBeacon的养老院室内人员定位系统,实现老人与护工高精度(±0.5米)、无感化、可视化管理。具备电子围栏、SOS报警、轨迹回溯、巡检考评及视频联动等功能,提升响应效率60%,降低意外风险,增强家属信
    的头像 发表于 02-04 17:51 1105次阅读
    基于蓝牙信标的医院人员定位从特点、技术<b class='flag-5'>实现</b>到应用<b class='flag-5'>功能</b>详解

    使用 CW32 实现电池备份(VBAT)功能

    介绍了如何CW32基于 CW32 系列 MCU,通过增加简单的外部电路配合软件实现 VBAT 功能,在系统电源掉 电后仍能保持 RTC 时钟正常计时,以及如何降低系统功耗,从而延长后备电池的使用寿命
    发表于 01-04 06:34

    使用 HTTP 协议能否实现 IAP 功能

    使用 HTTP 协议,能否实现 IAP 功能
    发表于 12-23 06:35

    电能质量在线监测装置的多级告警阈值功能是如何实现的?

    电能质量在线监测装置的多级告警阈值功能通过 “硬件采集 - 软件计算 - 阈值比对 - 智能触发 - 分级响应” 的全链路闭环实现,核心是为不同电能质量指标设置差异化阈值与响应策略,适配异常严重程度
    的头像 发表于 12-10 14:32 617次阅读
    电能质量在线监测装置的多级告警阈值<b class='flag-5'>功能</b>是如何<b class='flag-5'>实现</b>的?

    请问有哪些方法可以实现GPIO状态保持功能

    有哪些方法可以实现GPIO状态保持功能
    发表于 12-08 07:23

    速通音频处理:掌握TTS播放、文件播放与录音核心,实现完整功能

    这三大模块的核心逻辑,助你高效打通从核心功能到完整功能实现路径。 一、概述   本文档详细介绍了基于 Air8000 开发板或者 Air8000 核心板的音频
    的头像 发表于 11-21 19:27 404次阅读
    速通音频处理:掌握TTS播放、文件播放与录音核心,<b class='flag-5'>实现</b>完整<b class='flag-5'>功能</b>

    AG32 内置的CPLD 的DMA功能如何实现

    一、在AGM 的AG32 CPLD中实现DMA(直接内存访问)功能,其核心逻辑如下: 1、系统架构•采用主从架构:MCU作为主设备,CPLD作为从设备•交互方式:MCU通过访问寄存器的方式
    发表于 10-31 15:42

    如何利用Trace机制实现LLCP预览功能

    在蓝牙协议栈开发过程中,有时需要预先知道 LLCP。本文将介绍如何利用 Trace 机制实现 LLCP 预览功能
    的头像 发表于 10-09 17:55 2075次阅读

    能耗数据采集能实现哪些功能

    能耗可视化 功能实现 :通过智能电表、燃气表、水表等传感器,实时采集电力、天然气、水等能源的消耗数据,并以仪表盘、图表等形式展示。 应用场景 : 工厂生产线:监控设备级能耗(如单台注塑机、焊接机的实时用电量); 商
    的头像 发表于 09-12 17:45 1229次阅读

    工业组态云平台可以实现哪些功能

    工业组态云平台可以实现数据采集与监控、报警通知、远程控制与运维、数据分析与决策、组态设计与可视化等多种功能,以下是具体介绍: 1、数据采集与监控 实时数据采集:通过内置多种工业设备驱动,支持主流
    的头像 发表于 08-18 14:36 550次阅读

    CANoe中ADAS功能介绍

    )。AFS作为CANoe基础功能的一部分,不需要购买额外的Option即可使用。同时,CANoe本身的强大功能和开放接口使得结合总线通信,集成第三方工具,实现SI
    的头像 发表于 07-10 14:55 1476次阅读
    CANoe中ADAS<b class='flag-5'>功能</b>集<b class='flag-5'>介绍</b>

    应用中的“复制功能”如何实现##HarmonyOS应用开发##

    ​很多应用都有一个“点击复制”的功能,这一功能在实际操作中非常便捷,这一功能实现主要是通过Basic Services Kit(基础服务)中的“剪贴板服务”
    发表于 06-30 17:27

    HarmonyOS实战: 城市选择功能的快速实现

    最近在日常开发过程中,需要实现城市选择功能,同时支持模糊搜索。看似简单的功能动手实现起来却有很多难点。本篇文章详细记录开发过程中遇到的问题和对应的解决方法,希望能够帮助你,建议点赞收藏
    的头像 发表于 06-24 17:07 576次阅读

    【HarmonyOS 5】桌面快捷方式功能实现详解

    【HarmonyOS 5】桌面快捷方式功能实现详解 ##鸿蒙开发能力 ##HarmonyOS SDK应用服务##鸿蒙金融类应用 (金融理财# 一、前言 在移动应用开发中,如何让用户快速触达核心功能
    的头像 发表于 06-21 16:42 2441次阅读
    【HarmonyOS 5】桌面快捷方式<b class='flag-5'>功能</b><b class='flag-5'>实现</b>详解