要用F407的 SPI 接口接收 AD 数据,采样频率几百K ~ 1 MHz。
SPI 的启动方法有以下几种:
1、用软件向 SPI -> DR 寄存器写数据,写一次就启动一次。这是常规的方法。
我现在的情况是:CPU很忙,这样做难以达到几百 K 的速度。另外,暂时不考虑在中断中写 DR 寄存器,因为难以与其他中断协调。
2、用 DMA 方式,可以“批量”启动 SPI,次数可以定义。
可惜两个 DMA 控制器都已经占用了,一个用于 DA 高速输出(板子另有一片高速 DA ),另一个准备用来转移这个 AD 的数据。
有两个问题:
1、还有其他可能的方法吗?
2、一个 DMA 控制器,可以同时打开两个通道吗?
我这样设想:
1、定时器 PWM 方式输出脉冲,启动 AD 转换;
2、这个脉冲的后沿同时启动 DMA ,向 SPI-DR 寄存器搬数据,即启动 SPI 接收 AD 数据;
3、接收完成事件启动同一个 DMA 的另一个通道,把接收数据搬到其他地方(缓冲区)。
以上过程反复运行。
两个通道的物理过程,决定了它们不是同时出现的。似乎可行吧。
|