忍者ブログ

Fグループ電子工作講座

秋月電子SH7125ボードで始めるマイコン開発

RL78へ書込む(シリアル編)

当ブログで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にシリアル書込みできました。
PR

コメント

1. RLシリーズうれしい

いつもお世話になります。
自分も今RL78シリーズを始めましたが
AD変換等難しく困っていたとこでした。

SHシリーズでもかなり勉強させてもらったので
今後が楽しみです。

これからもも拝見させていただきます。

2. コード生成すれば多分簡単です

いつもご利用いただきありがとうございます。
今まではハードウェアマニュアルを見ながらポチポチ入力していたのですが、
RL78についてはコード生成機能を積極的に使ってみたいと思います。
どうやらコード生成機能を使えば当ブログで説明していたような細かい設定は
開発環境側が自動的に生成し、後は使うだけといった状態になるようです。
使う分には便利になってうれしい反面、細かい内部処理できる人が更に減りそう
で少々不安です。

4. コード生成は便利ですね。

いつもお世話になります。
たしかにコード生成は便利ですね。
AD変換も無事に動作できました。

SHの時にあんなに苦労したADCができたので
うれしいです。
しかしファームウエアの理解は飛ばしてしまいますね。

次はIICを使えるように勉強しています。

プロフィール

HN:
ぼんどF博士
性別:
男性

最新コメント