ESP32-S3モジュールは相当魅力的ですが、情報量が少ないので、少しづつ自分なりに確認していきます。開発環境はVScode+PlatformIO ESP-IDF版です。
今回は、ESP32-S3-1-N16R8で、JTAG用のUSBをCDCデバイスとして設定してみた覚書です(windows限定です)。
2022/11/28追加 sdkconfig.xxxの更新方法
ESP32-S3モジュールは相当魅力的ですが、情報量が少ないので、少しづつ自分なりに確認していきます。開発環境はVScode+PlatformIO ESP-IDF版です。
今回は、ESP32-S3-1-N16R8で、JTAG用のUSBをCDCデバイスとして設定してみた覚書です(windows限定です)。
2022/11/28追加 sdkconfig.xxxの更新方法
VMwareToolsの導入に少し苦労したので覚書
そこで、VMwareToolsの手動インストールすることにしました。
VMwareToolsのダウンロードページから、12.1.0をDL。Windows7 SP1 or laterとあるのでインストール条件はOKのはず
まず、SP1をもう一度上書きインストールしてみる。Windows7 SP1のインストールページから手動インストールファイルをDL。
その後、VMwareToolsのコミュニティページで更新プログラムを適用する回答があったのでやってみる。
いずれもゲストOSで実行するものです。
この時点では、VMwareToolsが無効なので、まだD&Dやファイルの共有もできません。そこでUSBメモリ経由でゲストOSへパッチをコピー。
順番としては、
インストール後は再起動。Windows 7 のサポートが切れていますというメッセージが出たら、手順がうまく行ったことらしい。
コミュニティのおかげで助かりましたm(_ _)m
ESP32-S3モジュールは相当魅力的ですが、情報量が少ないので、少しづつ自分なりに確認していきます。開発環境はVScode+PlatformIO ESP-IDF版です。
今回は、秋月販売のモジュールESP32-S3-1-N16R8を使う確認です。販売されているESP32-S3-DevkitC-1とはモジュールの種類が違うので乗せ換えて動かしてみます。
高性能マイコンとして使ってみたいだけなので、ESP32-S3-DevkitCで動作確認して、N16R8でも同じに動作させたいのです。
DevkitC搭載のS3の彫刻は「D3N8」ですが、データシートにD3N8という型番はないのでおそらく「ESP32-S3-WROOM-1-N8」と推測します。HPに「N8」と書いてありました(^^)。
N8とN16R8との(私が)気になる違いは、PSRAMがQuad→OctalSPIです。接続ピンが増えるらしくデータシートによるとGPIO33~37はPSRAM用となりGPIOとしての使用は非推奨となっています。いま検討している事案では、このポートが汎用で使用可否が懸案事項なのです。まずはデフォルト状態でGPIO33~37使えるかどうか確認です。
DevkitCとしてブレッドボードで確認したいので乗せ換えます。
外してみたら8ピンQuad64MbitSPIFlashが搭載されてましたがSPIは一組です。N16R8ではこれがOctalになるそうで、SPI組が増えてGPIO33~37にOctalSPI信号が割り当てられると想像つきます。N16R8を分解して接続を見る必要ありますが、PSRAMを使用しない設定にできればそのままで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」のキーワードがなかったので、そう簡単には見つかりませんが、これから関連項目を探すことにします。
これができれば、単なる高性能マイコンボードとして使える用途が増えそうです。