牢底坐穿 2024-07-01 10:58 采纳率: 100%
浏览 5
已结题

stm32h750 dmaadc

STM32H7系列使用ADC DMA功能时读数问题
我开的路ADC但是两个ADC值之间相互影响,当我接一个GPIO的ADC时另一个GPIO的ADC值也会变


```c

#define ADC_CONVERTED_DATA_BUFFER_SIZE   ((uint32_t)  100) 
ALIGN_32BYTES (static uint16_t   aADCxConvertedData[ADC_CONVERTED_DATA_BUFFER_SIZE]) __attribute__((section(".ARM.__at_0x24000000")));
//uint16_t aADCxConvertedData[1];

void ShowADCResult(void)
![img](https://img-mid.csdnimg.cn/release/static/image/mid/ask/13ca562eed744157be6b4255132dd1f0.png "#left")

{
    uint32_t ad1,ad2;
    uint16_t i;
    for(i = 0,ad1=0,ad2=0; i < ADC_CONVERTED_DATA_BUFFER_SIZE;)
        {
            ad1 += aADCxConvertedData[i++];
            ad2 += aADCxConvertedData[i++];
        }
        ad1 /= 50;//累加50次,???后求均???
        ad2 /= 50;
        printf("\r\n******** ADC DMA Example ********\r\n\r\n");
        printf(" AD1 value = %dV \r\n", ad1);//转换后的真实电压*3.3f/65536
        printf(" AD2 value = %dV \r\n", ad2);
}


  • 写回答

2条回答 默认 最新

  • 阿里嘎多学长 2024-07-01 10:58
    关注

    以下内容由CHATGPT及阿里嘎多学长共同生成、有用望采纳:


    在使用STM32H7系列的ADC DMA功能时,确保两个GPIO的ADC读数不相互影响,需要考虑以下几个方面:

    1. ADC配置:确保每个ADC通道的配置正确,包括采样时间、输入通道选择等。根据提供的资源文件,你似乎已经配置了ADC1和ADC3,但需要确保它们分别配置在不同的GPIO上。

    2. DMA配置:DMA(Direct Memory Access)应该被正确配置来避免数据交叉污染。检查DMA的源地址和目标地址是否正确设置,确保DMA传输不会覆盖不相关的数据缓冲区。

    3. 中断和DMA请求:确保DMA传输完成后,相应的中断或DMA请求被正确处理,以避免数据丢失或错误。

    4. 代码逻辑:在你的代码示例中,累加和平均计算部分存在一些问题。例如,累加50次后求平均的逻辑需要确保每次累加的都是正确的数据。此外,累加后除以50的计算应该是整数除法,这可能导致精度损失。如果需要更精确的计算,可以使用浮点数。

    5. 电压转换:将ADC值转换为实际电压值,需要知道ADC的参考电压(Vref)和分辨率。STM32H7系列通常有12位或16位的ADC分辨率。根据你提供的资源文件,你使用的是16位分辨率。转换公式通常是: [ V_{\text{actual}} = \left(\frac{\text{ADC value}}{2^{16}} \times V_{\text{ref}}\right) ]

    6. 干扰源检查:检查是否有外部信号或其他硬件配置可能影响ADC读数,例如电磁干扰、电源不稳定等。

    7. 参考链接

      • STM32H7参考手册:提供了关于STM32H7系列的详细技术信息。
      • STM32CubeMX工具:用于配置STM32微控制器的图形化工具,可以生成初始化代码和配置。

    最后,如果你需要更具体的帮助,可以提供更详细的代码和配置信息,以便进行更深入的分析和建议。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 7月12日
  • 已采纳回答 7月4日
  • 创建了问题 7月1日

悬赏问题

  • ¥20 python忆阻器数字识别
  • ¥15 无法输出helloworld
  • ¥15 高通uboot 打印ubi init err 22
  • ¥20 PDF元数据中的XMP媒体管理属性
  • ¥15 R语言中lasso回归报错
  • ¥15 网站突然不能访问了,上午还好好的
  • ¥15 有没有dl可以帮弄”我去图书馆”秒选道具和积分
  • ¥15 semrush,SEO,内嵌网站,api
  • ¥15 Stata:为什么reghdfe后的因变量没有被发现识别啊
  • ¥15 振荡电路,ADS仿真