MSPM0L1306例程学习-ADC部分(1)

MSPM0L1306例程学习-ADC部分(1)

MSPM0L1306例程学习

使用的TI的官方例程,即SDK里边包含的例程代码。

MCU使用的是MSPM0L1306, 对于ADC部分,有10个例程:
mspm0sdk中的ADC例程

例程理解

ADC的转换有多种工作模式,从最简单的单通道单次转换开始入手,即对特定的某个输入通道,进行一次电压的采样,并且读取ADC的转换结果。

标黑的三个例程,代码结构几乎相同,所使用的参考电压源不同而已。都是对ADC转换的结果,与参考电压的一半进行比较,根据判断结果点亮对应的LED灯。

  • adc12_single_conversion :单通道单次转换,直接使用AVCC作为参考电压源;
  • adc12_single_conversion_vref_internal:单通道单次转换,使用内部参考电压源,配置VREF为2.5V;
  • adc12_single_conversion_vref_external:单通道单次转换,使用外部参考电压源,需要外接参考电压到VREF+引脚;

从这三个例程入手,代码结构如下:
在这里插入图片描述
在这里插入图片描述

详细代码注释如下,因为代码都涉及到sysconfig图形配置工具,所以把对应的内容也一并截图上传。

  • GPIO部分,相同的配置,配置了一个GPIO口,用于点亮LED灯操作;
  • ADC部分,也基本相同的配置,时钟,分频;单通道单次转换,使用MEM0,自动采样,软件触发;
  • 在参考电压的选择上,是最大的区别,3个例程分别选择了不同的参考电压,如果选择了vref,还需要在vref模块中对电压进行配置。

adc12_single_conversion

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
详细代码如下:

/** ADC转换的SDK例程* 文件名:adc12_single_conversion.c** 描述:*   1、单通道单次转换、自动采样模式、软件触发;*   2、使用MEM0,通道0(PA27),直接用电源电压作为参考电压*   3、PA0引脚连接有LED灯;*   4、对通道0进行AD采样和转换,根据转换结果进行LED的指示操作:*     a.当转换结果小于0x7ff时,LED灭; 否则,点亮LED** 操作描述:*   1、下载程序,全速运行;*   2、引脚PA27通过杜邦线连接VCC或GND*     a. 连接到VCC时,红色LED点亮;*     b. 连接到GND时,红色LED熄灭.* 注意事项:*   1、如果使用的是LP-MSPM0L1306, PA27引脚默认通过跳线帽连接三色LED2;** 思考:*   给输入引脚上施加一个电压,看测量值是否符合预取结果。** 修改:*   基于官方的sdk例程增加注释,xie_sx@126.com*/#include "ti_msp_dl_config.h"//ADC转换完成的标识,在ADC的中断里设为有效;
volatile bool gCheckADC;volatile uint16_t gAdcResult;int main(void)
{//初始化配置SYSCFG_DL_init();//使能中断NVIC_EnableIRQ(ADC12_0_INST_INT_IRQN);//标志位清零gCheckADC = false;while (1){//软件开启ADC转换,SC=1DL_ADC12_startConversion(ADC12_0_INST);//等待转换完成//如果标志位gCheckADC不是true,程序在while循环等待//gCheckADC=true后,程序继续往下执行while (false == gCheckADC){__WFE();}//读取ADC12的转换结果gAdcResult = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);//对ADC12的转换结果进行处理if (gAdcResult > 0x7ff){DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);}else{DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);}//ADC12的转换标志位清零gCheckADC = false;//使能ADC转换,即ENC=1,等待触发信号DL_ADC12_enableConversions(ADC12_0_INST);}
}/** ADC12中断处理函数** 中断里边只设置标志位gCheckADC**/void ADC12_0_INST_IRQHandler(void)
{switch (DL_ADC12_getPendingInterrupt(ADC12_0_INST)){case DL_ADC12_IIDX_MEM0_RESULT_LOADED://结果存储寄存器有更新gCheckADC = true;break;default:break;}
}

adc12_single_conversion_vref_internal

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
详细代码如下:

/** ADC转换的SDK例程* 文件名:adc12_single_conversion_vref_internal.c* 描述:*   1、单通道单次转换、自动采样模式、软件触发;*   2、使用MEM0,通道2(PA25),使用内部参考电压,2.5V*   3、PA0引脚连接有LED灯;*   4、对通道0进行AD采样和转换,根据转换结果进行LED的指示操作:*     a.当转换结果小于0x7ff时,LED灭; 否则,点亮LED** 操作描述:*   1、下载程序,全速运行;*   2、引脚PA25通过杜邦线连接VCC或GND*     a. 连接到VCC时,红色LED点亮;*     b. 连接到GND时,红色LED熄灭.* 注意事项:*   1、如果使用的是LP-MSPM0L1306, PA25引脚默认接有跳线帽J4;** 思考:*   给输入引脚上施加一个电压,看测量值是否符合预取结果。** 修改:*   基于官方的sdk例程增加注释,xie_sx@126.com*/#include "ti_msp_dl_config.h"volatile bool gCheckADC;
volatile uint16_t adcResult;int main(void)
{//初始化配置SYSCFG_DL_init();//使能中断NVIC_EnableIRQ(ADC12_0_INST_INT_IRQN);gCheckADC = false;//在启动ADC12转换之前,先确认参考电压VREF已稳定while (DL_VREF_CTL1_READY_NOTRDY == DL_VREF_getStatus(VREF));while (1){//软件开启ADC转换,SC=1DL_ADC12_startConversion(ADC12_0_INST);//等待转换完成//如果标志位gCheckADC不是true,程序在while循环等待//gCheckADC=true后,程序继续往下执行while (false == gCheckADC){__WFE();}//读取ADC12的转换结果adcResult = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);//对ADC12的转换结果进行处理if (adcResult > 0x7ff){DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);}else{DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);}//ADC12的转换标志位清零gCheckADC = false;//使能ADC转换,即ENC=1,等待触发信号DL_ADC12_enableConversions(ADC12_0_INST);}
}/** ADC12中断处理函数** 中断里边只设置标志位gCheckADC**/void ADC12_0_INST_IRQHandler(void)
{switch (DL_ADC12_getPendingInterrupt(ADC12_0_INST)){case DL_ADC12_IIDX_MEM0_RESULT_LOADED:gCheckADC = true;break;default:break;}
}

adc12_single_conversion_vref_external

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
详细代码如下:

/** ADC转换的SDK例程* 文件名:adc12_single_conversion_vref_external.c* 描述:*   1、单通道单次转换、自动采样模式、软件触发;*   2、使用MEM0,通道2(PA25),使用内部参考电压,2.5V*   3、PA0引脚连接有LED灯;*   4、对通道0进行AD采样和转换,根据转换结果进行LED的指示操作:*     a.当转换结果小于0x7ff时,LED灭; 否则,点亮LED** 操作描述:*   1、下载程序,全速运行;*   2、引脚PA25通过杜邦线连接VCC或GND*     a. 连接到VCC时,红色LED点亮;*     b. 连接到GND时,红色LED熄灭.* 注意事项:*   1、如果使用的是LP-MSPM0L1306, PA25引脚默认接有跳线帽J4;*   2、需要VREF+引脚外接参考电压** 思考:*   给输入引脚上施加一个电压,看测量值是否符合预取结果。** 修改:*   基于官方的sdk例程增加注释,xie_sx@126.com*/#include "ti_msp_dl_config.h"/* 宏定义配置* 先定义了外部参考电压ADC12_EXTERNAL_REF_VOLTAGE, 取参考电压的一半为监测比较的电压ADC12_MONITOR_VOLTAGE* 因为ADC位数为12位,通过宏定义的方式计算出了参考电压的一半值所对应的ADC转换结果ADC12_MONITOR_VALUE** 实际上ADC12_MONITOR_VALUE,可以直接计算出来的。 2的12次方的一半,2048,即12位ADC满量程的一半;* 如果是10位AD,一半为512*/
/* clang-format off */
#define ADC12_BIT_RESOLUTION          (12)
#define ADC12_EXTERNAL_REF_VOLTAGE    (3.3)
#define ADC12_MONITOR_VOLTAGE         (ADC12_EXTERNAL_REF_VOLTAGE / 2)
#define ADC12_MONITOR_VALUE           ((1 << ADC12_BIT_RESOLUTION) * (ADC12_MONITOR_VOLTAGE / (ADC12_EXTERNAL_REF_VOLTAGE)))
/* clang-format on */volatile bool gCheckADC;int main(void)
{uint16_t adcResult;//初始化配置SYSCFG_DL_init();//使能中断NVIC_EnableIRQ(ADC12_0_INST_INT_IRQN);gCheckADC = false;while (1){//软件开启ADC转换,SC=1DL_ADC12_startConversion(ADC12_0_INST);//等待转换完成//如果标志位gCheckADC不是true,程序在while循环等待//gCheckADC=true后,程序继续往下执行while (false == gCheckADC){__WFE();}//读取ADC12的转换结果adcResult = DL_ADC12_getMemResult(ADC12_0_INST, DL_ADC12_MEM_IDX_0);//对ADC12的转换结果进行处理if (adcResult > ADC12_MONITOR_VALUE){DL_GPIO_clearPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);}else{DL_GPIO_setPins(GPIO_LEDS_PORT, GPIO_LEDS_USER_LED_1_PIN);}//?这一句没太必要,多余的DL_ADC12_stopConversion(ADC12_0_INST);//ADC12的转换标志位清零gCheckADC = false;//使能ADC转换,即ENC=1,等待触发信号DL_ADC12_enableConversions(ADC12_0_INST);}
}/** ADC12中断处理函数** 中断里边只设置标志位gCheckADC**/void ADC12_0_INST_IRQHandler(void)
{switch (DL_ADC12_getPendingInterrupt(ADC12_0_INST)){case DL_ADC12_IIDX_MEM0_RESULT_LOADED:gCheckADC = true;break;default:break;}
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/266254.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

远程控制如何赋能智能制造?贝锐向日葵制造业场景案例解析

随着数字化转型在制造业的不断深入&#xff0c;企业在产线端也逐渐投入更多智能化设备&#xff0c;数字化、智能化设备其中一个比较显著的优势就是可以依托互联网实现远程运维和调试&#xff0c;大大提升产线设备的稳定性和工作效率&#xff1b;而远程调试运维一个重要的实现方…

Spring Cache【娓娓道来】

目录​​​​​​​ 1.自我介好&#x1f633;&#x1f633;&#x1f633; 2.常用注解 &#x1f495;&#x1f495;&#x1f495; 3.EnableCaching&#x1f926;‍♂️&#x1f926;‍♂️&#x1f926;‍♂️ 4.CachePut&#x1f937;‍♀️&#x1f937;‍♀️&#x1f93…

.9.png编译报错

android项目中使用9-patch图编译报错&#xff1a;AAPT: error: file failed to compile. 原因是因为.9.png图中有线之间断开或者黑点的存在&#xff0c;把线连上或者把黑点去掉就可以了。如下&#xff1a;

云降水物理基础

云降水物理基础 云的分类 相对湿度变化方程 由相对湿度的定义&#xff0c;两边取对数之后可以推出 联立克劳修斯-克拉佩龙方程&#xff08;L和R都为常数&#xff09; 由右式看出&#xff0c;增加相对湿度的方式&#xff1a;增加水汽&#xff08;de增大&#xff09;和降低…

Linux系统vim,gcc,g++工具使用及环境配置,动静态库的概念及使用

Linux系统vim&#xff0c;gcc&#xff0c;g工具使用及环境配置&#xff0c;动静态库的概念及使用 1. Linux编辑器-vim的使用1.1 vim的基本概念1.2vim的基本操作1.3vim正常模式命令集1.4vim末端模式命令集1.5简单的vim配置 2.Linux编译器-gcc/g的使用2.1 准备阶段2.2gcc的使用2.…

【人工智能 | 知识表示】问题规约法 谓词/符号逻辑,良好的知识表示是解题的关键!(笔记总结系列)

&#x1f935;‍♂️ 个人主页: AI_magician &#x1f4e1;主页地址&#xff1a; 作者简介&#xff1a;CSDN内容合伙人&#xff0c;全栈领域优质创作者。 &#x1f468;‍&#x1f4bb;景愿&#xff1a;旨在于能和更多的热爱计算机的伙伴一起成长&#xff01;&#xff01;&…

PbootCMS 前台RCE漏洞复现

0x01 产品简介 PbootCMS是全新内核且永久开源免费的PHP企业网站开发建设管理系统,是一套高效、简洁、 强悍的可免费商用的PHP CMS源码,能够满足各类企业网站开发建设的需要 0x02 漏洞概述 PbootCMS v<=3.1.6版本中存在模板注入,攻击者可构造特定的链接利用该漏洞,执行…

每日一题,头歌平台c语言题目

任务描述 题目描述:输入一个字符串&#xff0c;输出反序后的字符串。 相关知识&#xff08;略&#xff09; 编程要求 请仔细阅读右侧代码&#xff0c;结合相关知识&#xff0c;在Begin-End区域内进行代码补充。 输入 一行字符 输出 逆序后的字符串 测试说明 样例输入&…

【conda】利用Conda创建虚拟环境,Pytorch各版本安装教程(Ubuntu)

TOC conda 系列&#xff1a; 1. conda指令教程 2. 利用Conda创建虚拟环境&#xff0c;安装Pytorch各版本教程(Ubuntu) 1. 利用Conda创建虚拟环境 nolonolo:~/sun/SplaTAM$ conda create -n splatam python3.10查看结果&#xff1a; (splatam) nolonolo:~/sun/SplaTAM$ cond…

蜂窝、无线设备应用 HXG-242+、PVGA-123+、PMA-5452+、PSA-39+、PSA-14+射频放大器(IC器件)

1、HXG-242 射频放大器 IC 无线 LAN&#xff0c;LTE 700MHz 至 2.4GHz&#xff0c;6-SMD 模块 HXG-242&#xff08;符合RoHS规范&#xff09;是一款先进的放大器模块&#xff0c;结合了高动态范围MMIC技术和优化电路&#xff0c;可在聚焦频率范围内提供业界领先的线性度。它采…

测距传感器

测距传感器 电子元器件百科 文章目录 测距传感器前言一、测距传感器是什么二、测距传感器的类别三、测距传感器的应用实例四、测距传感器的作用原理总结前言 测距传感器广泛应用于自动化控制、机器人导航、无人驾驶、测量仪器等领域。不同类型的测距传感器具有不同的测距范围、…

【尘缘送书第六期】2023年度学习:AIGC、AGI、GhatGPT、人工智能大模型实现必读书单

【文末送书】今天推荐几本AIGC、AGI、GhatGPT、人工智能大模型领域优质书籍。 目录 前言1 《ChatGPT 驱动软件开发》2 《ChatGPT原理与实战》3 《神经网络与深度学习》4 《AIGC重塑教育》5 《通用人工智能》6 文末送书 前言 2023年是人工智能大语言模型大爆发的一年&#xff0…