0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

CKS32F107xx系列MCU的双重ADC模式

中科芯MCU 来源:中科芯MCU 2024-07-22 09:19 次阅读

双重ADC模式

独立模式的ADC采集需要在一个通道采集并且转换完成后才会进行下一个通道的采集。而双重ADC的机制就是使用两个ADC同时采样一个或者多个通道。双重ADC模式较独立模式一个最大的优势就是提高了采样率,弥补了单个ADC 采样不够快的缺点。在有2个或以上ADC模块的产品中,可以使用双ADC模式。

在使用双ADC模式时,当转换配置成由外部事件触发时,用户必须将其设置成仅触发主ADC,从ADC设置成软件触发,这样可以防止意外的触发从转换。但是,主和从ADC的外部触发必须同时被激活。同时,在双ADC模式里,为了在主数据寄存器上读取从转换数据,

即使不使用DMA传输规则通道数据,也必须使能DMA位。

启用双ADC模式的时候,通过配置ADC_CR1寄存器的DUALMOD[3:0]位,可以有几种不同的模式,具体见如下表格:

bbccc8b8-47c7-11ef-b8af-92fbcf53809c.png

这里我们选取同步规则模式来作为实验讲解。同步规则模式是ADC1和 ADC2 同时转换一个规则通道组,ADC1是主,ADC2是从,ADC1转换的结果放在ADC1_DR 的低16位,ADC2转换的结果放在ADC1_DR的高十六位。并且必须开启DMA功能。外部触发来自ADC1的规则组多路开关(由ADC1_CR2寄存器的EXTSEL[2:0]选择),它同时给ADC2提供同步触发。在同步规则模式中,必须转换具有相同时间长度的序列,或保证触发的间隔比2个序列中较长的序列长,否则当较长序列的转换还未完成时,具有较短序列的ADC转换可能会被重启。

为了简单起见,ADC1 我们选择软件触发,ADC2必须选择外部触发,这个外部触发来自于ADC1的规则组多路开关。例程中我们选取ADC1和ADC2各采集一个通道。

配置双重ADC规则同步模式代码如下:

/* ------------------DMA模式配置---------------- */

// 配置 DMA 初始化结构体

DMA_InitStructure.DMA_PeripheralBaseAddr = (uint32_t)(&( ADCx_1->DR ));

DMA_InitStructure.DMA_MemoryBaseAddr = (uint32_t)ADC_ConvertedValue;

DMA_InitStructure.DMA_DIR = DMA_DIR_PeripheralSRC;

DMA_InitStructure.DMA_BufferSize = 1;

DMA_InitStructure.DMA_PeripheralInc = DMA_PeripheralInc_Disable;

DMA_InitStructure.DMA_MemoryInc = DMA_MemoryInc_Enable;

DMA_InitStructure.DMA_PeripheralDataSize =

DMA_PeripheralDataSize_Word;

DMA_InitStructure.DMA_MemoryDataSize = DMA_MemoryDataSize_Word;

DMA_InitStructure.DMA_Mode = DMA_Mode_Circular;

DMA_InitStructure.DMA_Priority = DMA_Priority_High;

DMA_InitStructure.DMA_M2M = DMA_M2M_Disable;

DMA_Init(ADC_DMA_CHANNEL, &DMA_InitStructure);

/* ----------------ADCx_1 模式配置--------------------- */

ADC_InitStructure.ADC_Mode = ADC_Mode_RegSimult;

ADC_InitStructure.ADC_ScanConvMode = ENABLE ;

ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;

ADC_InitStructure.ADC_ExternalTrigConv = ADC_ExternalTrigConv_None;

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

ADC_InitStructure.ADC_NbrOfChannel = 1;

ADC_Init(ADCx_1, &ADC_InitStructure);

RCC_ADCCLKConfig(RCC_PCLK2_Div8);

ADC_RegularChannelConfig(ADCx_1, ADCx_1_CHANNEL, 1,

ADC_SampleTime_239Cycles5);

ADC_DMACmd(ADCx_1, ENABLE);

/* ----------------ADCx_2 模式配置--------------------- */

ADC_InitStructure.ADC_Mode = ADC_Mode_RegSimult;

ADC_InitStructure.ADC_ScanConvMode = ENABLE ;

ADC_InitStructure.ADC_ContinuousConvMode = ENABLE;

ADC_InitStructure.ADC_ExternalTrigConv =

ADC_ExternalTrigConv_None;

ADC_InitStructure.ADC_DataAlign = ADC_DataAlign_Right;

ADC_InitStructure.ADC_NbrOfChannel = NOFCHANEL;

ADC_Init(ADCx_2, &ADC_InitStructure);

RCC_ADCCLKConfig(RCC_PCLK2_Div8);

ADC_RegularChannelConfig(ADCx_2, ADCx_2_CHANNEL, 1,ADC_SampleTime_239Cycles5);

ADC_ExternalTrigConvCmd(ADC2, ENABLE);

双重ADC规则模式和独立模式多通道的配置基本一样,只是有几点需要注意:

DMA缓冲区数据的大小为1,数组存放的数据类型为32位的;ADC工作模式要设置为同步规则模式;两个ADC的通道的采样时间需要一致;ADC1设置为软件触发;ADC2 设置为外部触发。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 寄存器
    +关注

    关注

    31

    文章

    5336

    浏览量

    120230
  • adc
    adc
    +关注

    关注

    98

    文章

    6495

    浏览量

    544460
  • dma
    dma
    +关注

    关注

    3

    文章

    560

    浏览量

    100544

原文标题:MCU微课堂|CKS32F107xx ADC(三)

文章出处:【微信号:中科芯MCU,微信公众号:中科芯MCU】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    MCU微课堂|CKS32F4xx系列产品时钟配置

    作为MCU运行的基础,时钟是单片机各个模块工作时序的最小时间单位,推动单片机的各指令执行,是MCU选型的一个重要指标。CKS32F4xx系列产品具有众多的外设,但并非所有的外设均需要系
    发表于 12-12 10:17 829次阅读

    CKS32F4xx系列MCU的低功耗模式之睡眠模式

    本课讲为大家讲解CKS32F4xx系列产品的低功耗模式之睡眠(Sleep)模式MCU为满足某些应用场景:如小型化低容量设备,长期监测设备等
    发表于 06-26 10:02 639次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的低功耗<b class='flag-5'>模式</b>之睡眠<b class='flag-5'>模式</b>

    CKS32F4xx系列RNG功能设置

      MCU 微课堂 CKS32F4xx 系 列RNG功能 随机数发生器简介     CKS32F4xx系列自带了硬件随机数发生器(RNG),RNG处理器是一个以连续模拟噪声为基础的随机
    的头像 发表于 09-08 10:01 602次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>RNG功能设置

    CKS32F4xx系列DAC功能

    CKS32F4xx系列DAC功能
    的头像 发表于 11-06 16:56 845次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>DAC功能

    CKS32F4xx系列ADC多通道DMA电压采集

    CKS32F4xx系列ADC多通道DMA电压采集
    的头像 发表于 11-06 16:53 1096次阅读

    CKS32F4xx系列ADC单通道电压采集

    CKS32F4xx系列ADC单通道电压采集
    的头像 发表于 11-06 16:54 980次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b><b class='flag-5'>ADC</b>单通道电压采集

    CKS32F4xx系列低功耗模式STANDBY模式

    CKS32F4xx系列低功耗模式STANDBY模式
    的头像 发表于 11-06 16:57 471次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>低功耗<b class='flag-5'>模式</b>STANDBY<b class='flag-5'>模式</b>

    CKS32F4xx系列低功耗模式SLEEP模式

    CKS32F4xx系列低功耗模式SLEEP模式
    的头像 发表于 11-06 16:59 672次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>低功耗<b class='flag-5'>模式</b>SLEEP<b class='flag-5'>模式</b>

    CKS32F4xx系列低功耗模式STOP模式

    CKS32F4xx系列低功耗模式STOP模式
    的头像 发表于 11-06 17:08 620次阅读
    <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>低功耗<b class='flag-5'>模式</b>STOP<b class='flag-5'>模式</b>

    MCU微课堂 | CKS32F4xx系列产品SPI通信

    MCU微课堂 | CKS32F4xx系列产品SPI通信
    的头像 发表于 10-24 17:12 699次阅读
    <b class='flag-5'>MCU</b>微课堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>产品SPI通信

    MCU微课堂 | CKS32F4xx系列产品GPIO口配置

    MCU微课堂 | CKS32F4xx系列产品GPIO口配置
    的头像 发表于 10-24 15:14 776次阅读
    <b class='flag-5'>MCU</b>微课堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>产品GPIO口配置

    CKS32F107xx系列时钟系统具体配置方法讲解

    上一章节对CKS32F107xx系列时钟做了整体介绍,本章节以使用HSI内部高速时钟为例对时钟具体配置方法进行讲解。
    的头像 发表于 05-28 10:05 585次阅读
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>时钟系统具体配置方法讲解

    CKS32F107xx系列MCUADC介绍

    CKS32F107xx系列产品提供2个12位的模拟/数字转换器(ADC),每个ADC共用多达16个外部通道,各通道的A/D转换可以单次、连续、扫描或间断
    的头像 发表于 06-22 11:04 686次阅读

    CKS32F107xx系列MCU的GPIO内部硬件结构和工作模式

    16个引脚,如型号为CKS2F107VET6型号的芯片有GPIOA、GPIOB、GPIOC至GPIOE共5组GPIO,芯片一共100个引脚,其中GPIO就占了一大部分,所有的GPIO引脚都有基本的输入输出功能。
    的头像 发表于 07-22 09:23 685次阅读
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的GPIO内部硬件结构和工作<b class='flag-5'>模式</b>

    详解CKS32F107xx系列的定时器同步功能

    CKS32F107xx系列部分定时器在内部是相连的,可用于定时器同步或链接,方便用户配置不同的同步模式,以便在电机控制、数据采集和PWM信号生成等应用中,实现复杂的时间序列和多通道的同步操作。本节课
    的头像 发表于 11-26 17:51 331次阅读
    详解<b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>的定时器同步功能