ADC交错模式(2/2):手动操作
STM32CubeIDE项目

本系列文章将为您提供:

  • 如何实现ADC交错模式以使等效采样率翻倍的提示和技巧
  • ADC交错模式细节的实用性
  • 关于使用ADC公共数据寄存器进行DMA数据传输的信息

文章的第一部分在这里提供

1.新建项目

  • 打开STM32CubIDE
  • 文件→ STM32新项目→ 选择STM32L476RG
  • 输入项目名称和位置
  • 按下“完成”按钮
         

2.系统核心

文件→ STM32新项目→ STM32L476RG(核)
引脚输出和配置选项卡→ 系统核心→ 系统
选择调试接口:串行线
      

3.模拟设置

  • 引脚输出和配置选项卡→ 模拟→ ADC1型
  • 引脚输出和配置选项卡→ 模拟→ ADC1:AC1参数设置选项卡:
    -模式:仅双交织模式
    -DMA访问模式:启用DMA访问模式
    -2个采样阶段之间的延迟:3个周期
    -同步时钟模式除以1
    -连续转换模式:已启用
    -DMA连续请求:已启用
    -排名1;通道:通道5,采样时间:6.5个周期
  • 引脚输出和配置选项卡→ 模拟→ ADC1:在DMA设置选项卡中配置ADC1
-ADC1,DMA1通道1,外设至存储器,低
-模式:正常,
-增量地址:内存,
-数据宽度:字
  • 引脚输出和配置选项卡→ 模拟→ ADC2:在“参数设置”选项卡中配置ADC2
-模式:仅双交织模式
-DMA访问模式:启用DMA访问模式
-2个采样阶段之间的延迟:3个周期
-同步时钟模式除以1
-连续转换模式:已启用
-排名1;通道:通道5,采样时间:6.5个周期
  • 引脚输出和配置选项卡→ 连通性→ 美国第2条
USART2模式:异步
参数设置选项卡中的USART2
-波特率:115200比特/秒,
-字符长度:8比特,
-奇偶校验:无,
-停止位:1

4.时钟配置选项卡

  • 将HCLK频率设置为80MHz

5.生成代码

  • 点击
  • 打开C透视图并编辑主.C文件

6.在中插入相关代码主要.c

  • 按照用户代码的节名,逐节并放入的相关代码主要.c
1.用户代码包含部分#include<stdio.h>
2.用户代码PD#定义ADC_BUF_SIZE 20
3.用户代码PV static uint32_t adcBuf[ADC_BUF_SIZE];static uint32_t adcFlag=重置;
4.用户代码0 int _write(int file,char*ptr,int len){HAL_UART_Transmit(&huart2,(uint8_t*)ptr,len,100);返回len;}
5.用户代码2 HAL_ADCEx_Calibration_Start(&hadc1,ADC_SINGLE_ENDED);HAL_ADCE_Calibration_Start(&hadc2,ADC_SINGLE_ENDE);LL_ADC_SetMultiDMATransfer(ADC123_COMMON,LL_ADC_MULTI_REG_DMA_LIMIT_RES12_10B)//单次MDMA模式HAL_ADCEx_MultiModeStart_DMA(&hadc1,adcBuf,ADC_BUF_SIZE)__HAL_DMA_DISABLE_IT(&hdma_adc1,DMA_IT_HT)//避免DMA半传输中断触发

7.MDMA模式

  • MDMA=0b10:每次发生主EOC和从EOC事件时,都会生成一个DMA请求,32位寄存器ADC_CDR包含两个半字,表示两个ADC转换的数据项(10或12位)。
  • 按照用户代码的节名,逐节并放入的相关代码主要.c
6.用户代码3 if(adcFlag){printf(“---------------\r\n”);for(uint32_t i=0;i<ADC_BUF_SIZE;i++){print f(“%u\r\n”,(uint16_t)(adcBuf[i]&0x0000FFFF));//LSB->MASTER printf(”%u\r\n“,(uint16_t;adcFlag=重置;HAL_ADCEx_Multi-ModeStart_DMA(&hadc1、adcBuf、ADC_BUF_SIZE)__HAL_DMA_DISABLE_IT(&hdma_adc1,DMA_IT_HT);}
7.用户代码4无效HAL_ADC_ConvCpltCallback(ADC_HandleTypeDef*AdcHandle){adcFlag=SET;}

8.最后步骤

  • 10.启动端子:115200,8,N,1并观察ADC结果,检查应用程序是否正在运行
  • 11.连接信号发生器:正弦500kHz/3Vpp,遵循MCU电气极限(单极电压),CN8引脚1或CN7引脚28
  • 12.观察ADC结果,将文本数据导入Excel