なんとかなるさね

マイコンをネタにブログを始めてみました


RL78マイコン基板(RL78/G10)|秋月のRL78/G10 10pin DIP基板に自作回路でフラッシュ書き込み (1) 

追記 : 一年半以上経ってからですが、それまでの自作回路をType Aとし、別の自作回路をType Bとして追加
しました。Type AはRenesas Flash Programmerで使用出来ますが、RTS信号を必要としますので、Arduino
用に市販されているRTS信号が出力されていないFT232RL搭載USBシリアル変換モジュールでは使えません。
逆に、それらではDTR信号が出力されていますので、Renesas Flash Programmerで使用することは諦めて、
GitHubで公開さているオープンソースソフトウェアのrl78flash(rl78g10flash)を使用することにしてType Bを
追加しました。また、Type Bでは配線量を減らすことを目的としてダイオード1本と抵抗1本にしてみました。

Type A


すみません。マイコン自体の仕様として外部リセット端子を通常の入出力端子/通常の機能端子として使用する
ように設定することが出来るようになっていますが、そのように設定すると以後この自作回路ではフラッシュ
書き込み(ブランクチェックやチェックサムも)出来なくなります。復旧方法がルネサスのユーザコミュニティ
サイト(Rulz)にあります(http://japan.renesasrulz.com/cafe_rene/f/82/p/3504/17366.aspx#17366)ので、
お使いの開発ツールで設定をされたお心当たりのある方は、お手数ですが、参照して下さるようお願いします。


秋月電子さんで販売されているRL78/G10 10pin DIP基板に自作回路でフラッシュ書き込み出来るか試してみて
います。自作回路といっても、FT232RLと74HC125と抵抗2本の簡単なものです。これをブレッドボード上に
組んで、まずはRenesas Flash Programmer V2.05でブランクチェックしてみました。FT232RLのWindows
ドライバは別のマイコン基板を使おうとした時にWindows Updateでインストールされたものだったのですが、
RL78/G10ではWindowsドライバの設定を若干変更しないとブランクチェックが成功しませんでした。(処理中
ダイアログがいつまで経っても閉じないので、タスクマネージャで強制終了させないといけなくなる。) 追記 :
その後、再度試してみると、設定を既定値に戻してもブランクチェックが成功しました。何だったのだろうか?




ブレッドボード上に組んだ回路は以下の通りです。





プログラム作成は、これから、、、 (ちなみに、ブレッドボードの左半分の空きスペースはトラ技ARMライタ
基板のUSB-UART変換ファームウェアで書き込みを試す為のトラ技ARMライタ基板を載せるスペースです。)

追記 : 補足

電解コンデンサの容量は、リードを切って短くした10μFのものがたまたま目に付いたので使用したのですが、
普通はもうちょっと容量の大きいものを使うものだったと後になって気付きました。

追記 : 雑感

FT232RLのWindowsドライバの設定の'USB未接続'と'クローズ時のRTS設定'と'起動時のモデムコントロール
無効設定'というのは何がどうなるものなのかな? (パワーオフキャンセルにはチェックマークを付けました。)

追記 : メモ

基板にピンヘッダを半田付けする時に、トランジスタ技術誌2014年3月号のトラ技ARMライタ基板の半田付け
記事で紹介されていたアイデアを拝借させて頂きました。

* ピンを綺麗に垂直に立てて半田付けする為にユニバーサル基板の切れ端を利用してみた
 
ピンヘッダをユニバーサル基板の切れ端に立てます


立てたピンの上から基板を載せます


その状態で四隅のピンを半田付けします


残りのピンを半田付けします


このようにしたことでピンを綺麗に垂直に立てて半田付けすることが出来ました


Type B


すみません。こちらも外部リセット端子を通常の入出力端子/通常の機能端子として使用するように設定すると、
以後フラッシュ書き込み(ブランクチェックやチェックサムも)出来なくなります。ルネサスのユーザコミュニティ
サイト(Rulz)にある復旧方法(http://japan.renesasrulz.com/cafe_rene/f/82/p/3504/17366.aspx#17366)と
同じ要領で復旧出来ます。異なる点は、DTR信号を使用するのでrl78g10flashの引数の-m 2が不要になることと、
こちらの回路では元々そのDTR信号がRESET端子に直結されていますので回路を繋ぎ換える必要が無いことです。


FT232RL搭載USBシリアル変換モジュールですが、Arduino用に市販されているものではRTS信号が出力されて
おらず、代わりにDTR信号が出力されています。幸い、GitHubで公開されているオープンソースソフトウェアの
rl78flash(rl78g10flash)というプログラムを使用すると、それらのFT232RL搭載USBシリアル変換モジュールを
使用した自作回路を組むことが出来ます。(その代わり、Renesas Flash Programmerからは使用出来ません。)

Tool to program RL78 MCUs via serial bootloader - GitHub

master
https://github.com/msalau/rl78flash/

releases
https://github.com/msalau/rl78flash/releases/

v0.5.2
https://github.com/msalau/rl78flash/tree/v0.5.2/

そこでブレッドボード上で以下のように回路を組んでみました。さらに今回、配線量を減らすことを目的として
ダイオード1本と抵抗1本にしてみました。(なお、ダイオードは手持ちの部品の都合で型番不明ですが、たぶん
ありふれた汎用小信号スイッチングダイオード(外観をウェブで調べた印象では1S953)です。抵抗は1KΩです。)

黄 - TxD
青 - RxD
白 - DTR



これだけしか配線がありませんので間違えることは無いと思いましたが、いつものようにちょっと好機心から、
テスターやオシロスコープを使わずにLEDを使って回路/機能をチェックする4つのステップを試してみました。

(1) 電源チェック

抵抗は10KΩです。LEDは部品箱の手持ちの適当なものです。(LEDの足の緑色は目印用に自分で巻いた紙です。)




(2) TxD信号(とダイオードと抵抗)およびDTR信号のチェックその1

コマンドプロンプトで以下のようにrl78g10flashを実行し、実行中にHighであることを確認する。(COM番号は
私のPCでのものです。この状態のrl78g10flashを終了させる時には、コマンドプロンプトで^Cを入力します。)

rl78g10flash -rvt 115000 COM14






(3) TxD信号(とダイオードと抵抗)およびDTR信号のチェックその2

コマンドプロンプトで以下のようにrl78g10flashを実行し、実行中にLowであることを確認する。(COM番号は
私のPCでのものです。この状態のrl78g10flashを終了させる時も、コマンドプロンプトで^Cを入力すれば良い。
また、rl78g10flashを終了させた時に表示されるメッセージは当然のものなので気にする必要はありません。)

rl78g10flash -cdv COM14 blank.srec 2K






(4) TxD信号とRxD信号のチェック

コマンドプロンプトで以下のようにrl78g10flashを実行し、コマンドプロンプト上で echo back ok とキー入力
してエコーバック表示されることを確認する。(エコーバック表示される時にタイムスタンプが付きますが気に
する必要はありません。COM番号は私のPCでのものです。この状態のrl78g10flashを終了させる時も、コマンド
プロンプトで^Cを入力すれば良い。)

rl78g10flash -rvt 115000 COM14





ここまでチェックが終了したところで、USBケーブルを抜き、RL78/G10 10pin DIP基板を差し込み、再度USB
ケーブルを挿し、コマンドプロンプトで以下のようにrl78g10flashを実行してブランクチェックを試したところ、
無事に正常動作しました。(LEDは先程から外していましたが、LED用の抵抗も外しました。)

rl78g10flash -cv COM14 blank.srec 2K




以下に次のエントリで試したものや外部リセット端子の件の復旧用のものも含めて幾つかsrecファイルを固めて
おきました。(ダウンロード後にファイル名をhwtp_for_rl78g10flash_v0_5_2.zipに変えて下さい。)

hwtp_for_rl78g10flash_v0_5_2.zip
含まれているファイル:
blank.srec
recover.srec
G10_PORT_MTX&PWM3.srec
G10_PORT_MTX&PWM3&PUTS.srec

なお、blank.srecは以下の1行のテキストファイルです。(行末に改行コード(CR+LFまたはLFのみ)が必要です。)

S0030000FC

また、recover.srecはルネサスのユーザコミュニティサイト(Rulz)のrecover.hexと同じですが、拡張子を今回
揃えました。内容は以下の1行のテキストファイルです。(行末に改行コード(CR+LFまたはLFのみ)が必要です。)

S2080000C0FFFFFFFF3B

追記 : 補足

74HC125の代わりにダイオードを使うと配線量は減るのですが、秋月電子さんではスイッチングダイオードの
1本売りはしておらず数十本での袋売りとなる為、出費としては逆に増えてしまうのがちょっと難点です、、、
(追記 : 暫くしてからのことですが、秋月電子さんで1本売りのスイッチングダイオードが商品カタログに追加
されていました。たぶん、これが使えるだろうと思います。http://akizukidenshi.com/catalog/g/gI-10516/)

追記 : メモ

以下のウェブページを参照させて頂きました。(私はカラーコードが読めません。LEDの極性もすぐに忘れます。)

カラー抵抗値の写真早読み表! - FreeLab
http://part.freelab.jp/s_regi_list.html

ダイオードは何者だ! - FreeLab
http://part.freelab.jp/p_diode.html

HEXファイルフォーマット - PastelMagic
http://www.pastelmagic.com/tips/hexform/hexform.html

追記 : メモ

後になって知ったのですが、無極性LEDというものがあるようです。

5mm無極性LED - 秋月電子
http://akizukidenshi.com/catalog/c/c5mmbpled/

追記 : メモ

ちなみに、rl78g10flashでは引数に-m 2を追加することでDTR信号の代わりにRTS信号を使うようになります。
(FT232RLとの互換性度は不明ですが)FT232R/RQというICを搭載した、そういう変換モジュールもありました。
また、DTR信号の場合も(FT232RLとの互換性度は不明ですが)FT231XSというICを搭載したものもありました。

USBシリアル変換モジュールの例

* DTR信号出力

FTDI USBシリアル変換アダプター(5V/3.3V切り替え機能付き) - スイッチサイエンス
https://www.switch-science.com/catalog/1032/

FTDI USBシリアル変換アダプター Rev.2 - スイッチサイエンス
https://www.switch-science.com/catalog/2782/

* RTS信号出力

FTDI USBシリアル変換ケーブル(5V) - 秋月電子
http://akizukidenshi.com/catalog/g/gM-05841/

FT-232RQ USBシリアル変換キット - 秋月電子
http://akizukidenshi.com/catalog/g/gK-09951/

* 両方を出力

FT232RL USBシリアル変換モジュールキット - 秋月電子
http://akizukidenshi.com/catalog/g/gK-06693/

FT232RL USB-シリアル変換モジュール - スイッチサイエンス
https://www.switch-science.com/catalog/2082/

関連記事

2015/01/04   blog-entry-543   category: RL78 /* 16bit,8bit CISC */

go page top