使用 STM32F767 Nucleo‑144 开发板。在 CubeIDE 中将 SPI1 配置为 I2S1 输入,通过 DMA2/Stream0 将数据搬运至一个简短的 8×16 位环形缓冲区。SPI1 时钟约为 3MHz。我配置了 HAL_I2S_RxHalfCpltCallback () 与 HAL_I2S_RxCpltCallback () 回调函数。在两个回调函数中各翻转一次 GPIO,得到约 23.8kHz 的方波。
但是该方波存在明显抖动。存在 100ns 量级的固定抖动;在部分时间段内,信号的占空比会出现约 330ns 的偏移,持续大约一秒。330ns 恰好是我所用 3MHz 时钟的周期倒数。
我曾精简 HAL_DMA_IRQHandler (),只保留我项目必需的代码,但抖动没有改善。我也调整过 NVIC 优先级,同样无效。
如何消除该抖动?
|
|