●DMAの転送速度
ただしサーキュラーモードは使えない為、
転送完了割込み→DMAを無効化→DMA転送カウンタの再セット→DMA有効化
と転送の度に設定する必要がある。
また、GPIOのレジスタにDMA転送する場合
本来、GPIOのポートレジスタは32bitアクセスのみが有効だが、
APBバスのレジスタに8bitや16bitで書き込むと自動的に32bitワードに変換してくれるので
DMAでポートの出力に転送するワードサイズは何でも良い。
ついでに速度テストの為、SRAM→GPIOポートへDMAでトグルデータを送ってみたら
トグル速度が実測7.14MHzだった。(しかもCPUによるメモリアクセスはしていない)
え・・・・DMA転送速度ってラウンドロビンでCPUの半分の帯域使えるから
最低でも36MHzじゃなかったっけ?
GPIOだってPPなら50MHzだったはず・・・・・
この遅さは動画データの出力に支障をきたすレベルじゃないか・・・
・・・・と思って色々調べてみたら、マイコン徹底入門
でレビュー用に見せて頂いている本(未発売)に載ってました。
曰く「DMA転送は1回につき8クロック掛かります。」との事。
そ・・・・・そーなのかー!!
リファレンスマニュアルには書いてなかったよー!
しかも実測値的には10クロック位掛かってそうだけれども・・・
CPUでの転送も考えねば。
●STM32の弱点
それはフラッシュメモリの読出しが72MHzで2ウェイトと遅い事。
ただし、62bit×2のプリフェッチバッファがフラッシュの命令を先読みする為、
分岐命令が無ければ、フラッシュの2ウェイトは影響が少ないので
注意してプログラムすれば大丈夫だと思います。
・・・という事を調べていたら
STがノーウェイトのフラッシュを搭載した新製品を発表したとのニュースが。
やるなぁST。
早く手に入れられるように量産して下さいー。