硬汉嵌入式论坛

 找回密码
 立即注册
查看: 263|回复: 5
收起左侧

[ADC] [ADC] STM32H7 ADC单通道转换DMA传输,获取的数据不正常

[复制链接]

2

主题

4

回帖

10

积分

新手上路

积分
10
发表于 2024-2-23 12:11:25 | 显示全部楼层 |阅读模式

开发环境:STM32CubeIDE

使用PA6(ADC1_INP3)做单端ADC通道(分辨率10bit)采样PWM方波(频率从100Hz、1KHz、10KHz都试过;占空比20%-50%都试过),通过TIM3的超时触发(1MHz)或软件触发也都试过,定义的ADC数据缓存数组放到AXIRAM地址(0x24000000),将其内容设置为no cache。获取的数据不正常,总是在3.3v的值中插入几个0V的值,如下图。

AXIRAM的MPU配置如下:



  MPU_InitStruct.Enable = MPU_REGION_ENABLE;
  MPU_InitStruct.Number = MPU_REGION_NUMBER0;
  MPU_InitStruct.BaseAddress = 0x24000000;
  MPU_InitStruct.Size = MPU_REGION_SIZE_512KB;
  MPU_InitStruct.SubRegionDisable = 0x0;
  MPU_InitStruct.TypeExtField = MPU_TEX_LEVEL0;
  MPU_InitStruct.AccessPermission = MPU_REGION_FULL_ACCESS;
  MPU_InitStruct.DisableExec = MPU_INSTRUCTION_ACCESS_ENABLE;
  MPU_InitStruct.IsShareable = MPU_ACCESS_NOT_SHAREABLE;
  MPU_InitStruct.IsCacheable = MPU_ACCESS_NOT_CACHEABLE;
  MPU_InitStruct.IsBufferable = MPU_ACCESS_NOT_BUFFERABLE;

  HAL_MPU_ConfigRegion(&MPU_InitStruct);


回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-2-23 12:15:11 | 显示全部楼层
感觉像是cache的问题,但我已经设置为no cache
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2024-2-23 13:44:05 | 显示全部楼层
1、确认下你的ADC缓冲地址是分配到了你设置的这个0x24000000上了吧。
2、设置这个为LEVEL1试试MPU_InitStruct.TypeExtField     = MPU_TEX_LEVEL1;
3、另外你的稳压基本测试下,看看是否有问题。
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-2-23 15:29:53 | 显示全部楼层
eric2013 发表于 2024-2-23 13:44
1、确认下你的ADC缓冲地址是分配到了你设置的这个0x24000000上了吧。
2、设置这个为LEVEL1试试MPU_InitStr ...

  • 我用的缓冲区数组定义是
    [C] 纯文本查看 复制代码
    ALIGN_32BYTES(__IO uint16_t aADCxConvertedValues[ADCCONVERTEDVALUES_BUFFER_SIZE]);


*.map中显示其确实在0x24000000地址中,如下
[XML] 纯文本查看 复制代码
.bss.aADCxConvertedValues
                0x00000000240000e0     0x2000 Core\Src\adc.o
                0x00000000240000e0                aADCxConvertedValues
改为MPU_TEX_LEVEL1后也不行
回复

使用道具 举报

2

主题

4

回帖

10

积分

新手上路

积分
10
 楼主| 发表于 2024-2-23 17:54:41 | 显示全部楼层
找到问题了,程序没有问题。我是用断点看的缓存数组中的数据不对,数据通过串口打印出来没有问题,谢谢硬汉哥的解答
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
106660
QQ
发表于 2024-2-24 00:16:06 | 显示全部楼层
taokingfly 发表于 2024-2-23 17:54
找到问题了,程序没有问题。我是用断点看的缓存数组中的数据不对,数据通过串口打印出来没有问题,谢谢硬汉 ...

谢谢告知最终问题原因。
回复

使用道具 举报

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

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2024-4-29 07:26 , Processed in 0.340264 second(s), 26 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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