gpt4 book ai didi

c - 用STM32F3读取非常规ADC

转载 作者:太空宇宙 更新时间:2023-11-04 01:46:18 25 4
gpt4 key购买 nike

我正在尝试将 STM32F303 Nucleo 与 AD7748-4 ADC 连接起来。 ADC 的数据表:

https://www.analog.com/media/en/technical-documentation/data-sheets/ad7768-7768-4.pdf

问题是,ADC 不通过 SPI 端口输出转换后的值,而是使用数据就绪信号 (DRDY)、数据时钟 (DCLK) 和 4 个数据输出 (DOUT0-DOUT3) 的组合.如果我这样设置,输出将通过一根线串行传输 96 位,但时序在我的应用中很关键,我需要使用 DOUT0 到 DOUT2 对数据进行计时,每个输出 32 位。如果我串行传输数据,我可以欺骗 SPI 端口读取它,但我没有。 ADC 以 20MHz 运行,因此 DCLK 将以相同频率运行。 Nucleo 的最高运行频率为 72MHz,但当使用 DAM 时,它将时钟设置为 64MHz。

在 STM 手册中,将“GPIO 端口输入数据寄存器 (GPIOx_IDR) (x = A..H)”描述为只读寄存器 - 我的理解是低 16 位可以存储输入值到 16 位(最有可能用于内存数据 R/W)——所以问题是,如何配置 GPIO 以读取数据?我在这里有点僵局。我的直觉告诉我,Nucleo 可能不够快,无法读取来自 ADC 的数据……有什么想法吗?所有都是用 C/C++ 编写的,基本上是裸机...我是 Nucleo 的新手,已经 4 年没有编写代码了 - 请原谅任何知识上的失误...

最佳答案

如果DCLK工作在20Mhz,uC显然不够快(每个周期之间你有大约3条指令,所以即使是汇编语言也很难实现......)。由于我不熟悉 stm 体系结构,我只能建议一个可能会在您脑海中激发一些想法的技巧。不要为 ADC 使用晶体,而是使用连接到输出引脚的 STM 定时器,并使用该引脚 (MCLK) 为 ADC 提供时钟。使用 spi、空闲模式等配置 ADC 时,您可以将此时钟信号保持在 20Mhz。但是,当您需要来自 ADC 的样本时,请停止 STM 计时器并“手动”为 ADC 计时。 (您实际上控制了 DCLK 信号)。转换例程结束后,以 20Mhz 重新启动计时器。

关于c - 用STM32F3读取非常规ADC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53281745/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com