当前位置: 首页 > news >正文

02-RT1060 双ADC采样+eDMA传输

RT1060-双ADC+eDMA外设的配合使用

该项目是基于MIMXRT1060-EVKB官方开发板编写的驱动。

一、头文件包含介绍

#include "pin_mux.h"
#include "clock_config.h"
#include "board.h"
#include "fsl_adc.h"
#include "fsl_adc_etc.h"
#include "fsl_pit.h"
#include "fsl_xbara.h"
#include "fsl_common.h"
#include "fsl_iomuxc.h"
#include "fsl_edma.h"
#include "fsl_dmamux.h"

上面代码段是需要包含的头文件,分别由ADC相关的fsl_adc.h、fsl_adc_etc.h,定时触发的周期定时器fsl_pit.h,触发链接的fsl_xbara.h和DMA相关的fsl_edma.h、fsl_dmamux.h,其他几个是使用IO初始化部分系统时需要用到的头文件。

二、自定义宏介绍

//1.ADC配置
#define USER_ADC1_BASE          ADC1
#define ADC1_USER_CHANNEL       16U
#define ADC1_CHANNEL_GROUP      4U#define USER_ADC2_BASE          ADC2
#define ADC2_USER_CHANNEL       16U
#define ADC2_CHANNEL_GROUP      5U//2.ADC DMA配置设置
#define ADC_DMA                 DMA0
#define USER_DMAMUX             DMAMUX
#define ADC1_EDMA_CHANNEL       4
#define ADC2_EDMA_CHANNEL       5//3.多通道采样
#define USER_ADC_ETC_BASE       ADC_ETC
#define ADC1_ETC_CHAIN_LENGTH   2U
#define ADC2_ETC_CHAIN_LENGTH   4U//4.触发
#define XBARA_BASE                      XBARA1
#define ADC1_XBARA_INPUT_PITCH          kXBARA1_InputPitTrigger0
#define ADC1_XBARA_OUTPUT_ADC_ETC       kXBARA1_OutputAdcEtcXbar0Trig3
#define ADC1_ETC_XBARA_TRIGGER_CHANNELx 3       //每个ADC有4个转换通道组,ADC1对应0到3,ADC2对应4到7.
#define ADC1_ETC_XBARA_CHANNEL_BASE     0x403B00A0#define ADC2_XBARA_INPUT_PITCH          kXBARA1_InputPitTrigger1
#define ADC2_XBARA_OUTPUT_ADC_ETC       kXBARA1_OutputAdcEtcXbar1Trig3
#define ADC2_ETC_XBARA_TRIGGER_CHANNELx 7       //每个ADC有4个转换通道组,ADC1对应0到3,ADC2对应4到7.
#define ADC2_ETC_XBARA_CHANNEL_BASE     0x403B0140//5.ADC采样周期配置设置
#define USER_PIT_BASE                   PIT
#define PIT_SOURCE_CLOCK                CLOCK_GetFreq(kCLOCK_OscClk)    //得到PIT的时钟频率
#define ADC1_PIT_CHANNEL                kPIT_Chnl_0
#define ADC2_PIT_CHANNEL                kPIT_Chnl_1#define ADC1_SAMPLE_NUM                 5               //采样滤波次数
#define ADC2_SAMPLE_NUM                 5               //采样滤波次数

1.ADC配置

USER_ADC1_BASE、USER_ADC2_BASE分别定义了ADC1和ADC2,ADC1_USER_CHANNEL、ADC2_USER_CHANNEL是设置的转换通道号,取值范围为0~31;ADC1_CHANNEL_GROUP和ADC2_CHANNEL_GROUP是设置ADC的通道组,这里分别取4和5。

2.ADC DMA配置设置

系统只有DMA0,所以ADC的DMA为DMA0,ADC1_EDMA_CHANNEL定义的是DMA的通道,我这边0~3用于了其他设备,所以这里取的是通道4和5.

3.多通道采样

USER_ADC_ETC_BASE定义ADC外部触发的ADC_ETC,ADC1_ETC_CHAIN_LENGTH取2表示ADC1采集2个ADC通道,ADC2_EDMA_CHANNEL取4表示ADC2采集4个ADC通道.

4.触发

定义了ADC的触发通道,使用PIT的通道0触发XBARA1的0-3,使用PIT的通道1触发XBARA1的1-3,分别对应的ADC_ETC的转换通道3和7,查《IMXRT1060RM》手册可知ADC_ETC转换通道3的输出存储地址为0x403B00A0,ADC_ETC转换通道7的输出存储地址为0x403B0140。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.ADC采样周期

ADC的采样周期这里使用的是周期定时器

http://www.lryc.cn/news/469826.html

相关文章:

  • 单值集合总复习
  • Pyside6 布局管理器(4)--- QGridLayout的使用
  • 从GPT定制到Turbo升级再到Assistants API,未来AI世界,你准备好了吗?
  • 「漏洞复现」BladeX企业级开发平台 tenant/list SQL 注入漏洞复现(CVE-2024-33332)
  • 基于SSM的消防物资存储系统【附源码】
  • Pseudo Multi-Camera Editing 数据集:通过常规视频生成的伪标记多摄像机推荐数据集,显著提升模型在未知领域的准确性。
  • 认识一下 Mochi-1--最新的免费开源人工智能视频模型
  • Spring 的事务传播机制
  • 线性代数(1)——线性方程组的几何意义
  • 写给自己的一些心得体会
  • 论文阅读(二十九):Multi-scale Interactive Network for Salient Object Detection
  • 常见存储器及其特点
  • 《向量数据库指南》——text-embedding-3-large与Mlivus Cloud打造语义搜索新纪元
  • 通过 Bytebase API 查看数据库审计日志
  • # 渗透测试# 1.安全见闻(6)通讯协议
  • [Gdiplus/Gdi]_[中级]_[实现多行文本的多种颜色绘制-富文本绘制]
  • Ubuntu如何创建一个子用户并赋与管理员权限
  • 【Linux | IO多路复用】epoll的底层原理详解
  • npm run serve 提示异常Cannot read property ‘upgrade‘ of undefined
  • Muggle OCR 是一个高效的本地OCR(光学字符识别)模块
  • 【SpringBoot】万字源码解析——启动流程
  • Nginx 配置初步 下
  • 可视化ETL平台-Kettle的安装及简单使用
  • java8 动态加载jar包至系统的classpath
  • C++二级题 计算好数:1数大于0数(二进制的位运算)
  • 数字孪生城市:智慧城市的未来蓝图
  • Java篇图书管理系统
  • BUUCTF之web篇
  • 010——二叉树(2)线索化
  • 鸿蒙拍照小助手02