找回密码
 立即注册
查看: 238|回复: 3

ADC_DMA数据不对

[复制链接]
  • 打卡等级:常住居民II
  • 打卡总天数:83
  • 最近打卡:2025-11-01 03:42:53
已绑定手机

4

主题

30

回帖

448

积分

中级会员

积分
448
发表于 2025-9-5 16:51:15 | 显示全部楼层 |阅读模式
////////////////////////////////////////
void main(void)
{
    //<<AICUBE_USER_MAIN_INITIAL_BEGIN>>
    u16 i, a;
    // 在此添加用户主函数初始化代码
    //<<AICUBE_USER_MAIN_INITIAL_END>>

    SYS_Init();

    //<<AICUBE_USER_MAIN_CODE_BEGIN>>
    // 在此添加主函数中运行一次的用户代码
    //<<AICUBE_USER_MAIN_CODE_END>>

    while (1)
    {
        //<<AICUBE_USER_MAIN_LOOP_BEGIN>>
        // 在此添加主函数中用户主循环代码
        // printf_usb("Hello World !\r\n");
        i = ADC_Convert(15);
        printf_usb("%d\r\n",(int) pu8ADCDMABuffer[0]);

        printf_usb("%d\r\n",(int) pu8ADCDMABuffer[1]);
        printf_usb("%d\r\n",(int) pu8ADCDMABuffer[2]); //通道数
       // printf_usb("%d\r\n", (int)a);
        printf_usb("%d\r\n",(int) i);
        delay_ms(1000);
        // 接收数据原样返回,用于测试usb OUT done();
        // 当使用査询方式 if(bUsbOutReady),查询调用 USB 库函数时,在数据处理完成后,//必须调用一次“usb OUT done0;”,这样才能接收下一包数据。
        //<<AICUBE_USER_MAIN_LOOP_END>>
    }
}   ADC_DMA ,接收的数据和通道号不对,实际采地15通道, wechat_2025-09-05_164911_662.png


wechat_2025-09-05_165008_341.png
回复

使用道具 举报 送花

3

主题

1848

回帖

544

积分

等待验证会员

积分
544
发表于 2025-9-5 16:53:00 | 显示全部楼层
ADCDMA数据不对的问题可能由多个因素引起,包括但不限于DMA配置错误、ADC通道配置不正确、数据缓冲区未正确初始化或读取方式不当。以下是对该问题的详细分析及建议。

首先,检查ADCDMA是否已正确配置。确保DMA通道与ADC通道对应,并且DMA传输模式设置为循环模式(Circular Mode),以保证持续采集数据。同时,确认DMA中断是否被正确使能,以便在数据到达时触发处理逻辑。

其次,检查ADC通道配置是否正确。根据您的描述,实际采样的是通道15,但代码中可能存在通道选择错误。请确认ADCConvert(15)调用是否正确,以及ADC通道是否已正确配置为使用通道15。此外,还需检查ADC的采样时间、分辨率等参数是否符合要求。

接下来,检查DMA缓冲区的初始化和使用是否正确。确保pu8ADCDMABuffer是一个足够大的数组,能够存储所有采集的数据。如果缓冲区大小不足,可能导致数据覆盖或读取错误。此外,确认DMA传输完成后是否及时更新了缓冲区指针,以避免读取到旧数据。

最后,检查数据读取方式是否正确。在代码中,您直接通过pu8ADCDMABuffer[0]、pu8ADCDMABuffer[1]等访问DMA缓冲区的数据。请确保这些索引对应的通道数据确实存在,并且没有发生数据错位。如果使用的是多通道ADC,需确保每个通道的数据在缓冲区中的位置正确。

综上所述,建议逐一检查上述各部分配置,确保ADC、DMA及数据处理逻辑均正确无误。若问题仍未解决,可进一步检查硬件连接及时钟配置,以排除外部因素导致的数据异常。

[本文内容由国芯人工智能辅助生成,仅供参考]
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:544
  • 最近打卡:2025-10-31 09:14:02
已绑定手机

48

主题

2300

回帖

8110

积分

论坛元老

积分
8110
发表于 2025-9-5 18:09:12 | 显示全部楼层
描述问题时最好提供完整信息,例如使用什么型号的单片机,上传能够复现问题的测试项目。
回复

使用道具 举报 送花

  • 打卡等级:常住居民II
  • 打卡总天数:94
  • 最近打卡:2025-10-31 09:14:17

7

主题

273

回帖

1457

积分

超级版主

积分
1457
发表于 2025-9-6 09:45:20 | 显示全部楼层
既然是使能了ADC的DMA功能
就必须使用DMA_ADC_Trigger();函数自动触发ADC转换
不能使用ADC_Convert(15);
回复

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-11-1 09:08 , Processed in 0.140646 second(s), 70 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表