H8SX/1653Fは、内蔵USBモジュールに48MHzを供給する関係で、MD_CLKという設定用入力ピンがある。
MD_CLK=0で、入力クロックの4逓倍がUSBモジュールに供給される。
MD_CLK=1で、入力クロックの3逓倍がUSBモジュールに供給される。
また、MD_CLKピンの状態で、Iφ(CPUクロック)、Pφ(周辺モジュールクロック)、Bφ(外部バスクロック)それぞれの、設定可能な分周比も変わる。
MD_CLK=0の場合、4逓倍, 2逓倍, 等倍 が選択できるのだが、
MD_CLK=1の場合はこれが 2逓倍, 等倍、1/2倍 に変わる。
(MD_CLKの状態によって、同じ設定値で設定しても、実際の逓倍比が異なるというのが問題)
Iφは最大50MHzだが、Pφは最大35MHzという制限があるので、USBを使うことを考えると、
入力12MHz, MD_CLK=0, Iφ4逓倍=48MHz, Pφ2逓倍=24MHz USBクロック 4逓倍=48MHz
入力16MHz, MD_CLK=1, Iφ2逓倍=32MHz, Pφ2逓倍=32MHz USBクロック 3逓倍=48MHz
のどちらかで使うことになる。
問題なのは、CPUからMD_CLKピンの状態を読めないことである。可能な分周比設定がどっちなのか、プログラムから、わからない。
SCIブートモード(H8SX内蔵Flashに書き込むための、CPUにあらかじめ内蔵されているプログラム)で、「逓倍比問い合わせ」コマンドを送ってみても、MD_CLKの状態にかかわらず常に「1,2,4逓倍」設定が可能という応答しか返ってこない。
というわけで、入力クロックは12MHzを使った方が無難なようなのだが、そうすると周辺が24MHzでしか動かせない。単純に速度的に損した気がするし、また、タイマやSCIの分周比設定がイマイチ柔軟でないので、24MHzよりは32MHzのほうが扱いやすいと思う。しかし入力クロック16MHzではCPUクロックを32MHzまでにしかできない。
あちら立てればこちらが立たず、である。
もうちょっとクロック周りの柔軟性を高めてほしいと思う。あと周辺のクロック耐性もアップ希望…。
2010年追記。もうH8SXはいいやって感じ。いまからだったら、STM32とか使いたい。
コメント