You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用MCC配置PIC24FJ1024GB610的DMA实现定时触发ADC采样

PIC24FJ1024GB610 基于MCC的DMA+ADC+定时器多路采样配置入门

一、配置前置逻辑

先完成ADC和定时器的基础配置,再配置DMA——因为DMA的触发源、数据来源依赖前两者的设置。

二、ADC模块配置(MCC)

  • 从左侧外设列表打开ADC模块:
    • 核心参数:
      • 采样时钟分频:根据多路采样需求设置(例如分频16,保证转换速率稳定)
      • 参考电压:选择适配你的模拟输入范围的参考源(如内部2.048V或VDD/VSS)
      • 触发源:指定你要使用的定时器(如Timer2),设置为定时器周期触发
    • 多路通道配置:
      • 在Channel List中添加所有需要采样的模拟通道(如AN0、AN1、AN2等)
      • 开启Scan Mode(扫描模式),让ADC按顺序自动完成多路通道采样
      • 为每个通道设置合理的采样时间(避免因采样不足导致数据失真)

三、定时器模块配置(MCC)

  • 打开目标定时器模块(如Timer2):
    • 计算并设置定时器周期:根据目标采样频率,用公式周期 = (预设值 + 1) * 分频系数 * 指令周期计算参数
    • 开启定时器的溢出触发输出,确保定时器每次溢出时能触发ADC启动转换

四、DMA模块配置(对应你的MCC界面)

针对你提供的MCC DMA界面,按以下步骤配置:

  1. 选择空闲DMA通道(如DMA0)
  2. 数据源设置:
    • Source Address:选择ADC结果寄存器ADC1BUF0(扫描模式下,多路采样结果会依次存入ADC1BUF0~ADC1BUFn,DMA会自动递增读取)
    • Source Address Increment:设为Increment(自动指向下一个ADC缓冲寄存器)
    • Source Data Size:选16-bit(PIC24的ADC结果以16位寄存器存储)
  3. 数据目标设置:
    • Destination Address:输入你预定义的RAM数组地址,例如&adc_sample_buffer[0](需提前在代码中定义:uint16_t adc_sample_buffer[CHANNEL_NUM * SAMPLE_NUM];)
    • Destination Address Increment:设为Increment(自动将数据存入数组下一个位置)
    • Destination Data Size:选16-bit,与数据源匹配
  4. 触发源设置:
    • Trigger Source:选择ADC1 Conversion Complete(ADC每次转换完成后触发DMA传输)
    • Transfer Count:设置总采样次数(例如CHANNEL_NUM * 100,即每个通道采样100次)
  5. 模式设置:
    • 按需开启Continuous Mode(持续循环采样)或One-Shot Mode(单次采样)
    • 可选开启DMA Interrupt,方便在DMA传输完成后触发中断进行后续计算

五、代码补充与验证

  • 在主代码中定义全局采样数组(确保CPU可随时访问):
    #define CHANNEL_NUM 4
    uint16_t adc_sample_buffer[CHANNEL_NUM]; // 存储单次多路采样结果
    
  • 初始化完成后,启动所有模块:
    ADC1_Enable();
    TMR2_Start();
    DMA0_Enable();
    
  • 后续计算时,直接读取adc_sample_buffer数组即可,CPU无需参与ADC采样和数据传输过程

六、常见排查点

  • DMA无数据传输:检查触发源是否为ADC转换完成、ADC是否开启扫描模式、DMA通道是否启用
  • 采样数据异常:核对ADC参考电压、通道配置,确认定时器周期符合采样速率要求
  • 内存访问问题:确保采样数组为全局变量,或放在CPU与DMA均可访问的RAM区域

内容的提问来源于stack exchange,提问作者WalterPH

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.17 14:52:42