ST意法半导体
直播中

蔡鼎瑾

8年用户 1055经验值
私信 关注
[问答]

带DMA的STM32H723ZG模数转换器,数据宽度为什么要设置成32位?

我正在使用 STM32H723ZG MCU,并希望通过 DMA 使用 ADC 扫描转换。我可以实现我想要的,只有一件事我不完全理解与之相关。
我正在使用最大分辨率为 12 位的 ADC3。根据MCU的参考手册,ADC转换后的数据存放在一个16位的寄存器中。

当我配置 DMA 时,我必须选择 Word 作为数据宽度。Word在这里表示32位。
我的问题是:为什么?如果ADC转换结果存储在16位寄存器中,为什么我必须将DMA的数据宽度设置为32位?


回帖(1)

梅宁琛

2022-12-5 16:23:38
STM32是32位架构,也就是说核心、总线和内存宽度都是32位。
关于您的固件,您应该能够从 ADC3 以 2 字节大小(半字)发出 DMA 请求
我可以建议您查看以下 HAL 库示例:
STM32CubeRepositorySTM32Cube_FW_H7_V1.10.0ProjectsSTM32H735G-DKExamplesADC_DMA_Transfer
您需要将您的固件与 ADC 和 DMA 半字配置进行比较,并确保您的 ADC 转换表声明如下,并在 SRAM 中正确对齐。


  • /* Variable containing ADC conversions data */
  • ALIGN_32BYTES (static uint16_t   aADCxConvertedData[ADC_CONVERTED_DATA_BUFFER_SIZE]);
举报

更多回帖

发帖
×
20
完善资料,
赚取积分