LPC11xx

新版FM音源プログラム (25)

armcc のエンベデッド・アセンブリ関数で書いた「アキュムレータ機能」付きのスロット計算関数「acc_calc_slot()」の Cortex-M0 版のリストを下に示します。

新版FM音源プログラム (19)

今回からは実行サイクル数の検討に入ります。 まずは、ARMv6-M アーキテクチャの Cortex-M0 である NXP LPC1114、Cypress PSoC4 から始めます。 アセンブリ言語で書いたスロット (オペレータ) 計算プログラムをコンパイルして得られたオブジェクトを逆アセン…

ICSP 接続で PIC32MX のフラッシュに書き込む (16)

単価 380 円で秋月で販売されている PIC32MX270F256B-50I/SP (クロック 50 MHz / フラッシュ 256 KB / SRAM 64 KB) に LPC1114FN28/102 使用の ICSP ライタで書き込めることを確認しました。 PIC32MX220F032B 用の USB MIDI ホスト・プログラムの HEX ファイ…

ICSP 接続で PIC32MX のフラッシュに書き込む (15)

約半年前 (2014 年 4 月) から単価 360 円で秋月で販売されている PIC32MX250F128B (フラッシュ 128 KB / SRAM 32 KB) に LPC1114FN28/102 使用の ICSP ライタで書き込めることを確認しました。 PIC32MX220F032B 用の USB MIDI ホスト・プログラムの HEX フ…

LPC810M021FN8 (20) -- トラ技 ARM ライタ (1)

トランジスタ技術 2014 年 3 月号付録の「トラ技 ARM ライタ」で LPC810 と LPC1114FN28/102 に書き込めることを一応確認しました。 これは、LPC1114FN28、LPC810 両対応の LPC800-MAX 用ファームウェアを書き込んで、トラ技 ARM ライタを mbed インターフェ…

ICSP 接続で PIC32MX のフラッシュに書き込む (14)

LPC1114 / NUC120 / ATmega / Arduino 共用のソース・パッケージと、Arduino のスケッチをアーカイブしたものを公開しました。(→ こちら) ファイル名は。LPC1114/NUC120/ATmega/Arduino 版、Arduino スケッチ版それぞれ、 pic_icsp-20130722.zip icsp_arduin…

ICSP 接続で PIC32MX のフラッシュに書き込む (12)

LPC1114 / NUC120 / ATmega 共用のソース・パッケージを公開しました。(→ こちら) ファイル名は pic_icsp-20130706.zipです。 Atmega 版のソース・プログラムは C 言語で記述されたプログラムとなっており、Arduino の「スケッチ」としては実現できていない…

ICSP 接続で PIC32MX のフラッシュに書き込む (10)

LPC1114 / NUC120 共用のソース・パッケージを公開しました。(→ こちら) ファイル名は pic_icsp-20130619.zipです。

PIC32MX220F032B ベースボード (3)

今回作成したベースボードの LPC1114FN28/102 (ICSP プログラマ) 部分と PIC32MX220F032B との接続部分の回路図を下に示します。 前回の回路と違うのは、 USB デバイス/ホスト接続のための回路 ICSP プログラマ部分との切り離しに対応 Pinguino MX220 の回路…

PIC32MX220F032B ベースボード (1)

PIC32MX220F032B には USB OTG モジュールが内蔵されていて、USB デバイスにも USB ホストにもなれます。 しかし USB ホストとして機能するためには接続する USB デバイスに対して電力を供給する能力が必要とされます。 そこで、USB 関係の実験のために外部…

LPC1114FN28/102 (23) -- ICSP 接続で PIC32MX のフラッシュに書き込む (8)

icsp1114 のソース・パッケージを公開しました。(→ こちら) それにともない、HEX パッケージは削除しました。 参考にした「pic32prog」が GPLv2 ライセンスなので、CMSIS ライブラリ関連を除き、GPLv2 ライセンスを継承しています。

LPC1114FN28/102 (22) -- ICSP 接続で PIC32MX のフラッシュに書き込む (7)

LPC1114 用のプログラムができました。 Yahoo! ボックス上においてあります。(→ こちら) とりあえず、HEX パッケージのみを公開します。 ソース・パッケージは近日公開の予定です。 (2012/12/30 追記: ソース・パッケージを公開しました。それにともない、HE…

LPC1114FN28/102 (21) -- ICSP 接続で PIC32MX のフラッシュに書き込む (6)

「Psuedo Operation」の「SendCommand()」は JTAG TAP (Test Access Port) のインストラクション・レジスタ (IR) に値を設定するもので、「XferData()」はデータ・レジスタ (DR) に値を設定すると共に、その値が書かれる前の DR の値を読み出す操作です。 両…

LPC1114FN28/102 (20) -- ICSP 接続で PIC32MX のフラッシュに書き込む (5)

JTAG インターフェースには (プローブ側から見れば) TDI と TMS の 2 本の出力があり、TDO の 1 本の入力があります。 TDI と TMS は独立で、ハードウェア的に言えば、それぞれがパラレル・データから「シリアライズ」されてシリアル・データとして出力され…

LPC1114FN28/102 (19) -- ICSP 接続で PIC32MX のフラッシュに書き込む (4)

前回述べた「キー・シーケンス」を発行したあと、ターゲットが正常に ICSP モードに移行したかどうかを簡単に直接的に調べる方法は存在しないようです。 プローブ側から ICSP モードで、まず IDCODE レジスタやステータス・レジスタを読み出して、期待した値…

LPC1114FN28/102 (18) -- ICSP 接続で PIC32MX のフラッシュに書き込む (3)

「110 円のマイコンで 220 円のマイコンに書き込む」シリーズの 3 回目ですが、「書き込む」側と「書き込まれる」側を明確にするために、タイトルを少し変えました。 進展としては、いわゆる「LED チカチカ」プログラム (Microchip 社のコンパイラ XC32 に付…

LPC1114FN28/102 (17) -- ICSP 接続で PIC32MX のフラッシュに書き込む (2)

前回の記事の最後に示した図を下に再掲しますが、これは Microchip 社のドキュメント PIC32MX Flash Programming Specification (DS61145 Revision K, July 2012) の pp.13 「Figure 5-4」を書き直したものです。 JTAG の 1 クロック分と、2-wire 4-phase IC…

LPC1114FN28/102 (16) -- ICSP 接続で PIC32MX のフラッシュに書き込む (1)

LPC1114FN28 を使って、PIC32MX マイコンのフラッシュにプログラムを書き込む実験をしています。 4 線式 JTAG 接続ではなく、2 線式の ICSP 接続 (2-wire 4-phase) を LPC1114 の SPI (4 ビット転送モード) を使って実現しています。 PC とはシリアル接続を…

LPC1114FN28/102 (15) -- リニア PCM プレイヤー (3)

LPC1114 では GPIO (汎用入出力ポート) は AHB に接続されており、ウェイト・ステートなしで動作します。 そのため、ポートに対して出力する場合の Cortex-M0 の STR 命令の実行クロック数は、本来の値の「2」から増えることはありません。 逆に言えば、GPIO…

LPC1114FN28/102 (14) -- リニア PCM プレイヤー (2)

リニア PCM プレイヤーでは、MMC/SD カードから読み出したウェーブ・データを、せいぜい 8 ビット・オフセット・バイナリ形式から 2 の補数 16 ビット・データに変換する程度で、特に複雑な「処理」はせずに DAC に流しこみます。 特に 16 ビット・ステレオ…

LPC1114FN28/102 (13) -- リニア PCM プレイヤー (1)

LPC1114FN28/102 で MMC/SD カード内の (mp3 でない) リニア PCM ファイルを再生するプレイヤーを作っています。 とは言っても、実用的なものを目指してはいないので、持ち運びできる形にするわけではありません。 MMC/SD カードは「ネイティブ・モード」で…

LPC1114FN28/102 (12) -- IRQLATENCY レジスタ (5)

STMicroelectronics 製の Cortex-M3 マイコン STM32F10x シリーズでは、フラッシュからの読み出しに際して挿入する必要のあるウェイト・ステート数 (WS) について、システム・クロック (SYSCLK) との間に次のような関係があります。 0 MHz 24 MHz 48 MHz 「S…

LPC1114FN28/102 (11) -- IRQLATENCY レジスタ (4)

ARM 社発行の文書 Application Note 226Using the Cortex-M0 on theMicrocontroller PrototypingSystem には、「HMALC-AS3」という「Microcontroller Prototyping System」についての説明が記述されています。 その実体は、「CPU FPGA」と「DUT FPGA」と称す…

LPC1114FN28/102 (10) -- IRQLATENCY レジスタ (3)

ユーザ・マニュアルなどの技術文書に明確な記載はないものの、ブローシャなどプレゼンテーション用資料には「割り込みレイテンシ 16 クロック」と記載されいる数値と、LPC1114FN28/102 の実測結果の 22 クロック程度の数値との違いが腑に落ちず、いろいろ「…

LPC1114FN28/102 (9) -- IRQLATENCY レジスタ (2)

SysTick タイマは、24 ビット幅のダウン・カウンタによる簡単なインターバル・タイマで、一定周期で CPU に割り込みをかけるのを目的としています。 コア・ペリフェラルとして ARM 社から供給される IP 内に含まれるので、半導体ベンダ独自の周辺モジュール…

LPC1114FN28/102 (8) -- IRQLATENCY レジスタ (1)

LPC1114FN28/102 で割り込みレイテンシを調べていて、LPC111x / LPC11C1x のユーザ・マニュアル (UM10398) には記載がない「IRQLATENCY」レジスタ (アドレス 0x40048170) が存在し、機能することを確認しました。 「IRQLATENCY」レジスタは、 LPC11Uxx のユ…

LPC1114FN28/102 (7) -- 円周率の計算 (11)

LPC1114FN28/102 で Spigot アルゴリズムを使って円周率Πの値 500 桁を UART 経由でシリアル回線に出力するプログラムを作りました。 プログラムの大きさは、フラッシュに書き込むサイズとして 0x47c = 1148 バイトです。 ターミナル・ソフト (tt.exe) でキ…

LPC1114FN28/102 (6)

外付けディジタル・オーディオ DAC および内蔵タイマを PWM DAC として使って約 440 Hz の正弦波を発生させる前回のプログラムを、LPCXpresso IDE でビルドして動作させることができました。 トラ技 2012 年 10 月号付属の DVD-ROM に収録されている LPCXpre…

LPC1114FN28/102 (5)

LPC1114FN28 の内蔵タイマを利用した PWM DAC および外付けディジタル・オーディオ DAC でオーディオ信号を発生させるプログラムを作りました。 プログラムのソースは記事の最後で示します。 外付けディジタル・オーディオ DAC は、いつもの ROHM BU9480F で…

LPC1114FN28/102 (4)

Windows 用のターミナル・ソフトとしては、「TeraTerm」と、Windows XP までは標準でバンドルされていた「ハイパーターミナル」とが有名ですが、これらはいずれもシリアル回線が接続されると有無を言わせず DTR(Data Terminal Ready) をアサートします。 こ…