RL78G1C(R5F10JBCAFP)でサンプルを動かすには?

秋月などで買えるRL78G1C(R5F10JBCAFP, 32pin)ですが、「Renesas USB MCU, USB Peripheral Human Interface Devices Class Driver (PHID) using Basic Mini Firmware」で公開されているソースコード、そのまま動かないようです。なお、USBキーボードとして動作させるモードを使おうとしてます。

今、作業始めて見つけた条件の違いは、

(1) 48pinが、前提で、32pinにはないポートをスイッチに割り当てている。再配置が必要かも。←sw1,sw2,sw3で使ってるポートは、32pinにもありました。
(2) 外付け水晶を使った発信が前提で、内蔵発信器になっていないこと。ロースピードで良いので、内蔵発信器で動くようにしたい。
(3) 今後の作業で見つけていきます。

上記の3つの中で、(2)の変更をするための情報が知りたく、お願い致します。

RL78G10と同様の回路で、制御プログラムは書き込めているようです。

ユーザズマニュアルでは、下記の記載がヒントかな。

② 高速オンチップ・オシレータ
オプションバイト(000C2H)により,fHOCO = 48 MHz (TYP.) /24 MHz (TYP.)から周波数を選択し,発振させることができます。CKSELRビット(MCKCレジスタのビット0)を"0"に設定すると,周波数fHOCOをRDIV0, 1ビット(MCKCレジスタのビット1, 2)の設定によって,2/4/8分周(2分周がデフォルト)したクロックがメイン・システム・クロック・ソース(fIH)として選択されます。リセット解除後,CPUは必ずこの高速オンチップ・オシレータ・クロックで動作を開始します。
USBクロックとして高速オンチップ・オシレータ・クロックをソースクロックとして選択(USBファンクション・コントローラ機能のロウ・スピード転送時のみ使用可能)する場合は,fHOCOの周波数選択を48 MHzとした上で,メイン・システム・クロック(fMAIN)に必ずfHOCOを分周したメイン・システム・クロック・ソース(fIH)を選択して使用してください。
STOP命令の実行またはHIOSTOPビット(CSCレジスタのビット0)の設定により,発振を停止す
ることができます。
オプション・バイトで設定した周波数は,高速オンチップ・オシレータ周波数選択レジスタ(HOCODIV)で変更できます。周波数は,図5-9 高速オンチップ・オシレータ周波数選択レジスタ(HOCODIV)のフォーマットを参照してください。

③ PLL(Phase Locked Loop)による高速システム・クロックの逓倍機能USBホスト/ファンクション・コントローラ用のクロック供給を主目的としたクロック機能で,PLL発振周波数(fPLL)が48MHzとなるようにDSCCTLレジスタを設定して使用します。また、CKSELRビットを"1"に設定すると,周波数fPLLをRDIV0, 1ビットの設定によって,2/4/8分周したクロックがメイン・システム・クロック・ソース(fIH)として選択されます。USBクロックとしてPLLクロックをソースクロックとして選択する場合はメイン・システム・クロック(fMAIN)として必ずfPLLを分周したメイン・システム・クロック・ソース(fIH)を選択して使用してください。
DSCONビット(DSCCTLレジスタのビット0)の設定により,PLLを動作,停止させることができます。なお,PLLの設定の詳細およびUSBクロックとの接続関係に関しては図5-12,表5-3を参照してください。

これの具体的なプログラムがどうなうのか? でも、②と③で、混乱

試しに、「//    MCKC |= 0x01;                     /* Select PLL clock (fPLL) */」とコメントアウトすると、下写真のエラーメッセージがでるようになったが、どう設定するのだろうか?

上写真は、ロースピードでつけろと書いてあったコンデンサを外した時のエラー。

前提として、USBデバイスとして、使うときは、水晶発振器が必須ということではないですよね。

-------

デバイスマネージャのダイアログを見ていると、一瞬、HIDキーボードデバイスとして、認識されているようだ。

  • すみません、勘違いしていました。

    ところでE20を外して動作が出来ないことはまだ解決できていないんですよね?先にそちらを潰さないとR1,R2,C1,C2の議論が出来ないような気がします。D+/D-いじってチップが壊れるって書かれているは電気的に壊れるってことですよね?回路を見ないでの発言なので無責任ですが、どこか間違いがあると思います。E20をつないだ状態でだけ動くようになっているのがとても気になります。E20とDUTは同じPCにつながっているんですよね?

    もっと先の話かもしれませんが、D+/D-にはTIのTPD2E001 みたいなESD対策部品を置けるようにしておくと良いかと思います。

  • Kirin さま

    有難うございます。外部水晶発振子付ける場合でしが、ブレッドボードでの動作確認も、USBのD+とD-は、直結とすれば、何とかPCからの接続を維持してくれるようです。この構成だと、USB電源でも動作しました。

    Yamamoto さま

    外付け水晶振動子付けた場合で、上記は、E20を繋げなくても、PCから認識されるようになりました。

    現在、ロースピードの動作確認で、E20を外すと、PCから、認識されたり、見えなくなったりと不安定な況です。やはり、アナログ的な問題と考えています。

  • 外付けの水晶振動子12MHzを使う方向が安定しているようなので、紹介の外付け水晶振動子を付けられるようにPCBを修正中です。

    現在の基板は、RL78G1Cから水晶振動子のピンを出してなかったので、試せないのが、残念無念。

    -------

    【備考】

    上記のBCBは、RL78G1Cのオンボードと、GR-KURUMI(RL78G13)と、9軸モーションセンサと、16個のフルカラーシリアルLEDと、13個のプッシュスイッチ(ファンクションケキー専用)を搭載した片手用ゲームコントローラになる予定です。

  • M16Cの資料なので参考までに

    documentation.renesas.com/.../rjj05b1554_m16cap.pdf

    あと、Teseraが設計したRL78/G13 Stick ボードのデバッガ側のマイコン78Kですが、これのR1,R2に相当する抵抗は33Ωでした。データシート通りならアートワークでインピーダンスマッチングがバッチリならダンピング抵抗は無くて大丈夫です(私は小心者なので過去の設計は全て27Ωが根本に付いていたりします・・・)。

  • Yamamotoさん

    あれですよ、あれ!

    USBは受信端に終端抵抗がないので、全反射しちゃいます。そのため、
    D+/D-の根元で直列終端することで反射を吸収できる仕組みなので、「USBドライバの出力インピーダンス+直列抵抗」=45Ω (=90Ω÷2)になる必要があります。
    外付けの抵抗はドライバーの出来上がりに合わせて調整するため、27Ωが推奨されているUSBドライバーはドライバーの出力インピーダンスが18Ωに仕上がっているということになります。同様に33Ωが推奨されているUSBドライバーは出力インピーダンスが12Ωということになります。
    きっとG1CのUSBドライバーは出力インピーダンスがジャスト45Ωに仕上がっているので、外付け抵抗が不要なんだと思います。

    アイパターンを見ながら出力抵抗を調整すればバッチリな信号品質になるかと思いますけれども、USBのコンプライアンステストしないなら、抵抗値が±10Ωくらいずれてても全然OKです。

    もちろん、Yamamotoさんのおっしゃるとおりアートワークで差動90Ωにするのが大前提ですけれども。

  • Kirinさん

    あれですね・・・アレ?

    私は工作したくてUSBマイコンを探しているのですが(気持ちの悪い)PICで行くか(気持ちよくなくはない)RL78で行くか悩んでいる最中です。個人的興味で調べたところこのマイコンのデータシート通りならR1,R2に相当する抵抗は内蔵されていて無くて大丈夫だと思います。出力インピーダンスZDRV=28〜44Ωとのこと(フルスピードのドライバだけみたい)。あとは開発環境なんだけどGCCのRL78クロスコンパイラが作成できたら(MACで作業したい)RL78で行こうかなと考えています(素直にAVRにすれば幸せなのかもしれない)。

    それでも小心者なので私ならチップ抵抗のパターンを引いておきます。

    いらないなら0Ωを実装しとけばいいって事ですので。

  • Yamamotoさん

    そうそう、それっ!(笑)

    USB規格的にはスピード毎にドライバーの出力インピーダンスの規定がありますけれども、
    ロースピードは規定されていないのでG1CのUMには、あえてロースピードドライバーのZDRVを記載していないみたいですね。

    • ハイスピード: 40.5Ω~49.5Ω
    • フルスピード: 28Ω~44Ω
    • ロースピード: 規定なし!

    抵抗パッドがあれば、あとあと何かと便利ですよね^^

  • 現状、ロースピードが、不安定で、ほとんど繋がらないなのが、問題です。取り敢えず、TPD2E001の発注かけました。この手の保護回路は、マイコン内蔵でも良いと思うんだけど。マイコンの電源は3.3Vに減圧して使ってるが、5Vのままの方が、相性がいいのかどうか。

  • Renesas Starter Kit for RL78/G1CだとESD対策用のツェナーダイオードだけが使われていますね。

    ESDの知識は付け焼き刃で間違ったことを書いている可能性がありすのであくまで私の理解の範囲で書きます。

    人体からの放電電荷について一般的には3kVから放電します。また標準的な人体の静電容量は100pFと言われています(長靴を履いているとか服装などによって容量は変化します)。Q=CVですので、Q=3e-7クーロンくらいの電荷が人体から半導体の信号線を通して電荷の移動が起こる可能性があるわけです。ICの破壊はGND基準で発生しますので外部端子が出ている信号線でインピーダンスが低い端子は急激に電荷が流れこむと急激に電圧が上昇して耐圧をオーバーするわけですが、D+/D-はその危険性があるわけです。VBUSは根本にある程度大きなコンデンサがデカップリングのために置いてあるため、VBUS経由の静電気は仮にコンデンサ容量が1uFの場合V=Q/C=0.3Vの電圧になります(初期電圧が0Vの場合)。ではD+/D-ですが、何も繋がっていないのならGNDに対する容量で上昇量が決まります。もし、データシート通り(nFの単位はありえないから220pFでしたっけ?)ならV=1.3kV上昇してしまいます・・・壊れますねとなります。

    ここでESD対策ダイオードがあって、吐き出す先が1uFコンデンサにぶら下がっているのならコンデンサの電圧は0.3Vとなります(初期電圧が0Vの場合)。で問題はVBUSにつなぐか3.3Vにつなぐかということですが、UVDD=3.3Vなら3.3V側へ逃さないとD+/D-の電圧上昇はUVDDを超えてしまいます。3.3Vで運用しているのなら3.3V側に逃すのだと思います(自信がないです)。D+/D-の定格に明記されていないのでVBUSの5Vでも大丈夫だと思います。

    3.3Vに逃すとした場合で書きます。予め静電気を吸収するコンデンサ電圧3.3Vだった場合、既にコンデンサにはQ=1uF×3.3V=3.3e-6クーロンあって、静電気によって+3e-7クーロン上昇するので3.3Vの電圧は瞬時ですが、3.6Vとなります。コンデンサ容量を10uFにするとQ=10uF×3.3V=3.3e-5クーロンあって静電気によって+3e-7クーロン上昇するので3.3Vの電圧は瞬時ですが、3.33Vとなります。ESD対策ダイオードと静電気電荷を逃す先のデカップリングコンデンサの間のインピーダンスは低くなるように近くに配置するのが良いかと思います。

    クドイようですが、あくまで参考までに。

    他に詳しい方がいらっしゃったらお願いします。

  • ESDに関しては信頼性ハンドブック(documentation.renesas.com/.../r51zz0001jj0100.pdf)を参照するのが良いです。作業者の静電気を想定したヒューマンボディーモデル(HBM)とマウンターなどを想定したマシーンモデルがあります。HBMは100PFのコンデンサにチャージした電荷を1.5KΩの抵抗を通して印加します。HCなどは1KV程度は大丈夫とデータブックに記載されてます。実力としては3~5KVぐらいはあるのではと思います。古くはゲート酸化膜での絶縁破壊が問題とされましたが、微細化が進み絶縁破壊はいたるところで発生します。また、電流で考える発熱による故障も無視できない時代です。また、自動車関連では、150pFを要求したりしてかなり厳しいです。具体的にはノイズ研究所のホームページなどを見てください。今のICはかなり強いと思います。どちらかと言うと電荷一定で考える方が良いです。チャージしたICを持ち上げると容量が小さくなるので電圧が上がります。不用意にICをつまみ上げると壊れます。初めて意識した時は目からうろこでした。ESDに関しては、ノイズ研究所やICメーカのドキュメントぐらいしか参考書がありません。エレクトロニクスの静電気対策(OJマッカーター・マグロウヒル)はとても面白く役立ったのですが絶版のようです。これらはセットを組み立てる際のIC単体での話です。

    セットになった状態での静電気も基本はHBMですが、通電した状態で印加することやグランドのしっかりしていない環境での静電気を想定するので非常に高い電圧が要求されるlことや故障でなく誤動作が無いことを要求されることもあります。