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

    文章

    5619

    浏览量

    130409
  • adc
    adc
    +关注

    关注

    100

    文章

    7946

    浏览量

    556878
  • dma
    dma
    +关注

    关注

    3

    文章

    582

    浏览量

    106265

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

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

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    中科芯CKS32F107XX系列MCU的独立看门狗介绍

    中科芯CKS32F107xx系列产品内部提供两个看门狗定时器单元,独立型看门狗IWDG(Independent Watchdog)和窗口型看门狗WWDG(Window Watchdog),它们在
    的头像 发表于 11-28 14:51 4006次阅读
    中科芯<b class='flag-5'>CKS32F107XX</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的独立看门狗介绍

    中科芯CKS32F107XX系列MCU的窗口看门狗介绍

    中科芯CKS32F107xx系列产品内部提供两个看门狗定时器单元,独立型看门狗IWDG(Independent Watchdog)和窗口型看门狗WWDG(Window Watchdog),本文主要介绍WWDG的应用,关于IWDG的详情,请参看我们的IWDG微课堂内容。
    的头像 发表于 11-28 14:48 4315次阅读
    中科芯<b class='flag-5'>CKS32F107XX</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的窗口看门狗介绍

    中科芯CKS32F107XX系列MCU的bxCAN介绍

    CKS32F107xx系列产品的bxCAN支持CAN协议2.0A和2.0B标准。 该CAN 控制器支持最高的通讯速率为1Mb/s;可以自动地接收和发送CAN报文,支持使用标准ID和扩展ID的报文
    的头像 发表于 01-22 09:06 3956次阅读
    中科芯<b class='flag-5'>CKS32F107XX</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的bxCAN介绍

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

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

    CKS32F4xx系列ADC单通道电压采集

    CKS32F4xx系列ADC单通道电压采集
    的头像 发表于 11-06 16:54 1918次阅读
    <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 1446次阅读
    <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 1603次阅读
    <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 1549次阅读
    <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 1824次阅读
    <b class='flag-5'>MCU</b>微课堂 | <b class='flag-5'>CKS32F4xx</b><b class='flag-5'>系列</b>产品SPI通信

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

    上一章节对CKS32F107xx系列时钟做了整体介绍,本章节以使用HSI内部高速时钟为例对时钟具体配置方法进行讲解。
    的头像 发表于 05-28 10:05 1724次阅读
    <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 2060次阅读

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

    16个引脚,如型号为CKS2F107VET6型号的芯片有GPIOA、GPIOB、GPIOC至GPIOE共5组GPIO,芯片一共100个引脚,其中GPIO就占了一大部分,所有的GPIO引脚都有基本的输入输出功能。
    的头像 发表于 07-22 09:23 2031次阅读
    <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 1896次阅读
    详解<b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>的定时器同步功能

    CKS32F107xx系列USART的LIN模式

    CKS32F107xx系列在支持正常USART功能的同时,亦支持LIN(局域互联网)模式
    的头像 发表于 02-18 17:18 1355次阅读
    <b class='flag-5'>CKS32F107xx</b><b class='flag-5'>系列</b>USART的LIN<b class='flag-5'>模式</b>

    中科芯CKS32F107XX系列MCU的电源控制介绍

    CKS32F107xx的工作电压(VDD)为2.0~3.6V,通过内置的电压调节器提供内核所需的1.5V电源,图1为电源系统框架。
    的头像 发表于 03-25 16:34 568次阅读
    中科芯<b class='flag-5'>CKS32F107XX</b><b class='flag-5'>系列</b><b class='flag-5'>MCU</b>的电源控制介绍