STM32F4-DiscoveryでVGA出力

AVRでビデオ信号を出力したり、PIC24でVGA出力する例はあるので今更、珍しくは無いのだがstm32f4のDMAの勉強を兼ねてSTM32F4-DiscoveryでVGA信号を出力させてみた。


回路は、ポートが抵抗を介してVGAコネクタに接続されているだけ。VGAコネクタにはaitendoの在庫一掃セールで購入したピッチ変換基板を使用。

pixel clock 13MHz(上)と下. 水平同期(下)

仕様は、VGA信号 横320×縦240dot, 1pixelは8bit。Video RAMは、320×240 = 76.8Kbyte必要なので、これを 112Kbyteあるメインメモリーに配置。プログラムは DMAで使用できないCCM(core coupled memory)領域64kbyteを使用した。

VGA出力の仕組みは、TIM2で水平同期信号を生成、TIM8で13MHzのpixelクロックを生成し、DMA2に要求を発生させ、メモリ→GPIOEの転送を実行。水平同期で割り込みを発生させ、垂直同期信号の生成とDMAの設定を行なっている。

割り込み処理時間(上), 水平同期(下)

この割り込みにかかる時間は水平同期約30μS毎に1μS程度。あとは全部DMAで処理され、CPUの介在なし。CPUのメモリーアクセスへの干渉も少なそうなので良いんじゃないかと思う。やっぱり、stm32f4xxはRAMが大きいのが良い。

stm32のDMAやtimerは、なかなか強力。いろいろ使えそうだ。

Leave a Reply

メールアドレスが公開されることはありません。