ことのおこり
2014年2月の時点で、メジャーな ARM チップメーカーは STMicro Electronics(STM Discovery シリーズ)とNXP Semiconductor(LPC xxシリーズ)。
どちらも秋月で買える。 v 価格的に安価なため、 STM32 Discovery を使っていた。
が。NXPが DIP な ARM LPC1114 を出した!(なぜか 300mil 幅だけど)110円。
また、mbed なボードは5000円以上するが、expresso なボードは2000円。
とゆーことで、Expresso なボードを使ってみることに。
ハードウェア
マイコンボード
- LPC1769を購入。
開発環境
LPC Expresso
参考にしたサイト
最初の一歩
まずはLチカしたいところ。サンプルコードを探す。→開発環境である LPCXpresso をダウンロードすると、各評価ボード用のサンプルコードがついてくる。
(INSTALLしたフォルダ)\LPCXpresso_6.1.4_194\lpcxpresso\Examples\NXP\LPC1000\LPC17xx
似たような名前のものが並んでいて、どれを使うべきかよくわからない(-_-;;
LPC17xx_LatestCMSIS_Libraries 以下に必要なヘッダファイルとライブラリがあるようだ。
CMSIS_CORE_LPC17xx
core_cm3.h | Cortex-M3 CPUコアのレジスタ定義(割り込みコントローラなど) |
core_cmFunc.h | CMSYSのレジスタアクセス関数の定義 |
core_cmInstr.h | Cortex-Mコアの命令アクセス用ヘッダ |
LPC17xx.h | LPC176xxシリーズのペリフェラルのレジスタ定義 |
system_LPC17xx.h | システムクロック関係の関数宣言 |
クロックツリー
LPC1769のクロックはどうなっているだろうか。ユーザーマニュアルUM10360.pdfの第4章がクロック関連。
うむ。STM32F4 Discovery よりはシンプル。プリスケーラやPLLの数が少ない。
原発振は 12MHz の水晶発振器。これが図中の osc_clk に該当する。
周辺機器であるタイマへのクロックは、図中の Main PLL, CPU Clock Devider, Peripheral Clock Devider の設定によって決まる。
CPU Clock Devider
Peripheral Clock Devider
周辺機器の種類ごとに、クロックの分周比を設定できる。4種類からの選択なので、2bitで指定する。
Main PLL
入力周波数の範囲は 32kHz~ 50MHz。PLLによって、最大 120MHz を出力する。(LPC1769の場合)
PLL0の出力周波数は以下の式で計算できるらしい。
PLL0の周波数 FCCO = (2 x M x Fin) / N → Finは外部クロックの12MHz
M:PLL0 Multiplier value
N:PLL0 Pre-Divider value
M,Nという2つのパラメータを設定することにより、PLL0の出力周波数を制御できる。
クロック設定の参考URL
LPCXpresso LPC1769の120MHzクロック設定