2019年7月11日木曜日

PIC24F USB OTG ホスト機能 BDTについて、

PIC24FのUSB OTG ホスト機能について調べています。20190711+5.0h
USB OTG機能の BDT(バッファディスクリプタテーブル)の使い方が難しく難航しています。

そこで備忘録としてBDTについてメモをしておきます。

BDTは、USB機能のSIE(シリアルインターフェースエンジン)とCPU(PIC)とのデータ受け渡しとなるメモリバッファ(EPn)のアドレス情報などが格納されたテーブルとなります。USB機能はBDTに設定された情報をもとに、PICのメモリにDMAで読み書きします。

  • BDTの配置は512バイト境界に合わせる必要がある。
  • U1BDTP1 レジスタにBDTのアドレスの上位7bitを格納する。
  • ホスト機能の場合、EP0の領域のみを使用する。 ※USBの通信がEP1やEP2で通信が行われていても ホスト機能のはBDTのEP0領域のみ使用。
  • EPnにはRX(受信)のエリアとTX(送信)のエリアがそれぞれある。
  • RX,TXのエリアはそれぞれ レジスタ2Byte+アドレス2Byte構成となり、EP0だけで8Byte必要となる。
    • BDT
      • EP0
        • RX
          • RXレジスタ--------------16 bits
          • RXバッファアドレス-----16 bits
        •  TX
          • TXレジスタ--------------16 bits
          • TXバッファアドレス-----16 bits



  • data0, data1 を別々のバッファ(ピンポンバッファ)として使う場合は、上記をそれぞれに用意する為、16Byte必要となる。 
    • data0 EVEN(偶数) BD
    • data1 ODD(奇数) BD



2019年7月2日火曜日

マイコンでUSBメモリを取り扱う為に、、、

以前から課題だった、PICマイコンでUSBメモリを取り扱いたい思いが強くなって、以前インターフェース2014年12月号を引っ張り出して、UsbStudyの記事を再読しています。
週末に秋月に部品発注して記事にのっていた実験用のボードを組み立てました。20190628+1.5h

ソースを読み解きはじめましたが、まずは実験機のconfig設定を資料に起こしています。
20190630+5.0h



PICにUSBメモリをMSC(Mass Storage Class)として実装する方法は、以下3つの方法があるようです。 最終的にはPIC32MM(MXではない)に実装できればともくろんでいます。自分の備忘録として以下に関連する資料へのリンクを整理しておきます。



USB通信/USB Mass Storage Class についての参考ドキュメントへのリンクです。

その他USB関連の参考リンク

SCSIコマンドに関する参考リンク



インターフェースのUsbStudyの記事とsampleソースコードを読んでいますが、PIC24FJ64GB002の USBレジスタの設定とデータの受け渡し部分で躓いています。 各エンドポイント用のバッファを、RAMメモリ上に確保して、BDTテーブルにバッファの先頭アドレスを格納してUSB機能ペリフェラルのDMAで、そのバッファの内容を通信する仕組みとなっているらしいのですが。。。20190707+8.0h


2019年7月1日月曜日

トランジスタ技術の2019年7月号の特集記事「月着陸船アポロに学ぶ 確率統計コンピュータ」が、そそる内容だったので、この記事で作成する「倒立振り子ロボット」に挑戦してみたいと考えています。 ちなみにロボット本体の予算は2万円ほどになるようです。 全体の作業工数見積もりは、30hで半年ぐらいの期間かな。 しかしながら、この手のプロジェクトは過去に何度も途中で放棄してしまっているのでどうなるか。。。



トランジスタ技術 2019年 7月号「月着陸船アポロに学ぶ 確率統計コンピュータ」

特集目次
チューニングなしで一発立ち!数式で倒立ロボットの姿勢制御に挑戦
月着陸船アポロに学ぶ確率統計コンピュータ

イントロダクション 自動運転の大先輩「アポロ11号」に学ぶ

プロローグ [DVD動画ダイジェスト]初めての統計的「推定」信号処理

ホントの姿勢を推定して「倒れないぞ…」と頑張る
 第1章 学習キット「カルマン倒立振子」の製作

特集を読み解くための基礎
 第2章 カルマン・フィルタのプログラミングI 3つの数学

2輪車のメカをモデル化する
 第3章 カルマン・フィルタのプログラミングII 力学の基礎

2輪車の操縦士を数式で表す
 第4章 カルマン・フィルタのプログラミングIII 現代制御理論の基礎

センサ測定値の誤差は正規分布に従う
 第5章 カルマン・フィルタのプログラミングIV 確率・統計の基礎

2輪車のホントの姿勢を高精度推定
 第6章 カルマン・フィルタのプログラミングV マイコンに実装する5つの計算式


※数式が沢山でてきたところで進まなくなりました。。。20190701

UTC7642_AMラジオ Ver.2.0 (2Tr+1IC) スーパーヘテロダイン

 UTC7642を使用したヘテロダイン方式のAMラジオをブレッドボードで試しています。 アンテナとバリコンは、 電子ウサギさんの記事 を参考にスーパー用にしています。 Q2(2SC1815)は他励式の局部発信(OSC)で放送周波数+455kHzの信号を作成し、Q1(2SC1815...