Cortex-M3は商業的にもかなり成功しているラインナップらしく、随分と色んなマイコンからの乗り換えが多いようです。ところで、他のマイコンから乗り換える上でついつい心配になってしまうのは「制御しきれるのだろうか?」ということです。
例えば、mbedはCortex-M3の能力を体験するのに最適ですが、洗練されたライブラリのおかげでレジスタまで意識することはありません。
そんな時にEmbedded Artists社のLPCXpressoが便利。
ただ、他メーカのマイコンやmbedからCortex-M3に入った人にとっては、やっぱり突然未知の領域に放り込まれてしまいます。
そこで、この記事では「恐れなくて大丈夫!Cortex-M3をLPCXpressoで十分に体験しよう!」というテーマで、実際にどのようにレジスタ制御を習得していくのかを御紹介します。
ここではLPCXpresso LPC1768を使用します。
(秋月電子通商さんや、マルツパーツ館さんなどから購入可能です。)
まず、用意するものですが、LPCXpressoとユーザマニュアルです。
ユーザマニュアルは840ページを超えますが、概要やブロックダイアグラムなど一般的な項目から読み進めれば良いです。いきなり全部を読もうとすると・・・挫折します。(笑)
基本的にUM10360は重要な項目から読み進められるようなページ構成になっています。
プロセッサの概要に触れ、ブロック図を示し、メモリマップへと進みます。
他メーカの独自コアマイコンから乗り換える方の中には「プロセッサの中にペリフェラルのバスが!」なんて引き気味になってしまう方もいるかもしれませんが、御安心を。
先ほどのブロック図と共に「APB peripheral addresses」を参照すれば、だいたいどのような構成になっているのか理解できると思います。
APB0とAPB1で使用できるペリフェラルが異なりますので、その辺りをここで確認しておくと良いでしょう。
「Chapter 3: LPC17xx System control」からはリセット、電圧降下検出、外部割り込み入力、その他のシステム制御とステータスに関する記述があります。これらに関連するピンの情報もここに示されています。リセットブロックダイアグラムも示されていますので確認しておきましょう。
スタートアップについては以下のような図が載っています。
起動タイミングにシビアな性能を要求する場合には確認しておきます。
「Chapter 4: LPC17xx Clocking and power control」からはクロックと電源制御について書かれています。
ここで重要なのは「パワーアップ時やチップリセット時には、クロックに内蔵RCオシレータが選択されている。」ということ。この内蔵RCオシレータはウォッチドックタイマやPLL0の駆動クロックなどに使用されます。ただ、このクロックはUSBや100kbit/sを超えるCAN1/2には使用できません。
そこで、起動後にクロック選択レジスタでクロックを選択してあげることになります。
もう突然嫌になりましたか?
大丈夫です。
これを設定すれば高速マイコン動作。
やらずにいられません。
ドキュメントに「Clock Source Select register」というのがありますね?
CLKSRCSELがそうです。
ドキュメントには、CLKSRCSELを00にするとPLL0クロック源が内蔵RCオシレータになり、01にするとメインオシレータが選択され、10にするとリアルタイムクロック用オシレータが選択されると書いてあります。
こんな調子で、各ファンクションブロックについて見ていくとあーら不思議、安くて高性能なコンパクト組み込み機器の完成となるわけです。
と言っても840ページありますからね。
大変ですけど。
次回はこの続きでSPIを使った液晶制御などを行うかもしれません。
0 件のコメント:
コメントを投稿