225|1

136

帖子

2

TA的资源

一粒金砂(高级)

【MCXA156开发板测评】-2-ADC [复制链接]

本帖最后由 慕容雪花 于 2025-1-9 10:25 编辑

MCXA156具有非常强大的模拟外设ADC (2路16 bit ADC0与ADC1)与一路12 bit DAC,还配有一路运放单元,2路LPCMP,还有一个温度传感器。

image.png  

ADC有ADC0与ADC1.

image.png    

image.png  

image.png  

开发板的mikro-bus接口上引出了I2C接口可以后续驱动OLED,还有个ADC引脚P3_30: ANALOG-ADC1_A21,可以作为数据采集入口。

image.png  

image.png  

 

温度传感器TMP235介绍
Adafruit退出的TMP235温度传感器有三个引脚,分别是GND, VCC和模拟温度信号。其中,模块可以3v-5v供电,在外界温度为-50°C时,模拟温度信号的输出为0v;在外界温度为125°C时,模拟温度信号的输出为1.75v
此外,手册还提供了一个通过电压计算温度的公式: Temp °C = 100*(reading in V) - 50。因此,接下来通过ADC获取温度值后,可以方便的进行温度监测等后续功能开发。

image.png  

 

硬件实物连接图:

image.png  

 

在代码中指定使用ADC1_A21通道:

#define DEMO_LPADC_BASE                  ADC1
#define DEMO_LPADC_USER_CHANNEL          21U
#define DEMO_LPADC_USER_CMDID            1U                          /* CMD1 */
#define DEMO_LPADC_VREF_SOURCE           kLPADC_ReferenceVoltageAlt3 /* VDDA */
#define DEMO_LPADC_DO_OFFSET_CALIBRATION true
#define DEMO_LPADC_USE_HIGH_RESOLUTION   true

使用ADC模块的第一步是初始化一个ADC默认配置结构体。

    LPADC_GetDefaultConfig(&mLpadcConfigStruct);
    mLpadcConfigStruct.enableAnalogPreliminary = true;
#if defined(DEMO_LPADC_VREF_SOURCE)
    mLpadcConfigStruct.referenceVoltageSource = DEMO_LPADC_VREF_SOURCE;
#endif /* DEMO_LPADC_VREF_SOURCE */
#if defined(FSL_FEATURE_LPADC_HAS_CTRL_CAL_AVGS) && FSL_FEATURE_LPADC_HAS_CTRL_CAL_AVGS
    mLpadcConfigStruct.conversionAverageMode = kLPADC_ConversionAverage128;
#endif /* FSL_FEATURE_LPADC_HAS_CTRL_CAL_AVGS */
    LPADC_Init(DEMO_LPADC_BASE, &mLpadcConfigStruct);

其中,enableAnalogPreliminary是预先使能ADC相关的模拟电路从而快速开始转换,代价是较高的电流消耗。

    bool enableAnalogPreliminary; /*!< ADC analog circuits are pre-enabled and ready to execute conversions without
                                       startup delays(at the cost of higher DC current consumption). */

其次,mLpadcConfigStruct.conversionAverageMode = kLPADC_ConversionAverage128,是在存储转换结果之前在硬件电路上进行均值处理。

image.png  
 

接下来配置ADC转换命令:

    LPADC_GetDefaultConvCommandConfig(&mLpadcCommandConfigStruct);
    mLpadcCommandConfigStruct.channelNumber = DEMO_LPADC_USER_CHANNEL;
#if defined(DEMO_LPADC_USE_HIGH_RESOLUTION) && DEMO_LPADC_USE_HIGH_RESOLUTION
    mLpadcCommandConfigStruct.conversionResolutionMode = kLPADC_ConversionResolutionHigh;
#endif /* DEMO_LPADC_USE_HIGH_RESOLUTION */
    LPADC_SetConvCommandConfig(DEMO_LPADC_BASE, DEMO_LPADC_USER_CMDID, &mLpadcCommandConfigStruct);

设置触发方式:

    /* Set trigger configuration. */
    LPADC_GetDefaultConvTriggerConfig(&mLpadcTriggerConfigStruct);
    mLpadcTriggerConfigStruct.targetCommandId       = DEMO_LPADC_USER_CMDID;
    mLpadcTriggerConfigStruct.enableHardwareTrigger = false;
    LPADC_SetConvTriggerConfig(DEMO_LPADC_BASE, 0U, &mLpadcTriggerConfigStruct); /* Configurate the trigger0. */

获取ADC转换结果并打印:

        while (!LPADC_GetConvResult(DEMO_LPADC_BASE, &mLpadcResultConfigStruct))
        {
        }
        static uint32_t tempAdcRaw;
		static float tempAdcVolt;
		static float Temp;
		tempAdcRaw = ((mLpadcResultConfigStruct.convValue) >> g_LpadcResultShift);
		tempAdcVolt = 3.3*tempAdcRaw/65536;
		Temp = (100.0*tempAdcVolt-50);
        PRINTF("ADC value: %d, Voltage: %.3f Volt, Temperature_C: %.2f degree_C\r\n", tempAdcRaw, tempAdcVolt, Temp);

烧录测试:

image.png  

 

采样电压值跟温度均为浮点数,没有正常显示,猜测是跟浮点数打印相关的开关没有使能。在fsl_debug_console.h中:

/*! [url=home.php?mod=space&uid=159083]@brief[/url] Definition to printf the float number. */
#ifndef PRINTF_FLOAT_ENABLE
#define PRINTF_FLOAT_ENABLE 1U
#endif /* PRINTF_FLOAT_ENABLE */

再次测试,能够正常获取温度:

image.png  

 

 

此帖出自NXP MCU论坛

回复
举报

136

帖子

2

TA的资源

一粒金砂(高级)

补充一下ADC1的配置:

image.png  

 

image.png  

 

image.png  

 

image.png  

此帖出自NXP MCU论坛

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
推荐帖子
【EEWORLD模块整理】 DA

一些DA转换的资料,需要的朋友拿去用。

示波器资料总结及选择考虑因素

模拟和数字示波器功能区别 示波器是观察波形的 ...

IAR-AVR常用例程一锅端:PS2键盘+红外遥控器+1602+12864+DS1302+AT24C02+UART等

各个功能的文件封装的比较规矩,方便大家移植过去用,IDE环境是IAR511B版本。 发贴的目的是方便大家移植常用的程序。 此板是我 ...

【10月DIY】粗略的角度测量小装置

由于一个参加马帮的朋友需要 帮他迪艾歪了一个粗略测量角度的小装置 用到了下图的几个器件 217508 一块mega8L 一块MMA7455 ...

【STM32F7设计大赛入侵者】进度贴:FTP Server调试OK

项目实现功能回顾: 利用STM32F746G DISCOVERY 自带的DCMI接口驱动摄像头OV2640通过Chrom—ART图像加速器的专用DMA采集实 ...

以太网LED不亮

484575 万能的论坛大神们,问一下,这个硬件电路设计上是否存在问题,把网线连接上去,网口LED都不会亮的,更不用说后面的收 ...

车载以太网(Automotive Ethernet, 2nd)来自BMW Kirsten Matheus

本帖最后由 rockafe3in1 于 2020-10-14 18:39 编辑 背景介绍 最近有幸参与在调研关于车载以太网领域的现状 ...

牛年开工第一天

愉快的假期已经结束了,开始敲键盘了。 新的一年,首先祝论坛的各位牛年大吉,工作顺利,在论坛里学到自己想学习的,时时 ...

电源管理方案分享,喜欢的看过来了。

最近,Qorvo的一篇文章,针对紧凑型设计而推出的电源管理芯片产品,具体看一下,这个电源管理方案吧。 Qorvo的电源管理芯片家 ...

基于FPGA的数字信号处理(第2版)

本书围绕Xilinx新一代28nm工艺芯片7系列FPGA,结合Xilinx新一代开发工具Vivado以及针对算法开发的Vivado HLS和System Generator ...

关闭
站长推荐上一条 1/8 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表