查看: 4059|回复: 0

有关1050 内部ADC使用DMA的问题

[复制链接]

该用户从未签到

6

主题

10

帖子

0

注册会员

Rank: 2

积分
67
最后登录
2019-12-13
发表于 2018-1-31 15:40:33 | 显示全部楼层 |阅读模式
各位大神,有木有碰到如此问题的,使用iMx.rt1050芯片内部ADC,使用dma进行数据传输,dma基本配置如下:
    /* Init the EDMA module */
    EDMA_GetDefaultConfig(&config);
    EDMA_Init(ADC_DMA_BASEADDR, &config);

    EDMA_CreateHandle(&g_adcetcEdmaHandle,ADC_DMA_BASEADDR,ADC_DMA_CHANNEL);

    EDMA_PrepareTransfer(&transferConfig, &(ADC1->R[0]), 2, &g_AdcConversionValuef, 2,
                         2, 2*BUF_SIZE, kEDMA_PeripheralToMemory);
    EDMA_SetCallback(&g_adcetcEdmaHandle, EDMA_Callback, NULL);
    EDMA_SubmitTransfer(&g_adcetcEdmaHandle, &transferConfig);
    EDMA_StartTransfer(&g_adcetcEdmaHandle);
使用的是ADC group 0,配置的源地址也是&(ADC1->R[0]),应该没错误,但为啥dma传输的数据全是0,DMA运行配置应该没问题,因为每次ADC触发转换dma传输一次数据,当传输指定BUF_SIZE次数据后会产生DAM完成中断,我以为是DMA源地址配置错误,但检查没问题,通过 ADC_GetChannelConversionValue(ADC1, 0);去取得的数据又是正常的,求大神指点。

还有个问题就是ADC_ETC配合DMA的问题,比如DMA如下配置
EDMA_PrepareTransfer(&transferConfig, &(ADC1->R[0]), 2, &g_AdcConversionValuef, 2,
                         2, 2*BUF_SIZE, kEDMA_PeripheralToMemory);
一次ADC_ETC的触发采样,导致DMA传输了BUF_SIZE次,并产生了DMA完成中断,求解释!



回复

使用道具 举报

您需要登录后才可以回帖 注册/登录

本版积分规则

关闭

站长推荐上一条 /3 下一条

Archiver|手机版|小黑屋|恩智浦技术社区

GMT+8, 2025-7-18 17:36 , Processed in 0.079687 second(s), 19 queries , MemCache On.

Powered by Discuz! X3.4

Copyright © 2001-2024, Tencent Cloud.

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