MCU是主spi,但只要新值准备好传输,ADC就会发送“数据就绪”信号。我的旧实现(有效)侦听外部中断(数据就绪),并调用SPI transfer (KEIL驱动程序)读回值。问题是,当我将采样率提高到每秒20,000个样本以上时,它变得太慢,cpu被中断太多次,我无法做其他任何事情。我的目标是达到每秒32K个样本。Keil spi驱动程序使用DMA底层,但仍然中断cpu每秒32K次太多了。
我认为应该有一种方法来配置低级DMA,以便在外部事件(数据就绪信号)发生时开始传输。我的目标是设
我的想法是,首先拉低CS和D/C,然后通过HAL_SPI_Transmit_IT();发送1字节的命令,拉高D/C引脚,并在SPI中断例程中启动DMA传输。在DMA TxComplete中断中,CS引脚将被拉高。 我的SPI设置为数据长度为8位,DMA设置为存储器到外设和增量模式。SPI中断例程 void SPI2_IRQHandler(void) /* USER CODE BEGIN SPI2_