2012年08月18日

パラレルポート(PMP)の調査

PIC32MX には、実に多くのデバイスがあるのだが、まだ把握できていない。今回、PMP (Parallel Master Port)について、ちょっと調べて見ることにした。

DIP で使えるものなのか? これをまずは、確認。

    ~MCLR (1) AVdd
    PGED3 RA0 G1 PMD7 AVss
    PGEC3 RA1 G2 PMD6 PMCS1 G1 RB15/SCK2
    PGED1 RB0 G4 PMD0 G4 RB14/VBUSON/SCK1
    PGEC1 RB1 G2 PMD1 PMRD G3 RB13
    SDA2/RB2 G3 PMD2 Vusb3v3
    SCL2/RB3 G1 PMWR G2 RB11/D- PGEC2
    Vss G4 RB10/D+ PGED2
    CLKI Vcap
    CLKO (PMA0) Vss
    SOSCI RB4 G1 PMD3 G4 RB9/SDA1 TDO
    SOSCO RA4 G3 PMA1 PMD4 G2 PB8/SCL1 TCK
    Vdd PMD5 G1 PB7 TDI
    TMS/USBID RB5 G2 Vbus

    USB を使う前提だと、RB4(G1),RB5(G2),RB14(G4) 以外のピンに PMP機能 のピンが割当たっている。自由にできるピンが 3 つ。結構応用が限られるような気がするが ...

バッファ付き スレーブ モード

    気になったのがこれ。RD で、受信バッファから読み出し。WR で 送信バッファに格納 することができる。受信バッファ/送信バッファ は、それぞれ 4 バイトあって、CPU からは 32bit で一度にアクセスすることができる。

    しかも DMA を使うことが可能。DMA の詳細はまだ良くはしらないが、ブロック転送ができるのはありがたそうだ。

    これは一体なにに使えるのか? 真っ先に思いつくのがロジアナ。なんか毎度毎度という気がするが、ロギングの基本形だし。あと、220 円の IC で作れるのならインパクトが違う。

    性能は?

      RD/WR は使う側から見たら 非同期だが、どうも内部では PBCLK (最大 40 MHz) で同期しているようだ。あと、DMA で取り込むには、ディレイが生じる。4 バイト分一度に取り込むなら、このディレイが取り込む最大周波数を決めることになる。まだ、ディレイがいくつかは分かっていないのだが、8 clk だとすると 5 MHz 。十分高速だとは言いがたいが、それでも役に立ちそうなレンジではある。

      DMA は割り込みと併用する必要はない。うまくコードを作らないといけないが、データを処理しながらのポーリングという手法もある。

    バッファの量は?

      220 円の PIC32MX220F032B だと RAM が 8KB 。半分の 4KB ぐらいは ログするのに使えるだろう。サンプリングが遅ければ、なんらかの圧縮ができるかも知れない。さらに余裕があれば、途切れなく PC に転送できるかも知れない。このあたりは、腕の見せ所 -- これに取り組んでみるのも楽しいかも。

      また、上位の PIC32MX250F128B に換装すれば、4KB が 28KB まで増えることになる。ここまで増えると、少しは実用度が上がるかもしれない。(PIC32MX250F128B は、マイクロファン で取り扱っている。)

    他に同じようなことが出来るものは?

      FT245R とかが真っ先に思いつく。これは、似た様なことが出来る。ただ、バッファ溢れ が心配。Hi-Speed の FT232H や FT2232H だと、EEPROM の設定で 245 Type にできる。これだと、転送性能が上がる上に、バッファも増える。(232H は 1KB / 2232H は 4KB ?)。ただ、やっぱり バッファ溢れ が心配。

      よく使っている Sync-Bitbang でも RD/WR はあったりする。(信号名は RDSTB#/WRSTB#) 。一方向の Async-Bitbang でも同様。ただしこれは出力。先に FIFO が必要になるから、お手軽には出来ない。

    追記: FX2LP (CY7C68013A) を忘れていた



      たとえば、こんなの。dealexreame で $19.30



      こっちの USBee AX PRO MINI LOGIC Analizer は、$11.70 。中身は 写真と同じなら、やはり FX2LP 。24 MHz となるとこれしかないはず。

      ロジアナ作ってもこいつにはかなわない。

マスター モード

    アドレスとデータを 多重化したり、いろいろなモードがある。これを使って SRAM をつけたりできるようだ。ただし、ラッチが必要。また、メモリ空間にマップされるわけではないようだ。逆に アドレスをオートインクリメントしたりできるから、FIFO に使えそう。DMA でももちろん使える。

    SRAM のことを忘れると、単純にパラレルポートとして使える。 RD/WR でハンドシェイクできたりするから、グラフィック LCD (ただし 8bit) の制御に便利そう。

    フレームバッファ

      メモリが少ないので厳しいとは思うが、DMA を使っての フレームバッファは作れると思う。RAM は、1 line か 2 line 分だけ用意して、CPU で間に合うようにデータを生成すれば、なにか見れるものは作れそう。

      一応 3 pin 分は余分にあるから、同期信号は、こっち。PWM 相当の Output Capture で生成してやる。

      ただ、フレームバッファを作る場合でも、スレーブ モードにした方が良いのではないかと思える。同期信号を CS や RD にも入れてやるのだ。こうすることで、タイミングを自由に制御できるし、DMA 的にも扱いやすそうな気がする。
posted by すz at 16:38| Comment(0) | TrackBack(0) | PIC32MX
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス: [必須入力]

ホームページアドレス:

コメント: [必須入力]

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/57655601
※ブログオーナーが承認したトラックバックのみ表示されます。

この記事へのトラックバック