X-fest Nike Board Project
Part2: ソフトウェア開発手法と
アプリケーションサンプルのデモ
22
はじめに
: Nike (ニケ)とは?
サモトラケのニケ
(Wikipediaよ
り引用)
「サモトラケのニケ」(
フラ
ンス語
: Victoire de
Samothrace,
英語
:
英語
:
Winged Victory,
ギリシャ語
:
Νίκη
της
Σαμοθράκης)は、
ギ
リシャ共和国
の
サモトラケ島
(現在の
サモトラキ島
)で発
掘され、現在は
ルーヴル美術
館
に所蔵されている勝利の女
神
ニケ
の彫像である。
ルーブルのサモトラケのニケ
33
1. ニケ・ボード・プロジェクトのコンセプト
コンセプト
アナログデバイス社製アナログ製品
(計測アンプ、
ADC/DAC、OPアン
プ、
D級アンプ、DC/DC)の動作の
回路の提供
アナログデバイス社製アナログ製品
の機能、特性の評価
フリースケール社製
32ビット
マイ
コン、
Coldfireを用いた容易なアナ
ログデバイス社製品、
PCM(相変化
メモリ)の制御
2x20外部ヘッダピン経由による、
ザイリンクス社製、
Spartan®-6
LX16評価キットとの接続
USBホスト&デバイス機能
アナログ・フロン
トエンド部
(Op-
Amp, ADC/DAC)
USB ミニ
AB コネクタ
Coldfire
マイコン
PCM(相変化
メモリ
)
電源部
センサー部
44
ニケ・ボード
: 主要デバイス
U1: ADMP401, iMEMS アンプ付きマイク USB mini AB コネクタ U10: MCF52258, 32ビット Coldfire® マイコン U13: PCM (相変化メモリ) (128Mビット) U6: AD5546, 16ビットDAC U2: AD7652, 16ビット 500ksps, PulSAR® ADC U14: ADXL335, 3軸センサIC U16: NCP361, USB 過電圧、過 電流保護IC U12: TMP36, 温度センサ U18: ADP2108, 600mA
3.3V生成DC-DC コンバ ータ U17: ADM825, リ セット付き電源監 視IC U19: ADM8828, 負 電源生成IC U4: ADM8538, 低消費電 力、高精度、オートゼロ オペアンプ U3: ADM8221, 高 CMRR プログラマブル ・ゲイン計装アンプ U7: SSM2305, 2.8W D級 オーディオ・アンプIC (モノラル)
U8: AD8512, JFET入力段 デュアルオペアンプ U5: ADR03, 高精度2.5V
電圧リファレンスIC U9: 2入力ックIC ORロジ
U15: MMA7361L, 3軸センサIC
アジェンダ
フリースケール社製、
32ビット
MPU Coldfire概要
ソフトウェアの構成説明
アプリケーション層のソフトウエア説明
開発環境の説明
デモの概要
ブロック図
ニケ・ボード構成 クロック 高速クロック: 48MHz RTCクロック: 32KHz ※MCUシステムクロック: PLLにて80MHzまで 逓倍 マイコンメモリ Flash ROM: 512Kバイト Bootローダー使用量: 4Kバイト メインプログラム使用量: 128Kバイト SRAM: 64Kバイト 外部バス接続 A/Dコンバータ: AD7652: 16ビット 500ksps, PulSAR® ADC D/Aコンバータ: AD5546: 16ビット電流出 力、低消費電力、4象限抵抗内蔵 DAC ※データ転送タイミングにDMAタイマーを使用 ※データ転送に DMAを使用 ■SPI I/F 128 Kbit PCM(相変化メモリ) ■GPIO LED x 2本 SW x 2本 ADC / DAC制御端子 ■USB (HOST/デバイス) マス・ストレージクラス ニケ・ボード QSPI 外部 バス DMA DMA TIMER DMA DMA TIMER GPIO USB デバイス/HOST MCF5225x ADC AD7652 DAC AD5546 PCMメモリ LED ×2 SW ×2 USBメモリ など PC7
MCF52257/8/9 MCU 概要
MCF52257/8/9: イーサネット & USB内蔵 MCU 概要 イーサネットコントローラ、USBコントローラを搭載し たワンチップ・コネクティビティ・マイコン イーサネット-USBを始め、様々なインタフェース変換 に対応可能 特長 CPUコア 最大76 MIPS@80MHz(Dhrystone 2.1 ) オンチップ・メモリ 最大64KバイトSRAM 最大512KバイトFlash 外部バス(16/8bit) 10/100イーサネットMAC PHY付きUSB2.0フルスピード・ホスト/デバイス/OTG コントローラ CAN 2.0Bコントローラ 8チャネル12ビットA/Dコンバータ タイマ機能 DMAタイマ、汎用タイマ、周期割込みタイマ、PWMタ イマ、WDT 多彩なシリアル・インタフェース: 3xUART、QSPI、2xI2C 仕様 電源電圧: 3.3V 単一電源 動作温度範囲: -40C~+85C パッケージ: 144MAPBGA, 144LQFP, 100LQFP MCF52257/8/9 ブロック図 オプション追加機能 システム インテグレーション UART RTC QSPI UART 拡張 積和演算器 V2 Cold
ColdFireFire®®
コア 8Ch, 12bit ADC 4 Ch DMA メモリ・オプション 512Kバイト Flash 64Kバイト SRAM 2 x I2C UART 2チャネル 割込みタイマ 8/4 Ch PWM 4Ch 16bit タイマ 4Ch, 32bit タイマ 256Kバイト Flash 32/64Kバイト SRAM CAN 10/100 FEC DMA EZPORT 外部バス 暗号化 機能 乱数 発生器 USB OTG
製品ウェブサイト
http://www.freescale.com/webapp/sps/site/prod_summary.jsp?code=MCF5225X
汎用入出力 ポート JTAG PLL BDMアジェンダ
フリースケール社製、
32ビット
MPU Coldfire概要
ソフトウェアの構成説明
アプリケーション層のソフトウエア説明
開発環境の説明
デモの概要
ボードを動かすソフトウエアの構成
マイコンは、下記の二つのソフトウエアを実装しています。
ブートローダープログラム
(0x00000420 ~
0x00003FFF)
起動時に動作するファームウエアの書換えを行うプログラム
ボードのマイコンに書き込み済み
BDMや、JTAG TOOLでしか書換えができない。
ユーザーソフトウエア
(0x00004000 ~0x0007FFFF)
本ボードのメインソフトウエア
ブートローダーで書換えできます。
10
MCF52258 メモリマップ
FLASH MEMORY
配置メモリ領域: 0x00000400 ~ 0x0007FFFF
VECTOR TABLE: 0x00000000 ~0x00000400
VECTOR TABLEデータ (RESET時の起動アドレス、割り込み処理アドレス) 領域
RESET時の起動アドレス:BOOTローダーのスタートアドレス 割り込み処理関数アドレス:0x00004008固定 BOOTプログラム: 0x00000420 ~ 0x00003FFF BOOTローダーのプログラム領域 ユーザー・ソフトウエア起動時、0x00004000へジャンプ ユーザー・ソフトウエア: 0x00004000 ~0x0007FFFF ユーザー・ソフトウエアのプログラム領域 0x00004000: ユーザープログラムスタートアドレス 0x00004008: 割り込み処理アドレス SRAM MEMORY 配置メモリ領域: 0x20000000 ~ 0x2000FFFF BOOTローダー / ユーザー・ソフトウエアのRAMメモリ SYSTEM MEMORY 配置メモリ領域: 0x40000000 ~ 0x4001FFFF マイコンのペリフェラル設定メモリ MINI-FLEXBUS 配置メモリ領域: 0x80000000 ~ 0xFFFFFFFF 外部バスメモリ領域 0x80000000 ~0x80000001: ADCアクセス用メモリアドレス 0x80000010 ~0x80000011: DACアクセス用メモリアドレス
ブート・ローダー概要
ブート・ローダー
電源起動時に動作するプログラム
2つの機能
1. メイン・プログラムの起動
2. メインプログラムの書換え
USB経由による書き換え
※ 書き換えるファイルは、統合環境
CodeWarriorなどで ビルドしたS19ファイルです
。
12
MQX OS概要
MQX OSとは?
MQX OS 概要
フリースケール・セミコンダク社製プ
ロセッサに
15年以上
対応している実績
無償
統合ソフトウェア
今後、
さまざまなフリースケール・
セミコンダクタ社製プロセッサに対応
予定
基本ソフトウエアは、フリースケー
ル・セミコンダクタ社から提供される
MQX Software Solutionsに同梱
実績と応用製のある豊富なサンプル・
ソフトウェア
フリースケール・セミコンダクタ社製、
MQX
OS紹介ホームページ
http://www.freescale.com/webapp/sps/site/ homepage.jsp?code=MQX_HOMEユーザーソフトウェア構成説明
ソフトウェア構成
フリースケール・セミコンダクタ社製
MQX OS
を搭載
BSP(ボードサポートパッケージ)
ニケ・ボード用のドライバを実装 PCMメモリドライバ ADC/DACドライバ センサ・ドライバ 加速度センサ/温度センサ RTCドライバ USBデバイス / ホスト(実装可)PSP(プラットフォーム・サポート・パッケー
ジ)
プラットフォーム用のサポートパッケージミドルウエア
ファイル・システム USBホスト / デバイス・スタック シェル・プログラム シリアル・インターフェイス経由による、 コマンド・コンソールユーザーソフトウエア(ブロック図)
ドライバ タイマドライバ アプリケーション部分 ミドルウエア MFSモジュール DACドライバ ADCドライバ SW/LEDモジュール 信号処理モジュール USBモジュール ADC ドライバ API DM Aタイマ DM A ISR ハンドラ QSPI ISR ハンドラ DAC ドライバ API UARTドライバ UART ドライ バAPI GPIOドライバ LED/ SW 関数API PCMドライバ PC M ドライバ API USBドライバ USBドライバ API タイマド ラ イバAP I タイマ タイマ I S R ハン ド ラ UART GPIO QSPI USB Sh e llモジュール DM A UART ISR ハンドラ DM Aタイマ Sh e l l API関数 M FS API関数 USB処理 タス ク USB C al lbac k Attach/De t t ac h イベント 設定/ 登録 Attach/De t t ac h 設定/ 登録 DM A C ALLBAC K 関数 エ フェクト 処理API 信号処理 API関数 Sh e llモジュール Sh e ll 処理 タスク SW / LED 処理タスク File Syste m処理モジュール fi le syst e m 処理タスク 信号処理 タスク Se n sor ドライバ A/ D Se n so r ドライバAPI ADC ハンドラ ADC T im e r ハンドラ A/ D T IMER センサ処理モジュール センサー 処理タスク ・ 転送タイミング ・ 割り 込み要求 ・ ADC データ ・ 設定 ・ ADC 入力開始/ 停止 ・ ADC データ ・ サンプリ ング周波数 ・ DAC データ ・ 転送タイミ ング ・ DAC データ ・ 割り込み要求 ・ 設定 ・ シ リ アル送受信 ・ 送信データ ・ 設定 ・ 割り 込みイベント ・ 送受信データ ・ 送受信完了 ・ 送受信データ ・ 制御データ ・ At t ac h 時 設定/ 登録/ 削除 ・ A/ D値 ・ A/ D値 タイミ ング ・ 設定 ・ 設定 ・ チャンネルのAD値読み出し(r e ad) ・ 設定/ 登録(Ope n ) ・ 信号入力イベント ・ LED点灯/ 点滅/ 消灯 イベント通知 ・ 再生/ 録音イベント・ Sign alへ Effc t / Ban k 切り替えイベント センサーのA/ D値
fil e syst e m 処理API関数
・ REC / PLAY イベント通知 ・ REC / PLAY データ
・ REC / PLAY / ST OPイベント ・ REC / PLAY データ ・ REC/ PLAY データ ・ ア ナログ データ ・ LED 点灯/ 消灯 ・ SW信号 ・ 設定 ・ 割り 込み要求 ・ 割り 込み ・ 出力信号データ ・ DAC 出力開始 ・ DAC 出力停止
15
ADC/DAC 制御ソフト概要
ADC/DAC制御
外部
16bitバスI/Fに接続
DMAタイマを使ったDMAデ
ータ転送
DMAタイマ設定時間
= サ
ンプリングタイム
ADC Read after Convertモ
ードを使用
注意点
ADCとDACのデータ仕様が
異なるため
計算が必要
ニケ・ボード 外部 バス DMA DMA TIMER DMA DMA TIMER GPIO MCF5225x ADC AD7652 DAC AD5546ADCデータ仕様
DACデータ仕様
PCMメモリ16
DMAの使い方(1)
DMAを使用する利点
MCUの処理軽減のため
MCUは、20μsごとの信号処理が必要なとことが、DMAを使うことで、
6msごとに信号処理を行うことで
対応が可能になる。
ADC/DACでの
DMAの使い方
20μSecごとに
2バイト転送します。
この20μSecは、DMAタイマで作ります。
1200バイト転送するとDMA割り込みが発生する。
DMAタイマ
外部バス
内部メモリ
20μSecごとに
DMA転送要求
DMA
2バイト
転送
50Khzサンプリングの場合
内部メモリ
内部メモリ
内部メモリ
DMA割り込み
タイマを
20μSec
でオーバフローす
るように設定
1200バイト転送で
割り込み発生する
。
17
DMAの使い方(2)
DMAタイマ リセット処理
/* リセット処理 */
dmatim_ptr->DTMR = dmatim_ptr->DTMR | MCF5225_DTIM_DTMR_RST; dmatim_ptr->DTMR = dmatim_ptr->DTMR & (~MCF5225_DTIM_DTMR_RST);
dmatim_ptr->DTMR = (MCF5225_DTIM_DTMR_PS(0))|(MCF5225_DTIM_DTMR_CE_NONE) |(MCF5225_DTIM_DTMR_ORRI)|(MCF5225_DTIM_DTMR_FRR) |(MCF5225_DTIM_DTMR_CLK_DIV1); dmatim_ptr->DTXTMR = (MCF5225_DTIM_DTXMR_DMAEN); dmatim_ptr->DTER = MCF5225_DTIM_DTER_REF; dmatim_ptr->DTRR = MCF5225_DTIM_DTRR_REF((BSP_SYSTEM_CLOCK/ad7652_bps_data)); dmatim_ptr->DTCN = MCF5225_DTIM_DTCN_CNT(0); dma_ptr->BCR = dma_ptr->BCR|MCF5225_DMA_BCR_DSR(MCF5225_DMA_DSR_DONE); scm_ptr->DMAREQC = 0x4;
dma_ptr->SAR = (unsigned long)0x80000000L;
dma_ptr->DAR = (unsigned long)&pad7652_mem_dma_in->mem.data[0]; dma_ptr->BCR = MCF5225_DMA_BCR_BCR((ad7652_dma_size*2)); dma_ptr->DCR = (MCF5225_DMA_DCR_INT)|(MCF5225_DMA_DCR_CS) |(MCF5225_DMA_DCR_DSIZE(MCF5225_DMA_DCR_DSIZE_WORD)) |(MCF5225_DMA_DCR_DINC) |(MCF5225_DMA_DCR_SSIZE(MCF5225_DMA_DCR_SSIZE_WORD)) |(MCF5225_DMA_DCR_BWC(0));
dma_ptr->DCR = dma_ptr->DCR |MCF5225_DMA_DCR_EEXT; /* Timer Enable */
dmatim_ptr->DTMR = dmatim_ptr->DTMR | MCF5225_DTIM_DTMR_RST;
DMAタイマ設 定 20μSec設定 DMAタイマの要求 でDMAを起動 する設定 DMAの転送元/ 先のアドレス、 転送サイズなど の設定 DMAの転送開始 DMAタイマ スタート
18
PCMメモリ 制御ソフト概要
PCMメモリ制御
File Systemの“A:”ドライブに割り当て
容量
128Mbit(16Mバイト)
ファイルシステム
:
15.9Mバイト
システム設定用メモリ
: 0.1Mバイト
ADC アナログ信号記録時間
50Khzサンプリング時:
約
2分39秒
10Khzサンプリング時:
約
13分13秒
転送レート
WRITE時転送レート:約160Kバイト/s
READ時転送レート:約512Kバイト/s
※エラッタは存在しますがソフトウェア
処理に大きく関係するものはありません。
ニケ・ボード 外部 バス DMA DMA TIMER DMA DMA TIMER GPIO MCF5225x ADC AD7652 DAC AD5546 PCMメモリPCM(相変化メモリ)のセル構造
ファイルシステムへの実装方法
MFSファイルシステムについて
※
MFS: Freescale MQX File System
MS-DOSベースのファイルシステムに対応
FAT12、16、32に対応
フォーマット仕様は、コンフィグ設定で
変更可能
実装手順
1.
PCMメモリデバイスドライバをOPENする。
pcm_dev_handle1 = fopen(“PCM:", 0);
2. 関数_io_mfs_installにより
a:ドライブとして認識させる。
_io_mfs_install(pcm_dev_handle1, "a:", (_file_size)0);
3.
aドライブをOPENする。
a_fd_ptr = fopen("a:", NULL);
※もし、
DISKが未フォーマット時は
自動フォーマットを行
21 21
ちなみに、
3軸加速度センサとは…
アナログ・デバイセズ社
製、
3軸加速度センサ:
ADXL335
低消費電流
: 350μA
動作電圧
: 1.8V~
3.6V 単一電源
耐衝撃
: 10,000g
高性能の温度安定性
フリースケールセミコン
ダクタ社製、
3軸加速度
センサ
: MMA7361L
低消費電流
: 400μA
(スタンバイ時
3
µA )
動作電圧
: 2.2 V ~
3.6V 単一電源
高性能の温度安定性
U14: ADXL335, 3軸センサIC
センサー・ソフト概要
センサーの
Self Test、g-Detect(MMA7361Lのみ1.5g固定)機能は不使用
センサーのg-selectはデフォルトで使用
(ADXL335は1g、MMA7361Lは1.5g)
200ms(変更可)毎にX, Y, Z軸のADC値(12bit)を計測
各軸の
ADC値の変化量を計測
変化量が一定以上の場合どの軸が変化したか信号処理へ通知
信号処理へ通知したあとは、一定期間通知しない
+方向の移動
X軸が変化したことを通知
-方向の移動
アジェンダ
フリースケール社製、
32ビット
MPU Coldfire概要
ソフトウェアの構成説明
アプリケーション層のソフトウエア説明
開発環境の説明
デモの概要
26
アプリケーション例
: ギターエフェクト
3軸加速度センサによる、音声エフェクトの切り替え
3種類のギター用のエフェクト
エコー
/ ファズ
/ ピッチシフター
Echo Effect
Fuzz Effect
LPF
Pitch
Effect
MUX
MUX
3-Axis Accelerometer
3軸加速度センサー
による、エフェク
トの切り替え
27
アプリケーション例
-エフェクト処理(1)
エコーエフェクト
音に臨場感を与える効果です。
フィードバックを採用しています。
フィードバックにゲインをかけると
ハウリング効果が発生
します。
ミキシング時に
音は小さくなるのでゲインをかける必要が
あります。
Time Delay + +FA
X[n] y[n]d:Time Delay時間
α:ゲイン
28
アプリケーション例
-エフェクト処理(2)
ファズ・エフェクト
音を大きく歪ませるエフェクト
マイナス信号をプラス側に変更後、波形を歪ませ
る処理を行います。
また、音量が小さくなるのゲインをかけます。
波形イメージ
29
アプリケーション例
-エフェクト処理(3)
ファズ・エフェクトのフローチャート
ファズ
処理
x[n]
x[n]< 0 0≦x[n] y〔n〕 ← x〔n〕* -1 y[n] ←x[n] y[n] y[n] > P y[n] ≦P y〔n〕 ← -P y[n] ← y[n] * αP: ひずみ値
α: ゲイン
x[n]P
α
y[n]
ブロック・ダイアグラム
フローチャート
30
アプリケーション例
-フィルター処理
フィルター処理は、
Complimentary
ColdFire DSP LibraryのLow-Pass
Filterを使用しています。
フィルターのパラメータは、
Complimentary ColdFire
DSP Library紹介ページで提供
されているものを使用していま
す。
Complimentary ColdFire DSP Library
概要
下記のフィルターが実装できま
す。
High-Pass Filter
Low-Pass Filter
Notch Filter
Band-Pass Filter
Complimentary ColdFire DSP Library紹介ホームページ
http://www.freescale.com/webapp/sps/site/homepage.jsp?code=CFDSPLIBRARY&tid=t3pspmcf
5222x
デモ・アプリの主な機能
ADC/DACのループバック機能
PCMメモリへ記録/再生機能
信号のエフェクト機能
ファズ、ディストーション、エコー、ピッチシフトなどを対応
シリアルによる
シェルコマンド機能。
簡易デバッグ機能も備えています。
開発中ですが
USBによる事前に記録してある音声ファイルの読みだし書換え機能
市販の
USBメモリに音楽データの再生
などの機能を予定しています。
アイデア募集中です。
アジェンダ
フリースケール社製、
32ビット
MPU Coldfire概要
ソフトウェアの構成説明
アプリケーション層のソフトウエア説明
開発環境の説明
デモの概要
開発環境 & 開発ツール
開発環境
CodeWarror ColdFireV2.V3.V4用無償版に対応
※コード上限制限
128Kバイト
Patchファイル(CWCF_V7_1_1.exe)をインストールする必
要があります。
開発ツール
ニケ・ボード標準装備
Bootローダーによる、メイン・プログラムの書換えが可能
シリアル接続することにより
メモリ・リード
/ライトなどの
簡易デバッグ機能を実装
オプション
USBマルチリンクに対応: ファームの書換え、デバッグ等が
CodeWarrior統合開発環境より可能
34
Bootローダー書換え手順(1)
Bootローダー書換え手順
準備
ニケ・ボード、
PC及びUSBケーブルを用意します。
ニケ・ボード側のコネクタは
Mini ABコネクタのものが必要です。
※
ケーブルは付属しておりません。
プロジェクトを
CodeWarriorでビルドし、xxx.S19ファイルを作
成します。
USB35
Bootローダー書換え手順(2)
Step 1.
下記の操作を行うと
Bootローダーのメインプログラム書換えプログラムが起
動します。
1.
USBケーブルをNike Boardとパソコンに接続します。2つの緑色LEDが交互に
点滅します。
2.
SW2と
Reset SWを同時に押します。
3. その後Resetを離してから、SW2を離します。ブートローダモードに入ると、
2つの緑色LEDが点灯します。
リムーバル・ディスクが表示されていることを確認してください。
RESET SW
SW2
36
Bootローダー書換え手順(3)
Step 2.
アップデートするファー
ム・ファイルを
リムーバ
ル・ディスクへ、ドラッ
グ&ドロップします。
Step 3.
ニケ・ボードの
RESET
SWを押すと新しいプログ
ラムが起動します。
37
ブートローダの書き換え手順
(動画)
デモ概要
シェル・コンソールのデモ
(動画)
エフェクト・アルゴリズムのデバッグ
3軸センサによるエフェクトの制御
(動画)
3軸センサと信号処理ブロック結合デバッグ
音声エフェクトのデモ
(ライブ)
本資料の内容の所有権はアヴネット・ジャパン株式会社に帰属します
シェル・コンソール上で音声イフェクトを制御
41
3軸センサによるエフェクトの制御
42