初歩的な質問ですみません。
RX65Nマイコン基板に、RFP(RenesasFlashProgrammer)-USB I/F で プログラムを書く場合、
RX65Nマイコンの XTAL/EXTAL 端子に、20MHz or 24MHz のクロックを供給しておかないと、うまくいかないんでしょうか?
といいますのも、今私が作ろうとしている RX65Nマイコン基板は、
RFPでのプログラム書き込み専用に USB コネクタをつけようとしています。
で、ハードウェアマニュアルを読むと、 20MHz or 24MHzクロックが 必要にも 不要にも 取れてしまって、悩んでいます。
(RFP動作中は、HOCOから生成されたUCLKが使われていたら楽なんですけど。)
回答をいただけると、とても助かります。
よろしくお願いいたします。
Packunさん こんにちはNAKAといいます。オンチップオシレータでも動作させることがありますので、XTAL/EXTAL 端子に水晶をつけなくてもプログラムできると思いますよ。USB云々で特殊な事情があるのかもですが・・・
SCIモードならメインクロックじゃなくても大丈夫かはここから確認ができますね。https://ja-support.renesas.com/knowledgeBase/19623071
ひとつ気になることですが、スマートコンフィギュータのUSBクロック設定ではPLL回路の入力クロックにメインクロックを要求するかもしれません。私はRX65Nは使ったことがなく試したことがないですがRX72Mでの話になりますが、RX72Mではメインクロックが要求される警告が出ました。これの意味することはハードウェアとしてUSBクロックはメインクロックに紐づいている必要があると言うことかもしれません。
実際に実機で試してないから推測ですけどね。あとメインクロックに使えるのが20/24MHzとあるのもブートモードプログラムでUSBブート時にはクロック初期化でメインクロックがあること前提でそのパターンは2つと絞っているのかもしれません。CKSELビット設定を見るとUCLKの設定はメインクロック以外もできそうですが。もう一点としてスマートコンフィギュータが設定できてもそれはユーザプログラムであってブートモードプログラムが対応しているかはまた別の話ですね。中の人から回答が得られないなら技術サポート案件かなと。※私ならピンに余裕があるならパターンだけ引いて、不要なら部品を未実装にするかな。
hira です。
ハードウェアーマニュアルに、以下のように書かれています。
「ブートモード (USB インタフェース ) で使用可能な発振子は、周波数が 20MHz、24MHz、かつ発振子メーカーのマッチングテスト結果 ( 推奨設定値 ) でメインクロック発振器ドライブ能力 2 切り替えビット(MOFCR.MODRV2[1:0]) が “00b” の設定値のみです。」
なので、文面の通り、推奨の水晶発振子を接続する必要があると思います。
ちなみに、「必要にも 不要にも 取れてしまって」とは、何処に書かれている説明でしょうか?
-----
通常、内蔵発振器HOCOの周波数安定度は低く、ジッタも多いので、USB接続時の通信を確保する安定度はありません。
又、上記説明のように、外部OSCを使って、直でクロックを入力するのも避けた方が良いと思えます。
※大抵は動作すると思いますが・・・
「ブートモード (USB インタフェース ) で使用可能な発振子は」と書いてある書き方がメインクロックを使わない条件を許すのかどうかを説明しないからだと思います。この主語の示す範囲はあくまでメインクロックで繋げることが可能な水晶発振子の条件のみですね。それがどうい意図しているかが読み取れない。CKSELビット設定ではUCLKの選択肢が複数存在しています。USBブートの注意事項の書き方にメインクロックが必須だと明記していないのがそもそも混乱の元で、そのための質問だと思います。前置きとして注意事項の文章にメインクロックが必須かどうかを記載してあれば分かり良いのに。
Arduino UNO R4のRA4M1はUSBブート対応なので、説明を読んでみました。これはHOCOが使われるようでUSBブートの注意事項には特段の条件が書いてありませんでした。しかも特記でHOCOをUSBクロックで使う場合は48MHzに固定される旨も。
RX65Nも内部オシレータだけで動くならメインクロックを初期化する必要がないのでUSBブートでメインクロックにつなぐ発振子の条件が書かれていることを考えるとUSBブート設定の場合はメインクロックが必須の可能性が濃厚です。記載が無い以上は技術サポートか、ここをみている中の人から回答がないと実機で試すしかないでしょうね。
方法は簡単です。USBブート対応の評価ボードの発振子を動かないようにしてやれば良いだけです。回路基板はXTALピンに直列に抵抗がついている回路のものを選んで(抵抗がないのは水晶を外すのでリワーク設備がないと難しいっす、チップ抵抗なら手ハンダでOK)その抵抗を一時的に外せばメインクロックは未接続と同じ状態になります。この状態でUSBブートモードが動くなら動く条件が
・メインクロック未接続時
・メインクロック接続時→発振子が20/24MHz
と言うのが条件になると言うことです。
NAKA さん、回答ありがとうございます。
XTAL/EXTALに発振子が付いていない状態で、USB I/Fが使えたわけですね?
だとしたら、外部の発振子なしでも RenesasFlashProgrammer -USB FW書き込みができそうな気がしてきました。
少し希望が見えてきました。
とはいえ、オンチップオシレータ(HOCO/LOCO)は精度が悪いので、USB 通信が不安定になるとおっしゃる方もおられます。
確かに、過去のスレッド-RX64Mマイコンで内蔵クロックでは USBブートモードが起動しない-では、水晶発振子を付ける必要がある。という結論にもなっていました。
意見が割れているようですので、正式に Renesas社様に問合せ、結果をここに報告しようと思います。
お忙しいところ、ありがとうございました。
Yamamoto さん、回答ありがとうございます。
RenesasFlashProgrammer -USB I/F で、RX72MマイコンにFWを書き込もうとすると、メインクロック(XTAL/EXTAL入力)がないという警告が出たのですね?
となると、やはり 外部から 20/24MHz のクロック入力が必須なのですかねぇ?
現実的な対応としては Yamamotoさんのおっしゃるとおり、20/24MHz発振子を付けておき、発振子を取り外しても RenesasFlashProgrammer-USB が動いてくれるなら、以降は 発振子無しで実装する。
これですね。
お忙しいところ、貴重な情報ありがとうございました。
>メインクロック(XTAL/EXTAL入力)がないという警告が出たのですね?
クロック設定のタブでその組み合わせで警告が出たという話です。RX72Mだけかもしれませんので確認必須です。なお、メインクロックがつながっていないという警告です。ピンがカツカツで困っているなら技術サポートに連絡すればいいと思います。私の意見は困ってないならパターンは引いておくといいですよという話です。内蔵プルアップありでもパターンだけは引く派です。
hirakuni45 さん、回答ありがとうございます。
hiraさんがおっしゃるように、RX65N/651 ハードウェアマニュアル 59.18-(7)には、
「ブートモード (USB インタフェース ) では、20/24MHzメインクロックが使用できる」
と、載っています。
しかし、RX65N/651 ハードウェアマニュアル 59.9.2 ブートモード(USB インタフェース) の説明には、メインクロック(XTAL/EXTALからの 20/24MHz) 必要だと説明されていないようです。
ミス?それとも省略しているだけでしょうか?
RX23N の ハードウェアマニュアルですと、メインクロック(XTAL/EXTALからの 4/6/8/12/16MHz) が必須であるかのような説明になっているので、わかりやすいのですが。
そもそも、RX65Nマイコンが ブートモード (USB インタフェース ) で起動した直後(RenesasFlashProgrammerからのアクセスされる前)は、UCLK(USBクロック)のソースは、どこから来ていたのか?
という疑問が出てきます。
起動した時点で UCLKが、メインクロック(XTAL/EXTALからの 20/24MHz) で動作しているのであれば、わざわざ再設定する必要がない=注意事項に乗せる必要が無いように思われます。
そうではなく、起動時には UCLKが、HOCO=20MHz(?)で動作しており、USB経由で RenesasFlashProgrammer が MOFCR.MODRV2[1:0] を書き換えるというのであれば、なぜ?とも思います。
RenesasFlashProgrammerからのアクセスが出来ている時点(HOCO動作)で、RX65Nマイコンの USB I/Fが動作していますよね?
安定動作のためにMOFCRでクロックを設定し直せ と言っているのでしょうか?
hiraさんの仰るように、内蔵オシレータ(LOCO/HOCO)は精度が低くて、UCLKには使えないと言う話も小耳に挟んでいます。
実際はどうなのでしょう?
確かに、USB I/Fの安定動作のために メインクロック(XTAL/EXTALからの 20/24MHz) を入れるべきだというのも、おっしゃるとおりです。
お忙しい中、安定動作設計の観点からのチェックをいただき、ありがとうございました。
実動作を見てみましたが、RX65Nの場合はUSBブートモード時、外部にクリスタルをつなげる必要があります。
(クリスタルをつなげないと、USBの仮想COMポートとして見えないので、HOCOでUSBモジュールを動かしている感じでは無い気がします。)
何MHzのクリスタルをつなげれば良いかは、ハードウェアマニュアルには…書いてない。何故でしょう。RX200系の様に書いてないと困りますよね。
試した結果では、
8MHz10MHz12MHz15MHz16MHz20MHz24MHz
は書き込みが可能でした。
(15MHzといった、中途半端な値でも行けました。15×16逓倍で、PLLが240MHz。1/5でUCLK=48MHzに設定可能なので、おかしくはないですが。)
8MHz未満では、4MHz,5MHz,6MHzなどでもNGでした。(感じ的には、8MHzが最小かと思います。8×30逓倍で240MHzになるので行けるのでしょう。)
書き込みが出来ない=「そもそもPCから仮想COMポートとして認識されない」です。(PC上で仮想COMポートとして見えるにも拘わらず、書き込みが出来ないというケースは試行する限りではありませんでした。)
手元にあったクリスタルで試したので、上記以外の値でも行ける周波数はあるのではないかと思います。
(但し、13.333MHzではダメでした。13.333×18逓倍で240MHzになるので、原理的には行けそうですが、マイコンの内蔵ファームは、ある程度キリの良い値が入力される前提なのかも知れません。8~24の間で、PLLの逓倍比が(UCLK=48MHzに)マッチすれば行けるという訳でも無い様です。)