今回は、回路の具体例とプロジェクトの具体例です.
プリント基板
まずプリント基板の改造から.回路図はこちらにあります.
↓基板の外部回路はDACと2^12分周回路です.
↓DACは、こういうR2Rラダー型DACにしました.実験波形ぐらいなら出ます.R=1kΩ、2R=2kΩで作りました.ポートは、PB7~PB0です.
↓2^12分周回路は74HC163を使ったこういう回路.74HC163は48MHzをclockとするには動作速度がキツイので30MHzで使わざるを得ませんでした.なので後日74AC163で作り直すつもりです.以後ではGPIF clock=IFCLK=30MHzで動かしています.回路図の30MHzはFX2LPプリント基板のIFCLKを接続します.RDY0はFX2LPプリント基板にそういう端子があります.電源はFX2LPの3.3Vです.
↓出来上がり状態はこんなです.FX2LP基板が手作り基板の下側に隠れてます.下の方の抵抗はDACのラダー抵抗です.
プロジェクト
プロジェクトフォルダをここに置きます.
解凍したら、この場所に置いて、master.Uv2をクリックするとKeil IDEが起動します.
C:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.1\Firmware
gpif.cは、GPIF Designerが生成したファイルなのでBLACK BOXとして扱うので放置します.
descr.r51は、アセンブラソースです.USBのファイルディスクリプタが記述されています.
master.cは、USBの通信関係ルーチンです.今は説明を割愛します.
重要なのはfw.cですが、これもUSB通信関係のいろんなコードが書かれているので、そういう部分はよく判らないので飛ばして、FIFO関連の部分だけを抜き出して、以下で解説します.
FIFOの設定部分がこれです.
↓ますはCPU Clock周波数の設定で、48MHzにしてあります.SYNCDELAYというのは、レジスタを変更した後に挿入するべき空白期間です.おまじないとしておきます.
// Initialize user device
CPUCS = 0x10; // CPU clock 48MHz
SYNCDELAY; // CLKOE=0, don't drive CLKOUT
↓GpifInit()が、CPIF Designerが吐き出したgpif.cに書かれたサブルーチン名です.常にこの名前です.この中では、IFCLK=30MHzであることとか、RDY0やCTL0の挙動について記述されています.
GpifInit(); // GPIF initialization routine made by GPIF Designer
SYNCDELAY;
↓以下はFIFOの設定です.REVCTLはそういう名前のレジスタで、fx2regs.hに記述されています.ここでやってる設定は良く理解できていません.
REVCTL = 0x03; // REVCTL.0 and REVCTL.1 set to 1
SYNCDELAY;
↓これもレジスタ設定.EP2について設定しています.出力である.バッファが512BYTEを2バンクである.EP4,EP6,EP8はシカトしてます.
EP2CFG = 0xA2; // EP2 is DIR=OUT, TYPE=BULK, SIZE=512, BUF=2x
SYNCDELAY;
↓この特殊なFIFORESETはどうしてこうするのかよく理解できてません.
FIFORESET = 0x80; // Reset the FIFO
SYNCDELAY;
FIFORESET = 0x82;
SYNCDELAY;
FIFORESET = 0x00;
SYNCDELAY;
↓2バンクあるEP2 FIFOの内容を捨てる.
OUTPKTEND = 0x82; // skip EP2 FIFO data (BUF0)
SYNCDELAY;
OUTPKTEND = 0x82; // skip EP3 FIFO data (BUF1)
SYNCDELAY;
↓FIFOの形態を、自走する(AUTOMODE)、8bit幅、などと設定.
EP2FIFOCFG = 0x10; // EP2 is AUTOOUT=1, AUTOIN=0, ZEROLEN=0, WORDWIDE=8bit
SYNCDELAY;
↓EP2をGPIFと接合しているのだと思う.
EP2GPIFFLGSEL = 1; // GPIF FIFOFlag is empty
SYNCDELAY;
↓EP2スタート
EP2GPIFTRIG = 0xFF; // start ep2
SYNCDELAY;
FIFOに関する肝の部分はこれだけです.あとはFIFOとGPIFに自走(AUTOMODE)させているのでCPU 8051は傍観者です.
USB通信はいまのところよく判らないので割愛します.
ビルドして、FX2LPにdownloadします.
アプリソフト
このfirmwareをdownloadしたFX2LP基板を動かすには、USBへデータを流し込むアプリソフトが必要です.
そのアプリソフトが、
C:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.1\Windows Applications\Application Source files\cpp\bulkloop\x64\Release\bulkloop.exe (64bit windowsの場合)
C:\Cypress\USB\CY3684_EZ-USB_FX2LP_DVK\1.1\Windows Applications\Application Source files\cpp\bulkloop\x86\Release\bulkloop.exe (32bit windowsの場合)
です.
わたしは64bitでしか動かしていませんので、32bit版が動くのかどうかは知りません.
起動するとこんな画面が出ます.この画面の設定の通りにしてStartボタンを押すと、incrementalデータが間欠的にUSBへ送出されます.
以上の環境で動かすと、DACにこのようなノコギリ波が出てくる、というわけなのでした~
その10へ その12へ
かしこ
INDEXページへ
https://hirasakausb.blogspot.com/2019/03/ez-usb-fx2lp-index.html
0 件のコメント:
コメントを投稿