マイコン

(今さら) LPCXpressoでHEXファイル生成

プロジェクトの「Properties」→「C/C++ Build」→「Settings」→「Build Steps」で 「Post-build steps」の「Command」を編集し、下記のコマンドを追加する。 arm-none-eabi-objcopy -O ihex ${BuildArtifactFileName} ${BuildArtifactFileBaseName}.hex※ コマ…

SESでインクルードパスの設定

SES (Segger Embedded Studio) で、インクルードパスとライブラリパスを設定する方法をメモ。Project Explorerでプロジェクト名を右クリックして「Options」をクリック。コンフィギュレーションは「Common」を選択する。(「Debug」および「Release」は「Comm…

STM32CubeMXにMCUパッケージをインストール

インストール方法 CubeMXを起動し、「Help」→「Manage embedded software packages」をクリック。「STM32Cube MCU Packages」タブで所望のMCUシリーズ (ここではSTM32H7) の所望のバージョン (ここでは1.11.0) を選択し「Install」をクリック。 インストール…

nRF5xマイコンの評価ボード一覧

PCAからはじまる謎の番号があり、サンプルコードのプロジェクトのディレクトリもこの番号に従っているので分かりにくい。 PCA番号 チップ 評価ボード名 コア Flash RAM PCA10095 nRF5340 nRF5340 DK M33+M33 1MB+256kB 512kB+64kB PCA10056 nRF52840 nRF5284…

nRF52マイコンの開発環境構築 (Segger Embedded Studio)

Segger Embedded Studioのインストール 下記からEmbedded Studio for ARMをダウンロードしてインストールする。 SEGGER - The Embedded Experts - Downloads - Embedded Studio 必要なら下記から J-Link Software and Documentation pack をダウンロードして…

SPRESENSEでNeoPixel

ライブラリ Spresense Arduinoでは、Adafruit の Adafruit_NeoPixel ライブラリは使えない。。Spresense Arduino用のNeoPixelライブラリとしては、hideakitaiさんのSpresenseNeoPixel と、hideakitaiさんのnepils がある。nepils のほうが後発で、Adafruit_N…

メモ:NordicのSoftDevice

S11x : BLE Peripheral 専用 S12x : BLE Central 専用 S13x / S14x : BLE Central / Peripheral 両用 S2xx : ANT用 S3xx : BLE / ANT 両用 ZigBeeは SoftDevice ではなく nRF5 SDK for Thread and Zigbee を使用

SPRESENSEの digitalWrite は遅い

SPRESENSEのArduino環境のdigitalWrite関数は異様に遅い。例えば下記のようなスケッチを実行して、メインボードの27番ピンと28番ピンの波形をオシロで測定するとなんと6.4usecも時間差がある。つまりdigitalWrite関数の実行に6.4usecもかかっていることにな…

SPRESENSE用BLEベースボードでWebアプリと通信

やりたいこと スイッチサイエンスのSPRESENSE用BLEベースボードを使って PCまたはAndroidのブラウザ上のWebアプリと NUS (Nordic UART Service)で文字列の送受信をする SPRESENSE用BLEベースボードとは? SPRESENSEのB2Bコネクタを2.54mmピッチに変換する基…

SPRESENSEのピン番号確認用テストコード

SPRESENSEのピン番号対応 を確認するためのテストコード。 シリアルポートにピン番号の数字を入力すると、そのピン番号のポートがパタパタするのでオシロで確認する。 SPRESENSEではアナログピン(A0~A5)はデジタルのGPIOとしては使えないようだ。 String in…

SPRESENSEのピン番号対応表

SPRESENSEのメインボードと拡張ボードとB2Bコネクタのピン番号とArduino環境でのピン番号の対応表。ダウンロード → SPRESENSE_PINMAP.xlsx 確認用テストコード lipoyang.hatenablog.com

CubeMXでマイコン置き換え

やりたいこと CubeMXで作成したプロジェクトを別のマイコンに置き換える。 例として、STM32F767からSTM32H743への置き換えるものとする。 元のプロジェクトはCubeMXのプロジェクト(iocファイル)からIAR EWARMのプロジェクトを生成しているものとする。 iocフ…

STM32H7マイコンの注意点 (おまけ)

前回の記事(↓)のおまけ。DMAやFMC以外でトラブったところをメモ。 SPIがSTM32F7とは別物 F7とH7でSPIのハードウェアが別物。 HALライブラリを使うかぎりはほぼそのまま移植できる。 レジスタを直接叩いている場合は要注意。 CR1, CR2, SRなど、同名のレジス…

STM32H7でDMAやFMCを使う場合の注意点

STM32H7でDMAやFMCを使う場合の注意点まとめ。参考文献と参考記事も参照してください。 (1) DTCMにはDMAの手が届かない (2) DMA転送のデータが化ける (3) FMCも要注意 (とくにLCDを接続するとき) 参考文献 参考記事 (1) DTCMにはDMAの手が届かない 【問題】 …

M5Stackのあれこれ

I/Oの落とし穴 ただでさえ M5Stack は外に出ているI/Oピンが少ないが、それすら兼用ピンが多く注意を要する。M5Stack Basic について気付いたのは以下の通り。まだ他にあるかもしれない。また、M5Stack Core2とは異同があるので注意。 3 (RXD1), 1(TXD1) : U…

XIAOGYANでインターネットラジオ

XIAOGYAN (IoT ALGYAN 8周年記念ボード)で動作するインターネットラジオのサンプルコードです。 ※ XIAO ESP32「S3」用です。「C3」ではうまく動作しません。 参考 ESP32 でインターネットラジオ(Web Radio)を作る(ハマったこと) - Qiita ESP32-DevKitCで…

VSCodeで組込み系のソースを編集

やりたいこと VSCodeで組込み系マイコンのCソースを編集したい。 ビルドやデバッグは別のIDEでやるのでできなくていい。 前提 VSCodeに拡張機能 C/C++ がインストールされていること。 とりあえずこれだけで、構文ハイライトやナビゲーション、インテリセン…

Arduino IDEからPlatformIOへ移行

Arduino IDEの問題点 PlatformIOとは? PlatformIOの導入 プロジェクトの作成から書き込みまで プロジェクトの作成 ビルドと書き込み ポート指定 シリアルモニター ライブラリの導入 サンプルコード 既存のプロジェクトを開く 既存のArduinoスケッチのインポ…

XIAO nRF52840 のソフトウェアリセットとスリープ

リセット NVIC_SystemReset(); スリープ ウェイクアップ信号でリセットがかかることに注意。 (復帰ではない) バッテリー駆動でスリープ時にUSB接続してもリセットがかかる。 #define PIN_WAKEUP 7 // ウェイクアップピン pinMode(PIN_WAKEUP, INPUT_PULLUP_S…

XIAO nRF52840 のVBUS判定

Seeed Studio XIAO nRF52840 (以下、XIAO nRF) で、USBが接続されているか (VBUSが給電されているか) を判定する方法を調査した。 何がしたいか? XIAO nRFにはLiPoバッテリーを接続して給電/充電するパッドがある。USB接続されているときはマイコンにはUSB…

Seeed XIAO BLE nRF52840を試す

1. Seeed XIAO BLE nRF52840とは 2. Arduino開発環境 2.1 ボードの追加 2.2 ライブラリの追加 2.3 (捕捉) ボードとライブラリについて 3. Lチカ 3.1 オンボードのLED 3.2 NeoPixel 4. BLE 4.1 スケッチ 4.2 スマホで動作確認 5. 参考記事 1. Seeed XIAO BLE …

ArduinoでGPS

GPSモジュール 秋月でアンテナ付キットを購入。(2022/8/20現在、在庫切れ) GNSS(GPS・GLONASS・QZSS)受信機キット 1PPS出力 みちびき3機対応 アンテナセット付キット: 組立キット(モジュール) 秋月電子通商-電子部品・ネット通販 G…

メモ:ESP32(Arduino環境)のデバッグログ出力

ツール > Core Debug Level で出力を制御でき、printf()の書式が利用できる。 デフォルト(Core Debug Level が 「なし」のときはどれも出力されない) log_e() – Error (最低レベル) log_w() – Warn log_i() – Info log_d() – Debug log_v() – Verbose (最高…

メモ:IARのライセンス切り替え

ヘルプ > ライセンスマネージャ 製品リストから製品(IAR Embedded Workbench)をダブルクリック もし製品リストが表示されていなかったら、表示 > 製品リスト ライセンスの詳細で、選択されたライセンスをドロップダウンから選択してOK 製品リストで製品名の…

メモ:IAR EWARMで関数の最適化指定

#pragma で optimize の値を指定する。 none, low, medium, high, size, speed 等から指定する。 直後の関数にのみ影響する。 最適化レベルを下げる方向にのみ有効。(コンパイラオプションで指定した最適化レベルよりも高い場合は無視される。) size や spee…

Arduino IDE や IDE for GR のビルド出力先を固定する

Arduino IDE や IDE for GR のビルド出力先を固定したい場合、設定ファイル( preferences.txt )で build.path を指定する。 build.path=C:\tool\tempWindowsの場合、Arduino IDE の preferences.txt は下記のフォルダにある。 %LOCALAPPDATA%\Arduino15\ (通…

GR-ROSEのブートとプログラム書き込みの仕組み

この記事は がじぇるねGR Advent Calendar 2021 の18日目です。GR-ROSEのブートとプログラム書き込みの仕組みは、公式の資料がやや分かりにくかったので調査しました。 (ふつうに使うぶんにはほぼ必要ない知識です。)まず、起動時のシーケンスを概観すると下…

GR-ROSEで FreeRTOS vs Azure RTOS

この記事は がじぇるねGR Advent Calendar 2021 の14日目です。 GR-ROSEでは、FreeRTOSとAzure RTOSという2つのRTOSをお手軽に使うことができます。 この記事ではGR-ROSEでこの2つのRTOSを比較します。 FreeRTOSとAzure RTOSについて GR-ROSEでFreeRTOSとAzu…

Raspberry Pi PicoでPWM出力

ピン機能の設定 gpio_set_function()でピン機能をGPIO_FUNC_PWMに設定する。 RP2040には8つのPWMスライスがあり、各スライスにA/Bの2つのPWMチャンネルがある。 つまり最大8×2=16チャンネルのPWM出力が可能。 PWM周波数や分解能はスライスごとに設定できる。…

Raspberry Pi Picoの2つのArduinoサポートを比較

Raspberry Pi PicoはArduino環境で開発することもできる。Raspberry Pi Pico用のボードサポートパッケージはArduino公式版以外にフィルハワー伯爵版(?)なるものが存在するようだ。公式版はMbedの上にArduinoの皮かぶせたちょっとやっつけ仕事気味なかんじな…