● 実験テーマ48
「ARM事始め」
(トラ技2014/2月号付録の8pin32bitARMマイコン(LPC810)とI2C実験基板で実験を行いました。
また記事にないカレンダIC:RTC8564の実験も行いました)
■ 2014.2.25
・以前から、PIC以外のマイコンにも興味はあったのだが、なかなか、きっかけが無く
HP開設以来、PICオンリーでやってきた。
タイムリーなことに、今年のトラ技の2月号・3月号に、「8ピンXDIP
ARMエントリ・キット」
と称して、2月号には、32bitマイコンの、LPC810+I2C実験基板、
3月号には、ARMライタ基板が付録といて付いてくることを知り、これを機会に、
ARMマイコンに触れてみようと思いました。
・ただ、この付録を完成させるのに別途、完成パーツセットと称する部品セットを購入
する必要があるのだが、どうも好評につき、かなり納期が掛ってしまうらしい。
ARMライタに関しては、ケーブル(1.27mmピッチ)Assyがネックになっているらしく
また、I2C実験基板では、温度・気圧モジュールがネックになっているらしい。
しょうがないので、ARMライタについては、ケーブル無の部品セットを注文し、
I2C実験基板については、個別に部品を集めることにした。
気圧モジュールに関しては、秋月にも同じセンサー素子を使用しているモジュール
が売られていたが、ピン配置が異なるので注文するのはやめた。
結局、温度・気圧モジュール以外は個別で集めることができたので、
とりあえずは、I2C_EEPROM, ADCと、記事には無い、カレンダIC:RTC8564の
実験を行うこととした。
・ここで、ARM社と、LPC810マイコンのメーカーの関係について調べてみた。
どうも、ARM社は、そのコア(CPU)の設計図を、半導体メーカー各社に供給している
立場であるようだ。
そして、LPC810マイコンのメーカーは、
NPX社(Next Experience Philis)で、2006年10月に、
フィリップスの半導体製造部門:フィリップス・セミコンダクターズから分社化されて
できた会社ということのようだ。
フィリップスと言えば、確か、I2C規格を提唱したメーカーだったと思うが、
この基板でも、フィリップス社製のI2C制御のADC素子が使用されている。
■ 2014.2.26
・初めての、ARMマイコンの実験なので、とにかく開発環境を構築する必要がある。
この辺もトラ技の記事で説明されているので、とりあえずは、NPXサイトでの
ユーザー登録から始めてみた。→ ユーザー登録済
IDE(統合開発環境):LPCXprcssoは、このユーザー登録をして、ライセンス登録
をし、アクティベーション・コードを発行してもらい、これを最初の、IDE立上げ時に
入力しないと、プログラム・サイズが、8k制限から256kmaxに拡張されない。
(ライセンス・タイプ= FULLにならない。)
■ 2014.2.27
・無償評価版LPCXprcssoのインストールは問題なくできた。
・続いて、ライセンス登録〜 アクティベーション作業まで行う。
アクティベーションが完了したかは次のダイアログで確認できる。
下に、アクティベーション前・後で、コード・サイズを確認した時の、スクリーン・ショットを
示しました。
■ 2014.3.6
・今回、いきなりI2C実験基板を動かすつもりなので、トラ技付属CD-ROMに収録されている
サンプル・プログラムを利用することになる。
トラ技には、次の2つのファイルをIDEにインポートするように書いてある。
@ LP810-DEMO.zip
A NXP_LPC8xx_SampleCodeBundle.zip(IDEに入っている標準サンプルプログラム)
・ところが、@の、LP810-DEMO.zipは、CD-ROM内には見当たらなかった。
実際には、このデモプログラム作者:小野寺さんの名を取って、「onodera.zip」としている
ようだ。
ZIPファイルの名前は、「onodera.zip」で、これをIDEにインポート(解凍)すると
imnport projects のダイアログの、LPC810-DEMO(/)にチェックマークが入っているので
[Finsh]ボタンを押せば、インポートが完了する。
・続いて、NXP標準サンプルプログラム:NXP_LPC8xx_SampleCodeBundle.zipをインポートした。
・デモ・プロジェクトでは、この標準サンプルプログラム内の、lpc800_driver_libを利用しているので、
これを、ビルドした。
ビルドすると、Releaseディレクトリに、「lpc800_driver_lib.a」が生成される。
・次に、サンプルプロジェクト「LPC810-DEMO」をビルドした。
Releaseディレクトリに、「LPC810-DEMO.axf」が生成される。
これが、フラッシュへの書込みファイルになる。
(拡張子の、axfは、ARM Executable Image:ARM
実行イメージを意味する。)
■ 2014.3.7
・デフォルトのデモ・プログラムでは、温度・気圧のI2Cが動くようになっているので、これを
とりあえずの実験として、EEPROM用に変更した。
#defineで選択できるように記述されているので、変更は簡単である。
#define EEPROMのコメントアウトを外し、ADC, TEMP, BARの、#define文をコメント
アウトすればよい。
ただ注意しなければいけないのは、温度・気圧モジュールが実装されてない時は、
これだけでは動かないという点である 。
次に示す、メインの頭の方に記述されている、温度と気圧モジュールの初期化の
行をコメントアウトしないとだめ。(これに気付くまでに、ちょっと時間が掛ってしまったが・・)
たぶん、スレーブからの、ACK待ちループに陥ってしまうからだろうと想像する。
<メインの頭の方に記述されている、温度と気圧モジュールの初期化の部分をコメントアウト>
// set 16bit resolution
// PutI2C(ADT7410_CONFIG, 0xC0, ADT7410_ADDR);
// Power ON Cycle=1Hz
// PutI2C(LPS331_CTRL_REG1, 0x90, LPS331_ADDR);
・EEPROMのプログラム動作概要は、ターゲットの、24LC64(64kビット=8kバイト)の、
2番地のみに、0x5Aを書込んだ後、8kバイトの全エリアを読み出して、そのアドレス
と、データを液晶表示するというもの。
■ 2014.3.8
・IDEのインストールと、アクティベーションは完了したが、トラ技ARMライタにファームウエアを
書込む作業が残っている。
要は、USB⇔JTAG(SWD)変換ファームであり、このプロトコルには、
CMSIS-DAP(シームレス・ダップ: Cortex-Mマイコンのデバッグ規格)を利用することになる。
ファームウエアが正常に書込まれると、トラ技ARMライタを、PCのUSB口に挿入した時、
PCは、「HID準拠デバイス」と認識する。
・これで、デモ・プロジェクト(EEPROMのみ動かすプログラム)をビルドし、AXFファイルを生成し、フラッシュに
書込めば、動作チェックが出来る。
■ 2014.3.10
・以下に、EEPROMの実験風景と、I2C波形を確認した時の結果をアップします。
・続いて、ADCのプログラム設定にし実験を行った。
■ 2014.3.12
・今日は、記事にないRTCの実験計画を立ててみた。
ざっと動作仕様等は次のようにした。
@ 秋月の、AE8564NBモジュールAE8564NBモジュール(以前、dsPIC30Fでの実験で使用実績あり)を使用。
A 実験レベル(動作確認)程度とする。
BATバックアップ及び、時計合わせ機能は無し。
B 固定のデフォルトタイム設定値より、時計カウントし、それをCのフォーマットで
液晶に表示。
C 表示フォーマットは、超小型の液晶(8キャラクタx2行表示)なので、
曜日まで表示すると、ちょっと見ずらくなるが、曜日まで表示することにした。
(最初、未定義のCG ROM領域に、曜日(漢字)キャラクタを登録して、粗くなるが
漢字で、(月)のように表示しようと考えたが、その領域が6キャラクタ分しかないので
7つの曜日を全て登録できないため断念し、Man,
Tue・・のように表示するようにした。)
表示例は以下の通り。
+-------+
03/15Sat
12:55:00
+-------+
・ソースは、このサイトを参考にしました。→ 「NXP LPC810を使った電子工作」
■ 2014.3.15
・RTC8564デモを、トラ技デモ・プロジェクトに追加した。
→ NotePadでソースを変更(一部は日本語コメントにしてみた。)
→ IDEを立上げる。
別段、エラー・ワーニング出ず。
→ ところが、main.cを参照しようと、エディタを立上げようとしたら、素直には立上らず、
(ソースを別エディタ(NotePad)で変更したからと思われるが・・・)
そのソースを表示するのに、[F5]キーを押す旨のメッセージが出たので、F5キーを押す。
→ IDEのエディタ立上る。
やはり、日本語コメントは表示できず。
そういうユーティリティがあるらしいが、今回は見送った。
→ IDEへのファイルの追加に、ちょっと悩んだが、とりあえずビルドまではOK
(ワーニングは何点か出たが無視した。)
・イージーミス他あったが、何とか動いた。
<最終回路図>
・こちらから、どうぞ→ 「トラ技ARM_I2C実験基板」 (自分用に作成した回路図で、温度・気圧モジュールは省略してます。)
<最終ソース(RTC追加分)>
・こちらから、どうぞ→ main.c
RTC8564.h
← 実験テーマ1に戻る TOP PAGEに戻る 実験テーマ49へ →