前回、CH552使用の互換USB Blasterが動かない、 プログラムが書き込めるが動かない、 ブートローダが書き換えられているのではないか と騒いていたが原因がわかった。 プログラムが書き込め、動作し、Quartus Prime Liteで MAX2に書き込むこともできた。 原因はCH552および互換USB Blasterについての不理解であった。
CH552互換USB Blaster動作!電子工作
まず、注文していたCH552Gチップが届いたので 互換USB Blasterのチップと交換してみた。 プログラムは書き込めるが、動作しない。 交換前と全く同じ動作である。
次に、CH552GとUSBコネクタのみの回路で 動作するか実験を行うため必要な部品、 SOP16変換基板, ミニBメスUSBコネクタDIP化キットと CH552P DIP化キットをついでに購入。 ブレッドボード上で実験したところ CH552P + USBコネクタで動作、 CH552G + USBコネクタでも動作した。
そこで動作するCH552Gと互換USB BlasterのCH552Gの 各端子の電圧を比較し、 互換USB BlasterのCH552Gの電源が3.3Vであることに 気が付いた。動作する方のCH552Gは5V。 Arduinoの設定で調べると 電源が3.3Vの場合クロックは16MHzに しなければいけないらしい。 クロックを24MHzにしていたため 動作しなかったらしい。 Arduinoで16MHzに設定を変更すると 互換USB Blaster上でLED点滅プログラムが動作した。
CH552GとUSBコネクタでプログラム書込み実験 | MAX2と接続、書き込みに成功した | 給電用5V も取り出した |
CH55x-USB-Blasterのプログラムは クロックが24MHzで5V電源用になっている。 これを16MHzに変更、端子配列も 互換USB Blaster用に変更し書き込むと Quarus Prime Liteに認識され、MAX 2に書き込むことができた。 LEDの論理が逆で常時点灯になっていたためプログラムを修正した。
変更の差分を以下に示す
今回理解していなかったCH55xの知識は
- CH55xは電源5Vでも3.3Vでも動く。 3.3VでもUSBは動作する
- 端子のHighレベルの電圧は電源電圧となる。 但し、USBの端子は常時3.3Vだと思われる
- 電源5Vの時、クロックは最大24MHzだが、3.3V時は最大16MHz
- CH552互換USB BlasterはHighレベルを3.3Vにするため電源3.3Vで動作している
安く買える互換USB Blasterが使用できるのはありがたい。