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

MSPM0L1306例程学习系列
使用的TI的官方例程,即SDK里边包含的例程代码。
可以到TI官网下载并且安装SDK: https://www.ti.com.cn/tool/cn/download/MSPM0-SDK/

MCU使用的是MSPM0L1306, 对于ADC部分,有10个例程:
在这里插入图片描述
今天要讲的例程是adc12_14bit_resolution,12位的ADC内核通过过采样实现14位的分辨率。
相关的要点如下:

  1. ADC的工作模式选择 单通道 多次转换,选择adc通道2(PA25),这个可以根据实际需要进行修改的;
  2. 参考电压的选择上,直接使用了电源电压作为基准电压。
  3. 启用了ADC的硬件均值功能,也就是ADC自带一个硬件功能,可以自动采样指定的次数*(2、4、8、16、32、64、128,仔细看下,都刚好是2的n次方),再将转换结果除以特定的数(1、2、4、8、16、32、64、128,也是2的n次方,可以通过移位直接得出结果)*,最后将计算出来的结果作为这一次ADC转换的结果写入结果存储寄存器。例程的配置中,16次的转换结果,只除以4,相当于提高2位分辨率。
  4. 使用了DMA传输,没有使用FIFO寄存器。每次直接对ADC的结果存储寄存器进行搬运,每次搬运1个2字节的数据。有新数据写入MEM0时,会触发DMA传输搬运转换结果。 搬运了1024次后,DMA传输完成,进入中断,设置标志位,程序继续往下执行。

例程的注解参考如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

代码简单注释如下:

/** ADC转换的SDK例程* 文件名:adc12_14bit_resolution.c* 描述:*   采用过采样的方式,实现14位分辨率。*   1、单通道、多次转换、自动采样模式、软件触发;*   2、使用MEM0,选择ADC通道2(PA25)*   3、直接使用电源电压做参考电压*   4、--> 使用硬件均值的功能,每次的转换结果是自动对16次转换求和再除以4的结果;*   5、转换ADC_SAMPLE_SIZE=1024次,将通过DMA存放到数组gADCSamples[]中;*   6、代码中设有断点语句__BKPT(0),会自动进入断点,查看数据;** 操作描述:*   1、下载程序;*   2、添加观察变量gADCSamples,全速运行;*   3、系统会自动停在断点处,查看ADC的采样结果值;** 注意事项:*   1、注意系统时钟的配置,ADC的时钟为32MHz*   2、在SYSCONFIG图形配置工具中并没有完成所有的DMA参数配置;*     部分的参数配置,在主程序通过调用库函数的形式进行重新配置;** 思考:*   1、先增加理论知识,搜下过采样的概念,了解12位分辨率的ADC,怎么才能变成14位分辨率*   2、从什么样的实现结果,证明14位的分辨率?*   3、理解分辨率和精度的关系,通过过采样提升了分辨率,不是提升精度,两个概念;** 修改:*   基于官方的sdk例程增加注释,xie_sx@126.com*/#include "ti_msp_dl_config.h"//宏定义了ADC转换结果的数量(数组的大小)
#define ADC_SAMPLE_SIZE (1024)//定义16位的数组来存放ADC的转换结果.
uint16_t gADCSamples[ADC_SAMPLE_SIZE];//标志变量,ADC的转换结果是否已经传输完成;
volatile bool gCheckADC;int main(void)
{//器件初始化SYSCFG_DL_init();//配置DMA的源地址、目的地址和传输大小//此处先设置源地址,从MEMRES0读取ADC的转换的结果//其它参数在while(1)里设置DL_DMA_setSrcAddr(DMA, DMA_CH0_CHAN_ID, (uint32_t) DL_ADC12_getMemResultAddress(ADC12_0_INST, DL_ADC12_MEM_IDX_0));//配置器件的中断NVIC_EnableIRQ(ADC12_0_INST_INT_IRQN);//ADC12的转换完成标志位清零gCheckADC = false;while (1){//在开始新的捕获之前配置DMA的大小和目的地址//先禁用,修改配置,再使能//配置DMA搬运的目的地址,数组gADCSamples//传输大小为转换的次数,ADC_SAMPLE_SIZEDL_DMA_disableChannel(DMA, DMA_CH0_CHAN_ID);DL_DMA_setDestAddr(DMA, DMA_CH0_CHAN_ID, (uint32_t) &gADCSamples[0]);DL_DMA_setTransferSize(DMA, DMA_CH0_CHAN_ID, ADC_SAMPLE_SIZE);DL_DMA_enableChannel(DMA, DMA_CH0_CHAN_ID);//重新启用ADC12的DMA模式,因为每次传输完成时该模式都会被自动清除DL_ADC12_enableDMA(ADC12_0_INST);//软件启动ADC12转换DL_ADC12_startConversion(ADC12_0_INST);while (false == gCheckADC){__WFE();}//ADC12的转换完成标志位清零gCheckADC = false;//断点语句,程序运行到此处会自动进入断点,可查看ADC的转换结果__BKPT(0);}
}/** ADC12中断处理函数* 通过DMA传输完成中断来判断ADC转换结束**/
void ADC12_0_INST_IRQHandler(void)
{switch (DL_ADC12_getPendingInterrupt(ADC12_0_INST)){case DL_ADC12_IIDX_DMA_DONE:gCheckADC = true;break;default:break;}
}

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

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

相关文章

mac电脑m1 arm架构安装虚拟机教程

1、准备一台虚拟机,安装CentOS7 常用的虚拟化软件有两种: VirtualBoxVMware 这里我们使用VirtualBox来安装虚拟机,下载地址:Downloads – Oracle VM VirtualBox 001 点击安装 002 报错:he installer has detected an…

用模型预测测试数据

Hi, I’m Shendi 2、用模型预测测试数据 在之前已经训练好了一个模型,可以通过 model.save("path") 来保存模型到硬盘,下次直接使用。 这个模型使用的 mnist 数据集训练,这个数据集包含6万训练样本和一万测试样本,28*28…

linux下的进程组与会话的区别

进程组(Process Group)和会话(Session)是Unix/Linux操作系统中的两个概念,它们之间有一些关键区别: 定义和范围:一个进程组是一组相关进程的集合,它们具有相同的进程组ID&#xff08…

【运维面试100问】(十一)淡淡I/O过程

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》:python零基础入门学习 《python运维脚本》: python运维脚本实践 《shell》:shell学习 《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战 《k8…

华为云之ECS云产品快速入门

华为云之ECS云产品快速入门 一、ECS云服务器介绍二、本次实践目标三、创建虚拟私有云VPC1.虚拟私有云VPC介绍2.进入虚拟私有云VPC管理页面3.创建虚拟私有云4.查看创建的VPC 四、创建弹性云服务器ECS——Linux1.进入ECS购买界面2.创建弹性云服务器(Linux)——基础配置步骤3.创建…

DC-磁盘管理

2023年全国网络系统管理赛项真题 模块B-Windows解析 题目 在DC2上安装及配置软RAID 5。在安装好的DC2虚拟机中添加三块10G虚拟磁盘。组成RAID 5,磁盘分区命名为卷标H盘:Raid5。手动测试破坏一块磁盘,做RAID磁盘修复,确认RAID 5配置完毕。配置步骤 关闭虚拟机,添加3块10G磁…

【AI提示词艺术】第10期 ---希望、价值与魔法的交织:小女孩与梦幻背景的数字艺术之旅

金色猎犬被视为一种贵族犬种 金色猎犬是一种流行的犬种,通常被视为一种象征,代表着忠诚、勇气和敏锐的嗅觉。这种犬种有着悠久的历史,可以追溯到中世纪时期。 金色猎犬的外观特征是短而厚的毛发,金色的颜色,以及敏锐…

Python---TCP 网络应用程序开发流程

1. TCP 网络应用程序开发流程的介绍 TCP 网络应用程序开发分为: TCP 客户端程序开发TCP 服务端程序开发 说明: 客户端程序是指运行在用户设备上的程序 服务端程序是指运行在服务器设备上的程序,专门为客户端提供数据服务。 2. TCP 客户端程序开发流程的介绍 步…

在GitHub找开源项目

在 GitHub 的搜索框里: 使用搜索关键词可以在 GitHub 上快速的找你需要的开源项目: 限制搜索范围 通过 in 关键词 (大小写不敏感) 限制搜索范围: 公式搜索范围in:name xxx项目名包含xxxin:description xxx项目描述包含xxxin:readme xxx项目…

C/C++ 使用 MySQL API 进行数据库操作

C/C 使用 MySQL API 进行数据库操作 一、前言 随着信息时代的到来,数据库的应用日益广泛,MySQL 作为开源的关系型数据库管理系统,被广大开发者所喜爱。在 C/C 程序中,我们可以通过 MySQL 提供的 API 接口来连接数据库&#xff0…

100GPTS计划-AI学术AcademicRefiner

地址 https://chat.openai.com/g/g-LcMl7q6rk-academic-refiner https://poe.com/AcademicRefiner 测试 减少相似性 增加独特性 修改http://t.csdnimg.cn/jyHwo这篇文章微调 专注于人工智能、科技、金融和医学领域的学术论文改写,秉承严格的专业和学术标准。 …

Windows 如何在局域网中建立NTP服务器实现时间同步(设置一台设备作为主机,其他设备作为从机来同步时间)

首先简单了解一下什么是NTP 网络时间协议(NTP)是一种用于同步计算机网络上各设备时间的协议。NTP时间同步在许多项目和应用中都是关键的,特别是那些对时间同步精度有要求的场景。比如需要使用NTP时间同步的情况有:金融交易系统、科学研究实验、工业自动…

Unity 创建/删除/启用/禁用组件的惯用方法

1、创建组件&#xff1a; Unity 创建组件可以通过编辑器中的"Add Component"创建&#xff0c;或者代码动态创建&#xff1a;GameObject.AddComponent<T>()&#xff0c;如&#xff1a; ameObject.AddComponent<Rigidbody>(); 2、删除组件&#xff1a; …

WPF组合控件TreeView+DataGrid之TreeView封装

&#xff08;关注博主后&#xff0c;在“粉丝专栏”&#xff0c;可免费阅读此文&#xff09; wpf的功能非常强大&#xff0c;很多控件都是原生的&#xff0c;但是要使用TreeViewDataGrid的组合&#xff0c;就需要我们自己去封装实现。 我们需要的效果如图所示&#x…

医院影像科PACS系统源码,医学影像系统,支持MPR、CPR、MIP、SSD、VR、VE三维图像处理

PACS系统是医院影像科室中应用的一种系统&#xff0c;主要用于获取、传输、存档和处理医学影像。它通过各种接口&#xff0c;如模拟、DICOM和网络&#xff0c;以数字化的方式将各种医学影像&#xff0c;如核磁共振、CT扫描、超声波等保存起来&#xff0c;并在需要时能够快速调取…

Python之json模块和pickle模块详解

json模块和pickle模块的用法 在python中&#xff0c;可以使用pickle和json两个模块对数据进行序列化操作。 其中&#xff1a; json可以用于字符串或者字典等与python数据类型之间的序列化与反序列化操作。 pickle可以用于python特有类型与python数据类型之间的序列化与反序…

回归预测 | MATLAB实现GWO-DHKELM基于灰狼算法优化深度混合核极限学习机的数据回归预测 (多指标,多图)

回归预测 | MATLAB实现GWO-DHKELM基于灰狼算法优化深度混合核极限学习机的数据回归预测 &#xff08;多指标&#xff0c;多图&#xff09; 目录 回归预测 | MATLAB实现GWO-DHKELM基于灰狼算法优化深度混合核极限学习机的数据回归预测 &#xff08;多指标&#xff0c;多图&#…

Redis基础篇-002 初识Redis

1、认识NoSQL 1.1 概念 NoSQL是一个非关系型数据库。 常见的NoSQL有&#xff1a;Redis、MongoDB 1.2 NoSQL与SQL的区别 类别SQLNoSQL数据结构结构化非结构化数据关联关联非关联查询方式SQL非SQL事务特性ACIDBASE存储方式磁盘内存扩展性垂直水平使用场景1&#xff09;数据结…

Docker安装(CentOS)+简单使用

Docker安装(CentOS) 一键卸载旧的 sudo yum remove docker* 一行代码(自动安装) 使用官方安装脚本 curl -fsSL https://get.docker.com | bash -s docker --mirror Aliyun 启动 docker并查看状态 运行镜像 hello-world docker run hello-world 简单使用 使用 docker run …

docker部署个人网站项目记录(前后端分离)

背景 项目是前后端分离&#xff0c;前端有三部分&#xff0c;分别是 个人网站&#xff08;blog&#xff09;网站后台管理系统&#xff08;admin&#xff09;数据大屏&#xff08;datascreen&#xff09; 后端是基于nodejs写的后台服务 后台接口服务&#xff08;todo-nodejs…