前回の記事から10日後に図1の基板が届きました。
早速、全ての電子部品をハンダ付けして、プログラムを書き込もうとしたのですが、接続すらできませんでした。 DCマウスを途中まで作ったときにRX631(64ピン)にプログラムを書き込んだ経験があったので、できて当然と思っていたのが間違いでした。やはり、ロボット製作では一つずつ動作確認しなければならないことを痛感しています。
結果的には、明確な原因はわからなかったのですが、発振子の配線部分を変更して、新しい基板を再発注することで接続できるようになりました。
この記事では、接続できるようになるまでの経緯を書きます。
- 環境
- RX631と接続する方法
- RX631とPCが接続できない原因について
- メインクロックに関する調査
- オシロスコープで発振子の動作確認
- 回路図と配線図の変更
- 新しい基板に部品を実装して接続
- おわりに
環境
- パソコン:Windows10 64 bit
- ターゲットデバイス:R5F5631PDDFL
RX631と接続する方法
RX631とPCとの接続はUSBシリアル変換モジュールを用いて図2のように行いました。 USBシリアル変換モジュールは秋月で購入したFT234Xです。
書き込み基板は図3のようになっています。
RX631はリセット解除時のMD端子とPC7端子の電圧によって表のように動作モードが決まります。
動作モード | |||
---|---|---|---|
シングルチップモード | プログラムが動作するモード | ||
ブートモード | プログラムを書き換えられるモード |
電源投入時に書き込み基板側でMD端子をLOWにすることで、動作モードをブートモードにします。
Renesas Flash Programmerを起動して、「ファイル」→「新しいプロジェクトを作成…」を選択して、以下を入力します(図4)。
- マイクロコントローラ:RX63x
- プロジェクト名:wakaba
- 作成場所:(適当な場所)
- ツール:COM port
これで「接続」を押すことで、RX631と接続ができます。
そのはずなのですが、図5のような画面になってしまい、接続が失敗します。 マジかよ…。
RX631とPCが接続できない原因について
RX631とPCが接続できない原因を頑張って調べました。 とりあえず、ブログ記事などを参考にしながら、原因となりうる箇所を一つずつ確認していきました。
RXDとTXDが逆になっていないか確認
→ 接続確認ができているDCマウスと同じようにしているため、問題ないはず。MD端子とPC7端子の電圧の確認
→ テスターで確認したところ、MD端子は0.0V、PC7端子は0.0Vとなっていたため、問題ないはず。マイコンの電源電圧の確認
→ テスターで確認したところ、VCCは約3.3V、VSSは0.0Vとなっていたため、問題ないはず。ハンダ不良がないか確認
→ 書き込みに関係ある配線についてテスターで導通しているか調べたため、問題ないはず。メインクロックが発振しているか確認
→ オシロスコープがないため、確認ができない。RX631自体が破損している
→ 確認ができない
RX631が破損している以外では、メインクロックが発振していないことくらいしか原因が思いつかなかったので、メインクロックのことについて調べました。
メインクロックに関する調査
メインクロックは書き込みに関係ないと思っていたのですが、関係あるんですね。 たしかに、ユーザーズマニュアルのp.1873にフラッシュ書き換えにはメインクロックの入力が必要であると書いていました。
メインクロックに関して調べるうちに問題ありそうな箇所がいくつか見つかったので、列挙していきます。
セラロックの向きが反対
回路図で見るとセラロックは左右対称なので、接続方向がないと勝手に思っていたのですが、セラロックの仕様書を見ると向きがあるようです。 ハンダ付けしたセラロックを確認すると、EXTAL(入力)にセラロックの入力が接続されていました。 これが原因かと思って、セラロックを外して、接続方向を正して新しいセラロックを付けなおしました。 しかし、相変わらず接続は失敗しました。内臓容量が参考値ではない
ユーザーズマニュアルのp.261を見ると、内臓容量の参考値が10pF~22pFなのですが、自分のセラロック(CSTNE10M0GH5L000)は33pFでした。 ただ、昔書き込めたマウスのセラロックも33pFだったので、問題ないかなとは思うのですが...。セラロックがハンダ付けのときに破損した
セラロックの仕様書を見ると、リフロー対応であり、ハンダごてを使用したハンダ付けは対応していないそうです。それなので、ハンダ付けのときに破損した可能性があります。 ただ、セラロックを付けなおしたとき、かなり丁寧にハンダ付けしたので、問題ないかなとは思うのですが...。発振回路の近くに信号線が通過していた
ユーザーズマニュアルのp.270を見ると、「発振回路の近くには信号線を通過させないでください」(図6)と書いていました。 以前のDCマウス製作時には意識していたのですが、今回は意識していませんでした。 配線図をみると、たしかに図7のように信号線が通過しています。
これを修正するには、基板を再発注して、部品も注文し直す必要があるので、少し踏ん切りがつきませんでした。
オシロスコープで発振子の動作確認
本当にメインクロックが原因か確かめるために、オシロスコープを購入して、発振回路の動作確認をしました。購入したオシロスコープは以下です。
かなり高かったですが、社会人になりましたし、オシロスコープは今後も使えると思いましたので購入しました。 表面実装用のプローブはあったほうがいいかなと思いましたが、付属のプローブでも測定はできました。 セラロックは以前使っていたCSTCE10M0G55に付けなおして、オシロスコープで電圧を測定しました。 結果を以下の表に示します。
基板 | ||
---|---|---|
書き込めたマウス基板 | 約10MHzで発振 | 約1.6 Vで定電圧 |
今回のマウス基板 | 約10MHzで発振 | 約1.6 Vで定電圧 |
また、今回のマウス基板のXTALとEXTALの測定結果を図8と図9に示します。
あれ…書き込めた回路と同じ動作をしているので、正常に動作しているようです。それなら、なぜ書き込めないのだろうか。
発振回路も正常に動作しているようなので、あとはRX631が破損している可能性しか残っていません。ハンダ付けのときにRX631を破損させてしまったのか。 明確な原因はわかりませんが、RX631などの部品を再度注文して、作りなおすことにしました。また、発振回路を通過する信号線についても気になったので、 基板についても再発注しました。
回路図と配線図の変更
回路図と配線図をいくつか変更して、再発注しました。
回路図
回路図の主な変更点は以下です。
- プルアップ抵抗などの抵抗値の変更
- CS信号線にプルアップ抵抗を付ける
- セラロックを変更
ブートモード中にCS信号線がLOWになり、ICがアクティブな状態になって、PC7がHIGHになってしまうという記事を見たので、 CS信号線にプルアップ抵抗を付けました。また、セラロックを以前使っていたCSTCE10M0G55の代替品であるCSTNE10M0G550000に変更しました。 このセラロックは入出力が逆になっても問題ないようです。また、内臓容量は33pFですが、過去のDCマウスでは動いたし大丈夫かなと思い、これを選択しました。
配線図
配線図PDF版(縮尺:2.5倍)
配線図の主な変更点は以下です。
- 発振回路の近くに信号線を通過させない
- いくつかのパッドをハンダ付けしやすいようにする
発振回路の近くに信号線を通過させないこと以外はほとんど変えていないです。
新しい基板に部品を実装して接続
再発注して2週間後くらいに基板が届いたので、書き込みができる最低限の部品をハンダ付けしました。 はじめ、PCと接続したときに相変わらず「接続は失敗しました」と出て、マジかよ…と思いましたが、PC7のプルダウン抵抗をつけ忘れていました。 プルダウン抵抗をつけたら、図12のようになり、接続に成功しました。
本当によかった…。
おわりに
明確な原因がわからなくて、少し腑に落ちないですが、書き込めて本当によかったです。結局、RX631の破損だったのでしょうか? 謎です。次回は L チカやシリアル通信などの記事を書こうと思います。