我正在使用 STM32F031K6,时钟频率为 40MHz,我想设计一个用作循环移位寄存器的程序 - 使用外部触发器为其计时,每次上升/下降沿时移位寄存器中的值左移已收到。输出是一个引脚高或低。
我需要使时钟边沿和输出之间的时间小于 0.5uS,或者尽快失败。移位寄存器的值可以改变,长度也可以改变,但现在我只是从一个像 11000010 这样的字节开始。
我最初想用外部中断来实现它,但有人建议可能有更好的方法来实现它
非常感谢任何帮助
您可以使用 STM32F0 的 SPI 外设来完成您的任务。当配置为从模式时,每次在 SCK 信号上检测到外部时钟沿时,MISO 将设置为通过 SPI 数据寄存器加载到内部移位寄存器中的值的下一位。
查看 STM32F0 参考手册中有关串行外设接口 (SPI) 的章节。特别是看看解决以下关键字的部分:
SPI 单元是高度可配置的,例如关于时钟信号的极性。由于它是一个独立的硬件单元,它应该能够处理您的 0.5us 反应时间要求。每次设置 Tx 缓冲区空标志 (TXE) 时,MCU 固件都需要设置 SPI 单元,然后向 SPI 单元提供新数据。这也可以通过中断 (TXEIE) 甚至使用带有循环缓冲区的 DMA 通道 (TXDMAEN) 来完成。在后一种情况下,“移位寄存器功能”完全独立于 MCU 内核运行(设置后)。