工具/软件:
您好!
我正在使用 STM32 器件以 48kHz 采样速率从 ADS8665 读取音频应用的数据。 遗憾的是、STM32 SPI 硬件不提供 SPI 在固定周期内获取样本的功能。 尽管有、但我必须在没有 CPU 干预的情况下以 48kHz 的方式切换 CS 引脚。 我使用软件计时器中断来生成所需的 CS 信号并启动 SPI DMA 传输、这涉及 CPU、从而导致采样之间的时间周期不一致。 我最近使用 2 个不同的计时器解决了这一问题。
一个计时器以%20 占空比作为 48kHz PWM 生成 CS 信号。 其他计时器在触发模式下工作、当 CS 计时器触发时、该计时器会生成 16 个时钟脉冲。 我使用 STM32 SPI 作为从器件。 连接如下所示:
TIM CLK 信号:连接至 ADC CLK 和 STM32 SPI 从器件 CKL
TIM CS 信号:仅连接到 ADC CS
ADC SDO:已连接 SO STM32 SPI SDI
ADC SDI:始终为低电平
这样、我欺骗 STM32、好像一些主器件向它发送数据、而 ADC 就像主器件从它请求数据一样。 这样可以、但我需要 STM32 的高级计时器来提供正好 16-32 个时钟、如果 ADC 已经处理了这些时钟、则可以将其用于更复杂的任务。
我意识到 ADS8665 能够从 RVS 引脚提供计时器时钟、但我执行该 ADC 操作时遇到困难。 如果我使用它的内部时钟、RVS 引脚的时钟输出将非常高、以满足我的采样率需求、并且该内部时钟不可分频。 我想知道是否可以提供外部元件
48kHz 连续 CS 信号、占空比为 50%
占空比为 50%的 2MHz 连续 CLK 信号
ADC 从 SDO 输出样本、还从 RVS 提供 32 位时钟信号、以便我仍然可以通过将 RVS 连接到 STM SPI CLK 并将 ADC SDO 连接到 STM SDI 在循环 DMA 模式下使用 STM32 SPI?
如果无法实现、是否有办法在没有 CPU 干预的情况下获取 ADC 样本?
提前感谢!