当ブログでRL78を扱うことになった要因の一つとして簡単な回路でシリアル書込みを
行えることが分かったためです。
※2020/02/25 回路に間違いがあったので修正関連記事
・
RL78の開発環境・
RL78へE1で書込み秋月の
FT231X USBシリアル変換モジュールに抵抗1本とショットキーダイオード1本
を追加し、FT_ProgにてRTS#の設定を変更すれば、ルネサス標準の書込みソフトRFPを使って
こんな感じで書込みができます。
外部回路をなるべく小さくしたかったので追加部品は面実装品を使い、ジュールの裏面に
半田付けしてあります。
基本的な話
RFPにて書込み可能なマイコンのほとんどがシリアル書込みに対応している様です。
「Renesas Flash Programmer V3 対応マイコン一覧」にてググれば一覧表が出てきます。
シリアルの部分に表記があれば何かしらの方法でシリアル書き込み可能です。
RL78は全てTypeBにて書込みできます。
必要な回路の概要は「PCのシリアルポートを使用した書き込み回路例」にてググれば出てきます。
問題はここからです。
トリステートバッファ
まず、トリステートバッファとは何か。
ざっくり言えばH、L、Z(ハイインピーダンス/断線)の3つの状態を再現できる回路の事。
トランジスタを組み合わせるか、専用ICを使えば作れますがそこまでしたくありません。
そこで、この部分の回路を簡単に作る方法を考えた方が居ました。
かふぇルネ:
シリアル・ポートを使ったRL78搭載FLASH書込みサンダー様の2012/10/16 22:17のレスです。
画像をそのまま転載させていただきます。
この回路そのままで書き込むことができています。
トリステートバッファの部分を簡単に説明すると、
・純粋なトリステートだとH、L、Zの出力を作らなければならない
・ルネサスの回路を見るとトリステートの信号入力がGNDのみになっている
・つまりルネサスの回路ではLとZだけ作ればよい
・TOOL0はプルアップされている
結局のところ作るのはI2Cの様な通常HでどちらかがLを出力すればLになる回路です。
そこでサンダー様の回路を見ると
シリアル側がLを出力すればTOOL0がLだろうがZだろうがLになります。
シリアル側がH、TOOL0がZの場合はH
シリアル側がH、TOOL0がLの場合はダイオードでせき止められるのでL
と目的を達成していることが分かります。
トリステートバッファの部分はこれで問題ありません。
ブレッドボードやユニバーサル基板で作るなら
・
ショットキーバリアダイオード 30V200mA BAT43辺りで良いと思います。
RTSの伝達
もう一つ残っているがRTS - _RESETの伝達です。
RESETの前についている_は信号が反転する事(アクティブロー)を意味しています。
他のリセット回路と同様に通常はプルアップ状態でL信号が来ればリセット扱いになります。
文字の上に ̄が付いていたり、文字の後ろに#が書いてあるとアクティブローです。
ルネサスの回路は
RTSをインバータで反転させて_RESETへ入力すると言う意味になります。
サンダー様の回路はインバータの代わりにnpnトランジスタまたはNchFETで信号を反転させています。
さて、
いつも使っているUSB-シリアル変換にはそもそもRTS出力がありません。
秋月でRTS信号出力のあるモジュールを探すと
幾つか候補があります。
で、使用を見るとどれも出力が
RTS#となっています。
もしかして
反転しているRTS#をそのまま_RESETへ入力すれば良いのか?
結果:ダメでした。
シリアル書込みの手順を見るとTOOL0がLの状態で、_RESETを
Lから
Hにしろとなっています。
この動作は
RX230の書込みモードと似ています。
各種USBシリアル変換モジュールのRTS#信号の動作を確認すると
・未接続時
H・通信開始~通信中
Lとなっていました。
RTSは受信準備ができたら出力する信号なので
RTS#は(通信開始=受信準備が出来た)の反転であり通信中はLになるのが正しい動作です。
結局のところ
RTS#を反転させて_RESETへ入力しなければいけません。
RTS#の反転信号を作る
サンダー様の回路の様にトランジスタを入れる事で実際に書き込み可能である事が確認
できました。なるべく少ない部品でこの回路を作成します。
そこでまず検討したのが
・USB-シリアル変換モジュール上にトランジスタ回路を作れないか
結果:トランジスタを都合良く載せられる場所がない
続いて
・
いつも使っているUSB-シリアル変換の
CB0からRTSを出力できないか
結果:RTS#を含むTXD,RXDの様な基本的な信号は出力端子を変更できない。
そこで
・
RTS#を反転させる機能は無いか
結果:
あったということで、FTDI製のFT231Xの様なICを搭載していればFT-PROGというソフトで
信号の反転ができます。
いつも使っているUSB-シリアル変換からRTS信号を取り出す強者も居られますが、
加工難度が非常に高いので、RTSの出力端子がある
・
FT231X USBシリアル変換モジュールを使います。
FTDIのサポートより
https://www.ftdichip.com/Support/Utilities.htm
FT-PROG
FT_PROG is available for download by clicking here.
からダウンロードしてインストール
プログラムを実行したらスキャン
FTDIのIDを積んでいれば何でも出てくる可能性があるのでどれを変更するかは要確認
Hardware Specific > Invert RS232 Signals > RTS
Invert RTS#にチェックを入れたら青い稲妻マークで書込み
これでRTS#が反転されました。
マイコンと接続する
以下の様に接続します。
※2020/02/25 電源を3.3Vから5.0Vへ変更、RTSへダイオード追加、注記追加図ではRTS#と_RESETを直結していますが、RTSがHの時にマイコンのリセットボタンを
押されるとRTS端子が壊れる可能性があるので、ダイオードを入れると良いようです。
ビーリバー製RL78ボードでも接続先は同じです。
5Vでのみ運用する場合はTOOL0のプルアップは5Vで構いません。
標準状態だと_RESETはCPU内でVSSにプルアップされている様なので、_RESETの外付け
プルアップは無しでもOK。
脱着できるように
・
2550コネクタ・
ハウジングを使いました。
14ピンコネクタが実装してある場合は差し間違え防止に
・
適合する14ピンコネクタを使うのも良いでしょう。
書込みソフト
さすがにCS+の書込み機能は使えないと思います。
CPUのハードウェアマニュアルを見るとRESET解除から100ms以内にモード設定コマンドを送信
するように書いてあります。
自分で全て環境を作る人は書込みソフトまで自作する例もある様ですが、ルネサス標準のRFPで
この辺の処理はすべて自動的に実行してくれるので素直にRFPを使います。
初期設定
とりあえずRFPを起動して書込み用のプロジェクトを作成
CPUの種類等を設定
プロジェクト情報
・マイクロコントローラ:RL78(G10シリーズのみRL78/G10)
・プロジェクト名:任意(後で区別できる名前にする)
・作成場所:任意
※プロジェクトはCPU毎に作成する必要があるのでCPUが分かる名前が良いでしょう。
通信
・ツール:COM port
・ツール詳細:該当するCOMポートを指定する
設定し終わったら
接続 「
操作が成功しました。」と出れば接続成功。
書込み
書込むファイルを指定してスタート
CS+でビルドしたファイルは
CS+のプロジェクトの場所¥DefaultBuild¥プロジェクト名.mot
にあります。
こんなダイアログが出て
「
操作が成功しました。」と出れば成功。
E1を使って書込む場合に比べてずいぶん遅いですが、RL78にシリアル書込みできました。
1. RLシリーズうれしい
自分も今RL78シリーズを始めましたが
AD変換等難しく困っていたとこでした。
SHシリーズでもかなり勉強させてもらったので
今後が楽しみです。
これからもも拝見させていただきます。