スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

FM4のDSTCでLチカ

FM4から新機能として DSTC(Descriptor System data Transfer Controller) が追加されました。これは簡単に言うと「チョッと複雑な操作のできるDMA」です。

"チョッと"という言い回しが微妙なところで、応用次第ではかなり使える機能です。"ディスクリプタ" というのを使うので複雑そうに見えますが、慎重に設計してやれば使えない事はありません。でも、現時点(2014/07/27時点)では Spansion のHPにサンプルが無いのでなかなか二の足を踏んでしまいそうになります。そこで、無い物は作ってやれとばかりに作成してみました。極力簡単な構成でLチカをでっち上げました。


32ビット・マイクロコントローラ FM4ファミリ ペリフェラルマニュアル」を読めば詳細が書かれているのですが、最初はなかなかピンときませんでした。そこで、的を絞って図を書いて頭を整理してみました。

Lチカに必要なのは、LED-ONとOFFの2パターンです。そしてLEDの点灯制御はPDORレジスタで行います。つまり、LED-ON用のパターンとLED-OFF用のパターンを作成しておき、あるタイミングでどちらかをPDORレジスタに書き込んでやれば良いのです。

今回は "あるタイミング" に ベース・タイマ を使用しました。1秒でアンダーフローを発生させ、それを機に割込み要因を生成させます。パターンの転送イメージはこんな感じです。

dstc_transfer_pattern_1.png

trigger 1 を検出すると RAM上に用意しておいたパターンの先頭の物(32bit)をPDORレジスタに転送します。そして trigger 2 が来ると次のパターンをPDORレジスタに転送します。以後その繰り返しになります。

この図を描けると DES0~5(DES6は省略) の中身を設定することが出来ます。注意点としては、DES0.PCHK は自分で計算しないといけない事と、DSTCレジスタは基本的に "通常状態" になっていないと設定が出来ないという事です。chain を使うとなると少々複雑になりますが、1つ1つ図を描いて設定していけば何とかなります。

作成したプログラムは 【物置】 に置きました。
LED-Red のみの制御ですが、Chainを使って Blue, Green を同時制御すると面白いかもです。
スポンサーサイト

コメントの投稿

非公開コメント

黒ねこ時計 くろック D02
プロフィール

jujurou

Author:jujurou
運営HP:チャコの部屋
Twitter:jujurou

カレンダー
05 | 2017/06 | 07
- - - - 1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 -
最新記事
最新コメント
カテゴリ
ユーザタグ

ぺるけ RaspberryPi Linux トランジスタ式ミニワッター TRminiWatterPart4 MPD OpenOCD イーサネットコンバータ FON2405E DAC buildroot FM3ペリフェラル BeagleBoneBlack FM3評価ボード library OpenGL mingw ODROID-U2 TL-WR700N Edison bitbake KiCad 計測 VMware シングル FM4 ミニワッター 6N6P プリアンプ 

月別アーカイブ
ランキング

FC2 Blog Ranking

カウンター
検索フォーム
リンク
RSSリンクの表示
QRコード
QRコード
ライセンス
クリエイティブ・コモンズ・ライセンス
Twitter
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。