ESP32-S3のPCNTをPlatformIO版ESP-IDF V5で使う

カテゴリー: ESP32

2023/1/4 文章修正と内容訂正しました。

2023/4/12 ESP-IDFバージョンについての記述を追加しました。

公式版ESP-IDFのAPIはV4.4からV5へのバージョンアップで大幅に仕様が変わっていました。

PlatformIO版ESP-IDFはV6が公式版V5に相当します。これがややこしく、私も混同していましたので、以下のPCNTについての内容はPlatformIO版V5では公式版V5の記述ができない、という至極当然のことだったわけで、訂正いたします。

PCNTも含まれ、記述や関数名が変わっています。参考はここ

ところが、PlatformIOでESP32-S3をESP-IDF V5.1.1で開発してみると、新しい仕様のPCNTが使えない。無理やり「pulse_cnt.h」「pulse_cnt.c」を組み込んでも当然ながらframeworkにhalのドライバが存在しないのでリンカが通らない。なにより小手先の対策はESP-IDFのバージョンを変えるとフレームワークも一新されるので得策ではありません。

今回はレガシィ記述でPCNTを使うことにしました。その覚書です。

続きを読む…

ESP32-S3:VScode+PlatformIOで生成したバイナリをesptoolで量産書き込み

カテゴリー: ESP32

VScode+PlatformIOで開発したコードは、PlatformIO→UpLoadで書き込めますがBuildも含まれるので複数枚書き込みには適しません。

そこで、VScodeが吐き出したコードを単体のFlashプログラマとして「esptool」で量産書き込みする覚書です。私の環境はESP32-S3ですが、ESP32全般でたぶん使えると思います。

続きを読む…

PlatformIOのESP-IDFのバージョンを指定する方法 

カテゴリー: ESP32

Espressif IDEの公式HELPでは4.4.3ですが、2022/11現在のPlatformIOのESP-IDFの最新バージョンは5.2.0です。

ただ、ESP32-S3での5.2.0では、ブートからうまくいかないのでいろいろなバージョンを試しています。

 

バージョンを細かく設定する方法

最新バージョンはgitから

最新バージョンは、platformIO.iniのplatform項目にgitを直接指定します。

[env]
platform = https://github.com/platformio/platform-espressif32.git

これで最新バージョンが適用されます。適用後のPlatformIOのinstallを見るとV5.2.0+パッチが適用されていました。

常に更新されているようです。

 

過去バージョンは、platformio.iniで直接バージョン指定

過去バージョンが存在するバージョンは

https://github.com/platformio/platform-espressif32/releases

から確認できます。

ここから希望のバージョンをピックアップし、PlatformIOのplatform=espressif32に後に@x.x.xを追加します。

例としてV5.1.1なら

[env]
platform = espressif32@5.1.1

だんだん使いやすくなってるようです

まだまだ、いろいろ試さなければなりませんが、バージョン設定などの操作は徐々にやりやすくなってるみたいです。

ESP32-S3-1-N16R8を試してみる-USBIFでCDCデバイス

カテゴリー: ESP32

ESP32-S3モジュールは相当魅力的ですが、情報量が少ないので、少しづつ自分なりに確認していきます。開発環境はVScode+PlatformIO ESP-IDF版です。
 今回は、ESP32-S3-1-N16R8で、JTAG用のUSBをCDCデバイスとして設定してみた覚書です(windows限定です)。

2022/11/28追加 sdkconfig.xxxの更新方法

続きを読む…

MPLAB Xでフォルダ名に日本語を使うとエラー

カテゴリー: PIC

こんなことは、すでに何回も痛い目にあっているのですが、ついついやってしまう。

今回も既存のプロジェクトをコピーして、ついつい「○○テスト」というフォルダ名にしてしまった。

案の定、正体不明のjavaエラーで構築が一向に終わらない。その様子です。

構築に成功しているプロジェクトをベースにしたはずが・・・

コンパイルは成功するのですが、最後のロードの先が進まない

Java lang.IlleagalArgumentException:・・・メッセージの後に進まない。

最下段の緑のインジケーターが終わらないのだ

フォルダ名から日本語を抜いて解決

大見出しですでに言ってるので、それ以上はありませんが、MPLABXに限らず「うっかりフォルダ日本語名」は絶対やらないという縛りで解決するので、プロジェクトのフォルダ名ぐらいは頑張って英字で決めてゆきたいと思います。

私自身は英語不得意なので、カッコ悪いですけどローマ字表記で頑張ります。

「回転装置」→「kaitensouchi」、カッコ悪いですが、私には分かり易いので・・・

VMwareのゲストOS Windows7で、PSoCDesignerを動かした。

カテゴリー: PSoC,ソフトウェア

久々にPSoC1のプロジェクトを修正することになりました。開発環境はPSoCdesignerです。

メインPCではアンインストールしてあったので、再インストールです。

Windows11ではSVGビューワがうまく動かない

PSoC1は内部ブロックの設計にSVGviewerが使われているらしく、Windows11ではインストール時に不適合のメッセージがでます。実行させてもそこだけ抜けていました。

Windows7で動かそう

そこで、先日VMware Workstation 16 PlayerにインストールしたWindows7で実行させてみました。

結果は一発OK、USBをゲストに繋ぎ変えてMiniProg/MiniProg3も普通に動作しました。

めでたしめでたし

VMware Workstation 16 PlayerにWindows7を導入。VMwareToolsインストールに少してこずる。

カテゴリー: ソフトウェア

VMwareToolsの導入に少し苦労したので覚書

ゲストOSはWindows7 HomePremium 32bit SP1

OS本体はすんなりインストール完了!

ディスクを入れ「新規仮想マシンの作成(N)」からインストール

あれれ?!「VMwareToolsのインストール」がブラックアウト

そこで、VMwareToolsの手動インストールすることにしました。

VMwareToolsのダウンロードページから、12.1.0をDL。Windows7 SP1 or laterとあるのでインストール条件はOKのはず

解決しないので、SP1上書きと更新プログラム適用を行うことに

まず、SP1をもう一度上書きインストールしてみる。Windows7 SP1のインストールページから手動インストールファイルをDL。

その後、VMwareToolsのコミュニティページで更新プログラムを適用する回答があったのでやってみる。

DLしたファイルはUSBメモリ経由でゲストOSへコピー

いずれもゲストOSで実行するものです。

この時点では、VMwareToolsが無効なので、まだD&Dやファイルの共有もできません。そこでUSBメモリ経由でゲストOSへパッチをコピー。

二番目のexeファイルはSP1インストールファイル

順番としては、

  1. kb976932 SP1再インストール(結果的にしなくても良かったかも・・・)
  2. KB4474419
  3. KB4490628
  4. KB4536952
  5. KB4534310

インストール後は再起動。Windows 7 のサポートが切れていますというメッセージが出たら、手順がうまく行ったことらしい。

パッチは無事クリア。VMwareToolsのインストールも無事終了。

コミュニティのおかげで助かりましたm(_ _)m

ESP32-S3-1-N16R8を試してみる-GPIO動作

カテゴリー: ESP32

ESP32-S3モジュールは相当魅力的ですが、情報量が少ないので、少しづつ自分なりに確認していきます。開発環境はVScode+PlatformIO ESP-IDF版です。

今回は、秋月販売のモジュールESP32-S3-1-N16R8を使う確認です。販売されているESP32-S3-DevkitC-1とはモジュールの種類が違うので乗せ換えて動かしてみます。

N16R8を使いたい。

高性能マイコンとして使ってみたいだけなので、ESP32-S3-DevkitCで動作確認して、N16R8でも同じに動作させたいのです。

ESP32-S3-DevkitCはD3N8、モジュール品はN16R8、PSRAMでGPIO33~37使う。

DevkitC搭載のS3の彫刻は「D3N8」ですが、データシートにD3N8という型番はないのでおそらく「ESP32-S3-WROOM-1-N8」と推測します。HPに「N8」と書いてありました(^^)。

N8とN16R8との(私が)気になる違いは、PSRAMがQuad→OctalSPIです。接続ピンが増えるらしくデータシートによるとGPIO33~37はPSRAM用となりGPIOとしての使用は非推奨となっています。いま検討している事案では、このポートが汎用で使用可否が懸案事項なのです。まずはデフォルト状態でGPIO33~37使えるかどうか確認です。

DevkitCにN16R8を載せかえる

DevkitCとしてブレッドボードで確認したいので乗せ換えます。

外したN8デバイスには25Q64ES1Gが使われていた。

外してみたら8ピンQuad64MbitSPIFlashが搭載されてましたがSPIは一組です。N16R8ではこれがOctalになるそうで、SPI組が増えてGPIO33~37にOctalSPI信号が割り当てられると想像つきます。N16R8を分解して接続を見る必要ありますが、PSRAMを使用しない設定にできればそのままでIOポートとして使えると推定します。まずはデフォルトでなにも設定しないでポートとしてアクセスしてみます。

PlatformIOで確認。とりあえずGPIO36,37は汎用IOで使えた。

確認プログラム抜粋です(PlatformIOのBlink Exampleを流用)

#define BLINK_GPIO (gpio_num_t)45
#define SW6			(gpio_num_t)37
	・
	・
static void blink_led(int s_led_state) {
    gpio_set_level(BLINK_GPIO, s_led_state);
}
	・
	・
static void configure_led(void)
{
    gpio_reset_pin(BLINK_GPIO);
    gpio_set_direction(BLINK_GPIO, GPIO_MODE_OUTPUT);
}

void ledTestTask(void *pvParameters) {
    for(;;) {
		if(gpio_get_level(SW6)==0) s_led_state=1; else s_led_state=0;
        blink_led(s_led_state);
        vTaskDelay(50);
    }
}

extern "C" void app_main() {
    gpio_reset_pin(SW6); gpio_set_direction(SW6, GPIO_MODE_INPUT);
    gpio_set_pull_mode(SW6,GPIO_PULLUP_ONLY);
    configure_led();
    xTaskCreate(ledTestTask,"ledtest", 2048, NULL, 5, NULL);
    while (1) {
		vTaskDelay(100);
	}
}

というわけで、とりあえずデフォルトでGPIO36をLED出力、GPIO37をスイッチ入力としてみたところ、無事に動作しました。めでたしめでたし。信号波形もきれいで衝突・干渉等はありません。

PSRAMを使わない・・という設定をきちんと確認する必要はあると思います。

sdkconfigに「PSRAM」のキーワードがなかったので、そう簡単には見つかりませんが、これから関連項目を探すことにします。

次はJTAG用USBを使った汎用CDCの確認です

これができれば、単なる高性能マイコンボードとして使える用途が増えそうです。

ESP32 ESP-IDF & PlatformIO高速化

カテゴリー: ESP32

PCをグレードアップしたおかげで、開発環境も快適度が向上してますが、ESP32系のコンパイル、アップロードはまだまだ時間がかかります。(というより、どんなに速くなってもそれに慣れると満足しなくなる、という性)。

RamDiskの使用やアップロード速度Upを試した覚書です。

2022/6/1更新

 内容はESP32-WROOM-32Eについでです。

続きを読む…

VS2019 C# Task.Delayが使えない件が解消

カテゴリー: ソフトウェア

Thread.Sleepの代わりにTask.Delayを使おうとしたら、エラーがでて使えない。

同じVS2019でも、Task.Delay使えているプロジェクトもあるので、なにが違うのか解消するのに時間をとられたので、その顛末の覚書。ひょっとしたらそのプロジェクト製作時も悩んだかもしれないので、しっかり記録しておこう。

続きを読む…