stm32 SPI DMA通信の送信効率
Page content
STM32マイコンのSPI通信の実行速度について検証しました。 SPI clock = 10MHz, 通常送信(1バイトづつ断続)とDMA送信(連続)で、3 bytes送信時の比較です。
Result
DMA通信は通常のバイト送信と比較して2倍速となりました。これからはDMA通信一筋でやります :-)
- SPI-TX, 3 bytes at 10MHz = 4.5 usec
- SPI-TX(DMA), 3 bytes at 10MHz = 2.5 usec
CubeMXから Configuration-ConnecticityにあるSPI設定パネルのDMAを有効にしてから、このHAL APIを呼び出すだけで実行できます。
Environment
- Board: ST Microelectronics NUCLEO-F401RE
- Code generator : STM32CubeMX (free)
- IDE : AC9, System Workbench for STM32 (free, GNU)
Code
uint8_t spi_tx_buff[3]={0xFF,0x00,0xA5};
HAL_SPI_Transmit_DMA(&hspi3,(uint8_t *)spi_tx_buff,sizeof(spi_tx_buff));
// &hspi3 = 割り当てたリソース名(ハンドラ)CubeMXが名付けているみたいです。