2019年05月31日

DACへのデータ転送ルーチンをリファインする

今日はDACの転送スピードの限界を試す実験を行っている。

まず、データ送信ルーティン内でNOPを使ってクロックの幅を調整していた部分を全て撤廃した場合には、データが全く受け付けられないことが判明した。

次の実験では、NOP処理のうちクロックの幅を設定している部分だけを復活させてみたが(ビット・データ送信終了後にワンセンテンスの暇を稼いでいたNOPの方を取除いた)こちらはDACの稼動を確認できた。

WS001842.JPG

MCUのNOP1発が消費する時間は大凡で30から40ns程度と言われているが、概算で30ns×16step=480ns ×3(DAC)=1.5us以上の時間を稼げるわけで、これはそのまま処理時間のマージンに加算される。

処理に時間を割かれるプロセスで一番明瞭なのがDACにデータを転送するルーティンで、DMAを使ってバックグラウンドで送信するのが最もスマートな方法だろう。 

ただし、この手法には問題があって、バックグラウンドで信号を出力できる端子が限られてしまうのと、そもそもメモリーから直接転送を行うためのノウハウが欠けているために、現在は採用を見合わせている状態だ。
posted by Yasuski at 12:59| LaVoixski