title: STM32F4 DMA can work in parallel?
body: <p>I'm working on an appolication that requires 3x SPI (I'm master in all of them) and SDIO interface, using STM32F446.</p>
  
  <p>2 of the SPIs (SPI1 and SPI2) are sensors that need to be read every 1ms. For SPI1 I need to write 1 byte and the response to that will be the value. For SPI2 I need to write 1 byte and then read 6.</p>
  
  <p>The third SPI (SPI3) and the SDIO are for communication/logging and both of them don't need to transmit data with a fixed period.</p>
  
  <p>Looking at the <a href="http://www.st.com/content/ccc/resource/technical/document/reference_manual/4d/ed/bc/89/b5/70/40/dc/DM00135183.pdf/files/DM00135183.pdf/jcr:content/translations/en.DM00135183.pdf" rel="nofollow">STM32F46x manual</a> , section 9, it doesn't look like I can trigger DMA transfers with peripherals interupts (that's too bad), but can I do the all thing like: </p>
  
  <ol>
  <li>Timer interrupt every 1ms: inside ISR SPI1 and SPI2 DMA transfers are triggered. DMA transfer fills buffer with received sensor data;</li>
  <li>Everytime I need to write to SDIO or SPI3 I start a DMA transfer with less priority then the ones at SPI1 and SPI2.</li>
  </ol>
  
  <p>I'm guessing that SPI1 and SPI2 can perform at parallel since I have 2 DMA controllers and that, if they occur at the same time of SPI2 and SDIO, the later will be blocked until the controller is free. Is that right?</p>