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キーボードデバイスとして、認識されているようだ。

Parents
  • digipontaさん

    図5-1 クロック発生回路のブロック図を見ると、内蔵高速発振器をUSBに接続するには以下の設定でよさそうですよ。

    DSCCTL=0x00;//DSFRDIV=0分周なし(PLLを使わない場合はDSCCTLの設定は不要かも)
    HOCODIV=0x00;//48MHz
    MCKC=0x00;//FIOCO選択

    内蔵発振器の精度だとUSB規格的にLow-speedにしか対応できないんですよねー。

    ちなみに、LowSpeedなので、G1CのD-/D+のラインにそれぞれ0.22uF 220pFくらいのコンデンサをつけてます?

  • Kirinさん、情報、有難うございます。試すと、残念ですが、認識エラーのままでした。

    とりあえず、RL78G1Cの32pinに、外付けで12MHzの水晶振動子を付けて、動作確認をしたところ、サンプルソースコードを無修正で、PCからHIDキーボードデバイスとして認識されました。

    現状までの確認では、RK78G1C/32pinに、外付け12MHz水晶振動子(外部コンデンサは2個とも10pF、抵抗は零Ω)を付けると、サンプルソースコードは無修正で、キーボードモードが稼働。SW1,SW2, SW3のポートは、32pinパッケージにも出廷ます。

    しかし、秋葉原の店頭で買える12MHz水晶振動子が、大きすぎる(;^ω^)

  • こんなの も売ってるみたいですよ。

  • 情報、有難うございます。一昨日、行ったときに、見つけられなかった模様です。でも、更に10pFのコンデンサ2個付けるスペースが捻出するのが難しそう。今、空中配線でも良いかと挫折しようかと

    USBコネクタから、RL78G1Cまで、10cm弱あるので、PBC側のスペース捻出よりも、USBの2芯シールドケーブルで内部接続するのが、無難か。

    -------

    ブレッドボードでUSBの実験するのが、駄目そうな気がしてきました。

    現状は、E20付けて、3.3V電源つなぐと、正常に、HIDキーボードとして認識されるが、5V電源に変えると、USBケーブルを短くしないと、正常に認識されないことが、判明。E20を繋げずに、直接、電源をつなげると、一瞬、PCのデバイスマネージャが再描画されて、不明なUSBデバイスになるか、一覧から消失したままという状況。USBから電源をとると、PCのデバイスマネージャが再描画も起きずにだんまり。アナログ的な条件なのか、そもそも何かがずれているのか、E20付けて、3.3V電源つないだ状態が、なぜ安定して動作しているのかが不思議。あと、D+とD-のそれぞれに直列に、51Ω(有り合わせなので、45Ωなかった)を入れると、E20付状態だけど、5V電源でも、PCに正常に認識される状態になった。やはり、E20の有無で何が異なるのか気になる。

  • digipontaさん

    動きませんでしたか、、、
    ちなみにC2h番地のオプションバイトはF0h(48MHz)ですよね?

    あと追加で、
    UCKSEL=0x0001;//USBクロックに高速オンチップ・オシレータ・クロック(fHOCO)を選択する
    を設定する必要がありそうです。

    PS
    と思ったら、UCKSELはL1Cにしかないレジスタみたいです。同じUSBじゃないのかなぁ、謎だぁ。。。。

    *((volatile unsigned short *)0xf06C4)=0x0001; //UCKSEL
    とかやったらダメかな。。

  • Kirin さん

    有難うございます。

    不安定ながら、HIDキーボードとして認識されるようです。ブレッドボードでの実験に問題があるようです。

    あと、D+とD-のポートを、いじくっていると、チップが簡単に壊れるようで、困惑中。

Reply
  • Kirin さん

    有難うございます。

    不安定ながら、HIDキーボードとして認識されるようです。ブレッドボードでの実験に問題があるようです。

    あと、D+とD-のポートを、いじくっていると、チップが簡単に壊れるようで、困惑中。

Children
No Data