11月25日発売 書籍『Arduinoと3Dプリンタでロボットを作ろう』を出させて頂きました!

【電子工作 / PCB】CH340Eを使ったミニサイズのSerial UPDIプログラマの製作を考えています!

Arduinoから電子工作を始めたこともあってか、私の場合AVRマイコンを扱うのは何かと好きで使う機会も多いように感じます。

AVRマイコンと言えばArduinoで使われているAtmel(Microchip)のATmega328Pはみなさんご存知だと思います!
またATtinyシリーズも非常に有名で、チップの種類が豊富なので用途によって使い分けたり自作基板に使ったりと何かと重宝するマイコンチップです!

【電子工作】ミニAVRマイコンATtiny85で動かすミニゲーム機『Tiny Joypad』互換ボードを作ってみました!【JLCPCB】

そんなAVRマイコンですが、ATmega328PやATtiny85といった少し古いタイプのチップではICSPでの書き込み方式が採用されていました。
Arduinoではブートローダーを書き込む時などで使いますよね!

そして新しいタイプのATtinyなどではUPDIでの書き込み方式となっています。
tinyAVR 0-series / tinyAVR 1-series / tinyAVR 2-series / megaAVR 0-seriesといったチップです。

ATtinyシリーズのチップは何かとよく使うのですが、以前のICSPでの書き込みからAttiny202やATtiny1614といった新しいタイプのATtinyチップを使う場合、その書き込み方式がUPDIとなっています。
ICSPとは互換性がないため、UPDIでの書き込みに対応した書き込み装置(プログラマ)が必要となり新たに用意する必要があります。

とは言っても、Arduinoを書き込み装置として使ったり、またUSB-シリアル変換モジュールがあれば少しパーツを接続するだけでシリアルUPDIプログラマとして機能させることが出来ます。

ATtinyシリーズのチップはATtiny85やATtiny84といったICSPでの書き込みに対応したものもまだよく使うことから、UPDIとICSPの両方式で書き込みが行えるこのような書き込み基板を以前作りました。

スイッチの切り替えでUPDI or ICSPの書き込みを変更することが出来るので、使うチップによりそれぞれに対応した書き込み装置を用意する手間がかからず便利な書き込み装置です。

【電子工作】1台のデバイスでUART/ICSP/UPDIのプログラミング(書き込み)が出来る便利な基板の紹介!

そして今回は、CH340Eを使ったミニサイズのUPDIプログラマを製作してみようかと考えています!

CH340Eを使ったミニサイズのSerialUPDIプログラマの製作!

従来のICSPでの書き込みではMOSI/MISO/SCK/RESETとさらに電源ライン(VCC/GND)を入れると計6本と書き込みの際に多くの接続が必要でした。

UPDI(Unified Program and Debug Interface)での書き込みでは単線式となっているので信号線1本のみで書き込むことが出来るので接続が楽で何かと便利です!
MOSI/MISO・・・どっちだったかな?なんてことも無くなります!

tinyAVR 0/1/2シリーズやmegaAVR 0シリーズといったUPDI書き込みに対応したマイコンチップを扱う際はこの書き込み方式となっています。

従来のICSPでの書き込みとは互換性がないため、UPDIによる書き込みチップを扱う場合は当然UPDIに対応した書き込み装置(プログラマ)が必要となってきます。

UPDI書き込み装置は簡単に作ることが出来ます。
Arduinoがあればボードに[jtag2updi]スケッチを書き込めばUPDIプログラマとして機能させることが出来ます。
ICSPによる書き込みの際にArduinoに[Arduino as ISP]スケッチを書き込み、ICSP書き込み装置として使うのと同じ要領です。

またUPDIプログラマはUSB-シリアル変換モジュールに少しパーツを追加することにより、同じくUPDI書き込み装置として使うことも出来ます。

jtag2updiやUSB-シリアル変換モジュールを使ったUPDI書き込みに関しては、こちらの記事で詳しく書いているので合わせて見て頂ければと思います。

【Arduino】新しいATtiny(tinyAVR 0/1/2シリーズ)やmegaAVR 0シリーズなどで採用されたUPDIによる書き込み方法! Arduino IDEで環境を構築する!

CH340Eを使ったSerial UPDIプログラマ

Arduinoにjtag2updiを書き込んでUPDI書き込み装置として使ったり、既存のUSB-シリアル変換モジュールに少し手を加えることによりUPDIプログラマは簡単に作ることが出来ます。

今回ミニサイズのUPDIプログラマを自作基板として作ってみようと考えています。

私がよく使っているUPDI書き込みに対応したATtinyチップにはDIP形状のチップが無く全て表面実装(SMD)タイプのチップとなっています。(以前のICSP書き込みタイプのATtinyではDIP形状のものもあったのですが・・・)

ブレッドボードでテスト等する場合はこのようにDIP化基板(ピッチ変換基板)に実装して行っているのですが、その際の書き込み装置としてブレッドボードに挿して使えるミニサイズのものがあれば・・・!

これくらいのサイズ感のものがあれば便利そうですね!

UPDIプログラマは、例えばATmega328PやATtiny1614といったAVRマイコンを使い比較的簡単に自作することが出来ると思います。
PCBに搭載したこれらAVRチップにjtag2updiを書き込んであげれば、これで自作UPDIプログラマ基板として製作出来ますね!

今回は更に小型なものを想定してUSB-シリアル変換チップを使いSerialUPDIプログラマを作ってみようと考えています。

UPDIは送信側・受信側を交互にデータ送信することで1本の信号線(UPDI)のみで双方向の通信を行う半二重通信です。

Serial UPDIについての詳しい概要はこちらを参考にして下さい。

参考 SerialUPDIGitHub

USB-シリアル変換モジュールはマイコンを使った電子工作をやられている方なら1つは持っているかと思います。

これを使いTX(またはTXD)ラインとRX(RXD)ラインにダイオードを1本追加するだけで(気持ち保護抵抗も)UPDI書き込み装置として使うことが出来ます。
こんな感じですね!

USB-シリアル変換モジュールはこれまでいくつか自作しました。

【電子工作 / PCB】FTDI FT232RLを使ったUSB-シリアル変換モジュールを自作してみました
【電子工作】CH340Eを使ったUSBシリアル変換モジュールを自作してみました!

上記FT232RLを使ったモジュールは便利なので普段の作業でよく使っています。

そこでこのFT232RLを使ったUSB-シリアル変換モジュールのアップデート版?
としてUPDI書き込み機能を追加して新たに作り直そうかと考えていたのですが・・・

USB-シリアル変換チップはCH340を使うと書き込みが速い!?

FT232RLやCH340シリーズなどいくつかシリアル変換チップを使って書き込みテストをしてみたのですが、Serial UPDIでの書き込みはCH340シリーズのチップを使う方が圧倒的に書き込みスピードは早いようです!

FTDI系のチップはドライバ設定でスピードを上げることも出来そう?ですが・・・チップサイズが大きいので今回CH340シリーズのチップを使うことにしました。

CH340で小型なチップは、CH340E / CH340N / CH340Kあたりになります。

CH340Kに関しては以前検証したのですが、どうもMac環境では使えないので除外!

ESP32(ESP-WROOM-32)への書き込み用USB-シリアル変換チップにCH340Kを使ってみる。Mac環境ではUSBシリアルを認識してくれない![備忘録]

という事でCH340NかCH340Eのどちらを使ってもよかったのですが、想定している基板サイズに収めるために小さなCH340Eを使うことにしました。(CH340Nでも収めることは出来ますが!)

20mm×30mmの基板サイズとし、ハーフサイズのブレッドボードでATtiny等の書き込みに使っても簡単に収まるサイズ感です!

【追記】自作Serial UPDIプログラマ、完成しました!

CH340Eを使ったSerial UPDIプログラマですが、無事に製作完了しました。
動作確認も問題なくATtiny等の書き込みでブレッドボードに差し込んで使える、使い勝手の良いサイズ感のものになったと思います。

【電子工作 / PCB】CH340Eを使ったSerial UPDI(シリアルUPDI)書き込みボードの製作!

最後に!

ATtinyなどのAVRマイコンを使うことが多く、最近ではUPDI書き込みに対応したATtinyシリーズやATmega4809といったmegaAVRシリーズのチップも手元に増えて使うことも多くなってきたので、簡単にUPDI書き込みが行えるミニサイズのボードを製作してみようかと考えています。

以前の記憶ではSerial UPDIでの書き込みはすごく遅いイメージがありましたが・・・最近では改善されたのでしょうかね?
書き込み速度は非常に早くなった印象を受けます。

手持ちのUSB-シリアル変換モジュールにダイオードを接続して・・・という使い方でも全く問題ないのですが、毎回これをやるのは結構面倒となります。
専用の書込みボードとして1台作っておくと使い勝手は良くなるかなと思います!

Serial UPDIではTX/RXラインを接続しているのでUART通信は出来なくなってしまいます。
このあたりも含め基板が到着したら実際に使ってみてまた詳しくご紹介出来ればと思います。

コメントを残す