【TI MSPM0】ADC进阶学习

一、学习内容

二、ADC配置讲解

转换时钟来源于本地的80mhz的振荡器,使得高速的12bits的转换可以达到4mhz的采样率

ADC转换过程分两个步骤,一是采样,二是转换

因此,配置中的是采样时钟

真正决定采样速率的是conversion clock 决定

转换时钟并不能手动配置,是由80mhz的振荡器来获取时钟的

所以不必担心采样时钟的采样率,维持默认设置即可


对于start和enable的配置,syscong 工具配置完成后,会将enable置1,然后转换一次后置零


模式一 单通道单词转换

第一个是置1,第二个是置0

对应配置如下


模式二 单通道连续转换

这种模式下,enable始终为1,start在触发转换后会被置0,但是,通道内部在转换之后会提供触发信号,从而会连续转换

模式三 多通道单次转换

模式四 多通道连续转换

Sampling Mode

自动模式

sample window 由定时器控制,通过设置定时器时间来决定采样多长时间。

手动模式

不再由定时器决定,需要再设置开始和结束时间

Trigger Source

触发方式

软件触发和事件触发(通过定时器控制)

Conversion Data Format

1无符号二进制右对齐(默认使用)

2有符号二进制左对齐(补码)

ADC Conversion Memory Configurations

下面可以对不同通道设置不同引脚和时钟

共有两个采样时钟0和1

这里可以对不同时钟进行配置,从而达到不同采样时间


Advanced Configuration

可以对转换精度进行配置,一般用12bits ,这样更加精准


Mannul模式下会耗电更多

但是电赛对这个要求不多,可以配置在改模式下


三、DMA 讲解

通过中断触发DMA,因此不使用中断去读取数据,中断选择不做处理

如果是单通道,就每次传1个,我们就用MEM0结果读进来就会触发DMA


此种场景下,选择第二种

第一种使用场景:ADC读取值,DAC 输出值

第三种使用场景:串口DMA,有一串数组,将数组传给另一个数组

后面几种不常用,这里不做介绍


因为是存储在16位的寄存器中,均选择半字节


递增数组第0个开始递增

递减从大向小递减


勾选并输入每次要搬运的数据个数


然后可以使能一个中断

当DMA 传输完成后进行的中断


  • 第一个是采集1000个数一次传一个
  • 第二个是采集1000个数一次传1个传1000次,使得数组里1000个位置都是这一个数

repeat 是传输完以后再进入继续传输,符合设想要求


这里的是传输起点的递增,不是过程

这里不需要改动

四、DMA使用

配置方面


代码编写

第一步

设置存放结果的寄存器的地址(即DMA要传输 的起始地址)

然后开辟新的数组空间存放DMA传输的数据,设置终点地址

查看寄存器地址的方法

点击register,出现相关寄存器地址的值

第二步

使能DMA中断

开启ADC

第三步

DMA中断服务程序

另外,由于选用repeat模式,还会不断进行DMA 传输,可能导致数组发生变化,因此调用函数关闭ADC通道

第四步

编写数据处理函数

第五步

打开ADC中断

开启ADC

五、FIFO学习

先进先出

先进后出


使用FIFO 的意义是可以降低对DMA和中断调用的频率,提升资源利用率,优化系统性能

六、FIFO的使用

勾选FIFO

更改DMA触发方式和传输数据个数

更改 数据格式

代码更改

七、多通道使用

多通道连续采集模式下是强制使用FIFO 的

八、使用定时器实现可控采样率

ADC配置

改为事件触发

使用DMA中断

关闭自动触发

选择第二个

定时器配置

定时器通道和事件

这是在ADC里面

代码编写

不需要start ADC

九、实现最高4mhz采样率

软件触发

DMA传输

采样时间

相关推荐
学习噢学个屁1 小时前
基于51单片机的红外人体感应报警器
c语言·单片机·嵌入式硬件·51单片机
球求了2 小时前
Linux 入门:操作系统&&进程详解
linux·运维·服务器·开发语言·学习
李匠20242 小时前
C++负载均衡远程调用学习之负载均衡算法与实现
运维·c++·学习·负载均衡
CodeCipher2 小时前
Java后端程序员学习前端之CSS
前端·css·学习
李匠20242 小时前
C++负载均衡远程调用学习之Agent代理模块基础构建
c++·学习
blackA_3 小时前
数据库MySQL学习——day8(复习与巩固基础知识)
数据库·学习·mysql
每次的天空3 小时前
Android学习总结之GetX库篇(场景运用)
android·javascript·学习
技术干货贩卖机3 小时前
0基础 | STM32 | STM32F103C8T6开发板 | 项目开发
stm32·单片机·嵌入式硬件·源代码·项目开发·0基础
Leon_George4 小时前
GPIO引脚的上拉下拉以及转换速度到底怎么选
单片机·嵌入式硬件·引脚配置·上拉下拉·引脚速度
xiaohanbao095 小时前
day16 numpy和shap深入理解
python·学习·机器学习·信息可视化·numpy·pandas