【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传输

采样时间

相关推荐
The_cute_cat几秒前
25.4.15学习总结
学习
LaoZhangGong12310 分钟前
MCU屏和RGB屏
经验分享·stm32·单片机·嵌入式硬件·fsmc
宋隽颢22 分钟前
GIT工具学习【4】:推送到远程仓库
git·学习
格里姆肖28 分钟前
LVGL源码(7):渲染
c语言·stm32·单片机
ᖰ・◡・ᖳ40 分钟前
Web APIs阶段
开发语言·前端·javascript·学习
双叶8361 小时前
(51单片机)LCD显示日期时间时钟(DS1302时钟模块教学)(LCD1602教程)
c语言·开发语言·数据库·单片机·嵌入式硬件·mongodb·51单片机
youka1501 小时前
大数据学习栈记——MongoDB编程
大数据·学习·mongodb
☞无能盖世♛逞何英雄☜2 小时前
Web三漏洞学习(其二:sql注入)
数据库·sql·学习
结冰架构2 小时前
【AI提示词】金融信息抽取工程师工作流程
人工智能·学习·ai·金融·提示词
AI服务老曹3 小时前
优化运营、降低成本、提高服务质量的智慧物流开源了
运维·人工智能·学习·开源·能源