マウスの構成を考えて楽をする為にSTM32の内部発振回路にトライ。
どこのボードもそうだろうが 外部クロックを使うのが標準になっている。
なので どこをいじれば良いのかを調べる。 あまりメジャーな使い方でないのか以外に情報が少ない。 ずばり書かれているのは見つからず。 手探りで。
・内部発振器では8MHzだが 1/2になって供給されるらしい。
・PLLを作る低倍率は16倍まで
・なので内部の発振回路を使うと64MHz動作までしかできない(らしい)
p52-hw_config.cの中の
RCC_PLLConfig(RCC_PLLSource_HSE_Div1, RCC_PLLMul_6);
を RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_16); にしてみる。
ところが うまくいかない。
そこからまた、参考書を調べると、、クロックツリーと言う図がある。 USBCLKの所が48MHzとなっている。
他は72MHz(Max)とかMaxがついているのに 48MHzで決め打ちになっている。
USBプリスケーラは 1/1.5 もしくは 1 しか選べないらしい。 そこら辺から推測をすると 72MHzを1/1.5にして48MHzにするか 48MHzをそのまま48MHzで使うかしか手がないのかも。
さっそく RCC_PLLConfig(RCC_PLLSource_HSI_Div2, RCC_PLLMul_12); として
RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_1Div5);->RCC_USBCLKConfig(RCC_USBCLKSource_PLLCLK_Div1);にしてみる。
これで 動き始めた。 もちろんLEDの点滅が遅くなったが。
さて マウスにする時にどうするかだが
・48MHzにする、これでもmomocoの40MHzよりは2割はやい
・8MHzの外部クロックを用意する
・72MHzにしてUSBを使わない通信を採用する、こちらはさらに勉強が増えるな。
そこで ふとSTBeeの事を思いついた。
STBeeの外部クロックは12MHz。 8MHzの勉強中のボードとは違う。
他の違いは LEDのポート、Push SWのポート など それらを修正して 再トライ。
でも ダメだった。
JTAG経由でモニタを書き込めた気だったのだが
wrote 22596 byte from file mon_stm32f103-p52.mot in 1.265625s (17.435184 kb/s)
target state: halted
target halted due to breakpoint, current mode: Handler HardFault
xPSR: 0x61000003 pc: 0x08000e54 msp: 0x0200f9e0
wroteとあるので書き込みがうまくいったと思っていたが JSDのボードにちゃんと書き込めた時と最後のメッセージが違う。
wrote 22388 byte from file mon_stm32f103-p52.mot in 1.250000s (17.490625 kb/s) target state:halted
target halted due to breakpoint, current mode: Thread
xPSR: 0x01000000 pc: 0x0800502c msp: 0x20004800
Info : JTAG tap: stm32.cpu tap/device found: 0x3ba00477 (mfg: 0x23b, part: 0xba00, ver: 0x3)
Info : JTAG tap: stm32.bs tap/device found: 0x16410041 (mfg: 0x020, part: 0x6410, ver: 0x1)
current mode: の後が違う