我正在尝试将 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 年没有写过代码了 - 请原谅任何知识上的失误......