杰发科技AC7840——ADC简介(1)_双路ADC同时使用

0. 简介

1. 特性

2. 双路ADC

Sample里面没有双路的,以为那个规则组只有一个通道,看了外设寄存器才发现,原来他的通道是双路的。

注意1: ADC硬件引脚的配置

注意2: 规则组长度设置和

RSEQ序列号和CH通道号组合应该就对应了转换顺序,如下图所示配置

 ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_0, ADC_CH_9);ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_1, ADC_CH_8);ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_2, ADC_CH_12);ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_3, ADC_CH_1);ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_4, ADC_CH_5);ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_5, ADC_CH_4);ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_6, ADC_CH_7);ADC_ConfigChannel(ADC_INDEX, ADC_ISEQ_0, ADC_CH_12);ADC_ConfigChannel(ADC_INDEX, ADC_ISEQ_1, ADC_CH_7);ADC_ConfigChannel(ADC_INDEX, ADC_ISEQ_2, ADC_CH_13);

代码如下:

void ADC_Init(void)
{adc_converter_config_t adcConfig;/*! ADC输入端口(电位器)配置*/GPIO_DRV_SetMuxModeSel(VR1_PORT, VR1_PIN, PORT_PIN_DISABLED); /*! 电位器VR1*/GPIO_DRV_SetMuxModeSel(VR2_PORT, VR2_PIN, PORT_PIN_DISABLED); /*! 电位器VR2*/GPIO_DRV_SetMuxModeSel(PORTD, 2, PORT_PIN_DISABLED);          /*! 电位器VR2*//*! ADC配置配置ADC为12位分辨率,工作模式为MODE3规则组扫描+注入组扫描模式多通道单次转换,规则组长度为4。每触发一次进行一次ADC转换,每次转换规则组中的4个通道。*/ADC_DRV_Init(ADC_INDEX);ADC_DRV_InitConverterStruct(&adcConfig);adcConfig.clockDivide = ADC_CLK_DIVIDE_6;        /*! ADC时钟分频。ADC时钟源选择在时钟初始化里配置,此例程选择为SPLLDIV2_CLK,频率为60MHz*/adcConfig.resolution = ADC_RESOLUTION_12BIT;     /*! ADC分辨率设置*/adcConfig.regularTrigger = ADC_TRIGGER_INTERNAL; /*! 规则组触发源类型选择*/adcConfig.injectTrigger = ADC_TRIGGER_INTERNAL;  /*! 注入组触发源类型选择*/adcConfig.dmaEnable = false;                     /*! DMA使能位*/adcConfig.voltageRef = ADC_VOLTAGEREF_VREF;      /*! ADC参考电压源选择,VREF/VDDA*/adcConfig.scanModeEn = true;                     /*! 工作模式配置:扫描模式使能位,多通道时需要使能扫描模式,单个通道时不需要使能扫描*/adcConfig.continuousModeEn = false;              /*! 工作模式配置:连续模式使能位,1:触发后可连续转换,0:触发一次只转换一次,转换完成后停止*/adcConfig.regularDiscontinuousModeEn = false;    /*! 工作模式配置:规则组不连续模式使能位*/adcConfig.injectDiscontinuousModeEn = false;     /*! 工作模式配置:注入组不连续模式使能位*/adcConfig.injectAutoModeEn = false;              /*! 工作模式配置:自动注入模式使能位*/adcConfig.intervalModeEn = false;                /*! 工作模式配置:间隔模式使能位*/adcConfig.regularDiscontinuousNum = 0;           /*! 规则组子组长度 (用于mode7)*/adcConfig.regularSequenceLength = 4;             /*! 规则组长度设置*/adcConfig.injectSequenceLength = 0;              /*! 注入组长度设置*/adcConfig.powerEn = true;                        /*! ADC上电*/ADC_DRV_ConfigConverter(ADC_INDEX, &adcConfig);  /*! 初始化ADC配置*//*! ADC通道配置*/ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_0, VR1_ADC_CH);     /*! 电位器VR1对应通道*/ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_1, VR2_ADC_CH);     /*! 电位器VR2对应通道*/ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_2, ADC_CH_TSENSOR); /*! 内部温度传感器通道*/ADC_ConfigChannel(ADC_INDEX, ADC_RSEQ_3, ADC_CH_SUPPLY);  /*! 内部供电电压通道*/ADC_DRV_Init(ADC1_INDEX);ADC_DRV_InitConverterStruct(&adcConfig);adcConfig.clockDivide = ADC_CLK_DIVIDE_6;            /*! ADC时钟分频。ADC时钟源选择在时钟初始化里配置,此例程选择为SPLLDIV2_CLK,频率为60MHz*/adcConfig.resolution = ADC_RESOLUTION_12BIT;         /*! ADC分辨率设置*/adcConfig.regularTrigger = ADC_TRIGGER_INTERNAL;     /*! 规则组触发源类型选择*/adcConfig.injectTrigger = ADC_TRIGGER_INTERNAL;      /*! 注入组触发源类型选择*/adcConfig.dmaEnable = false;                         /*! DMA使能位*/adcConfig.voltageRef = ADC_VOLTAGEREF_VREF;          /*! ADC参考电压源选择,VREF/VDDA*/adcConfig.scanModeEn = true;                         /*! 工作模式配置:扫描模式使能位,多通道时需要使能扫描模式,单个通道时不需要使能扫描*/adcConfig.continuousModeEn = false;                  /*! 工作模式配置:连续模式使能位,1:触发后可连续转换,0:触发一次只转换一次,转换完成后停止*/adcConfig.regularDiscontinuousModeEn = false;        /*! 工作模式配置:规则组不连续模式使能位*/adcConfig.injectDiscontinuousModeEn = false;         /*! 工作模式配置:注入组不连续模式使能位*/adcConfig.injectAutoModeEn = false;                  /*! 工作模式配置:自动注入模式使能位*/adcConfig.intervalModeEn = false;                    /*! 工作模式配置:间隔模式使能位*/adcConfig.regularDiscontinuousNum = 0;               /*! 规则组子组长度 (用于mode7)*/adcConfig.regularSequenceLength = 1;                 /*! 规则组长度设置*/adcConfig.injectSequenceLength = 0;                  /*! 注入组长度设置*/adcConfig.powerEn = true;                            /*! ADC上电*/ADC_DRV_ConfigConverter(ADC1_INDEX, &adcConfig);     /*! 初始化ADC配置*/ADC_ConfigChannel(ADC1_INDEX, ADC_RSEQ_0, ADC_CH_2); /*! 内部供电电压通道*/
}

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

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

相关文章

只需几步,即可享有笔记小程序

本示例是一个简单的外卖查看店铺点菜的外卖微信小程序,小程序后端服务使用了MemFire Cloud,其中使用到的MemFire Cloud功能包括: 其中使用到的MemFire Cloud功能包括: 云数据库:存储外卖微信小程序所有数据表的信息。…

OpenHarmony实战开发-创建网格 (Grid/GridItem)

概述 网格布局是由“行”和“列”分割的单元格所组成,通过指定“项目”所在的单元格做出各种各样的布局。网格布局具有较强的页面均分能力,子组件占比控制能力,是一种重要自适应布局,其使用场景有九宫格图片展示、日历、计算器等…

M-LAG的基本概念

如图所示,用户侧设备Switch(可以是交换机或主机)通过M-LAG机制与另外两台设备(SwitchA和SwitchB)进行跨设备链路聚合,共同组成一个双活系统。这样可以实现SwitchA和SwitchB共同进行流量转发的功能&#xff…

Maya vs Blender:制作3D动画首选哪一个?

就 3D 动画而言,有两款3D软件引发了最多的争论:Blender 与 Maya。这两个强大的平台都提供强大的工具集,使动画故事和角色栩栩如生。但作为一名3D动画师,您应该投入时间学习和创作哪一个呢?下面我将从以下六点给您一个清…

随手记:树结构翻页和定位指定数据逻辑

业务背景: 树形组件展示数据,数据包含过去数据,现在数据,未来数据,用户在首次进入页面时,展示的是当天的数据,如果当天没有数据,则显示最近一条的过去数据。数据按照时间越长数据会…

《QT实用小工具·三十五》基于PathView,Qt/QML做的一个可以无限滚动的日历控件

1、概述 源码放在文章末尾 改项目实现了基于PathView,Qt/QML做的一个可以无限滚动的日历控件,下面是demo演示: 项目部分代码如下所示: import QtQuick 2.7 import QtQuick.Controls 1.4 import QtQuick.Controls.Styles 1.4Bu…

基于JavaWEB的学生考勤管理系统(含论文)

本系统是用Java语言写的,基于JavaWEB的学生考勤管理系统 主要有三大模块,学生,教师和管理员模块,功能如下: 学生模块 教师模块: 管理员模块

python-opencv实现最近邻插值和双线性插值对图片上采样

使用背景 当我们需要把图像进行放大或者缩小的时候,第一反应是使用resize()实现。很多情况下,我们会调用最近邻插值和双线性插值去放大图片,当然要说没有分辨率的损失那是不可能的,只能说在放大图片的过程中尽可能增加了图片的分…

SQL优化——全自动SQL审核

文章目录 1、抓出外键没创建索引的表2、抓出需要收集直方图的列3、抓出必须创建索引的列4、抓出SELECT * 的SQL5、抓出有标量子查询的SQL6、抓出带有自定义函数的SQL7、抓出表被多次反复调用SQL8、抓出走了FILTER的SQL9、抓出返回行数较多的嵌套循环SQL10、抓出NL被驱动表走了全…

RabbitMQ中的交换机类型

交换机类型 可以看到,在订阅模型中,多了一个exchange角色,而且过程略有变化: Publisher:生产者,不再发送消息到队列中,而是发给交换机 Exchange:交换机,一方面&#xff…

防盗链在nginx中如何配置,简单演示403forbidden的效果

一、使用场景: 资源被其他网站无端盗用 服务器压力无端增加 二、实现方法 1.valid_referers指令可以检测被访问资源从哪个地址来 2.通过referer头字段判断 3.若为空,报403错误 nginx的准备工作: 可以看 虚拟机中使用LNMP模拟跨域并结合…

盲人使用公共设施:科技助力无障碍出行与智能识别

在我们的日常生活中,公共设施扮演着不可或缺的角色,它们为人们提供了便利的服务,构建起和谐、高效的社会环境。然而,对于视障人士而言,尽管公共设施设计之初便考虑到通用性和包容性,实际使用过程中仍难免遭…