One of teensy users (@wwatson) found the solution for the using the passthrough sketch with the Teensy (
https://forum.pjrc.com/threads/70062-Te ... post305423) besides changing the GPIO0 pin to 10 from -1 you change the delay between setting the ESP32_RESTN pin to low and ESP_RESTN pin to high to 1000 from 100. Once those changes are made esptool will update the firmware.
Thanks for your help.
Here is the whole sketch for the Teensy in case anyone runs across this post:
Code: Select all
// SPDX-FileCopyrightText: 2018 Arduino SA
//
// SPDX-License-Identifier: LGPL-2.1-or-later
/*
SerialNINAPassthrough - Use esptool to flash the ESP32 module
For use with PyPortal, Metro M4 WiFi...
Copyright (c) 2018 Arduino SA. All rights reserved.
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.
This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or ......FOR A PARTICULAR PURPOSE. See the GNU
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
#include <Adafruit_NeoPixel.h>
unsigned long baud = 115200;
#if defined(ADAFRUIT_FEATHER_M4_EXPRESS) || \
defined(ADAFRUIT_FEATHER_M0_EXPRESS) || \
defined(ARDUINO_AVR_FEATHER32U4) || \
defined(ARDUINO_NRF52840_FEATHER) || \
defined(ADAFRUIT_ITSYBITSY_M0) || \
defined(ADAFRUIT_ITSYBITSY_M4_EXPRESS) || \
defined(ARDUINO_AVR_ITSYBITSY32U4_3V) || \
defined(ARDUINO_NRF52_ITSYBITSY) || \
defined(ARDUINO_PYGAMER_M4_EXPRESS)
// Configure the pins used for the ESP32 connection
#define SerialESP32 Serial1
#define SPIWIFI SPI // The SPI port
#define SPIWIFI_SS 13 // Chip select pin
#define ESP32_RESETN 12 // Reset pin
#define SPIWIFI_ACK 11 // a.k.a BUSY or READY pin
#define ESP32_GPIO0 10
#define NEOPIXEL_PIN 8
#elif defined(ARDUINO_AVR_FEATHER328P)
#define SerialESP32 Serial1
#define SPIWIFI SPI // The SPI port
#define SPIWIFI_SS 4 // Chip select pin
#define ESP32_RESETN 3 // Reset pin
#define SPIWIFI_ACK 2 // a.k.a BUSY or READY pin
#define ESP32_GPIO0 -1
#define NEOPIXEL_PIN 8
#elif defined(TEENSYDUINO)
#define SerialESP32 Serial1
#define SPIWIFI SPI // The SPI port
#define SPIWIFI_SS 5 // Chip select pin
#define ESP32_RESETN 6 // Reset pin
#define SPIWIFI_ACK 9 // a.k.a BUSY or READY pin
#define ESP32_GPIO0 10 //-1
#define NEOPIXEL_PIN 8
#elif defined(ARDUINO_NRF52832_FEATHER )
#define SerialESP32 Serial1
#define SPIWIFI SPI // The SPI port
#define SPIWIFI_SS 16 // Chip select pin
#define ESP32_RESETN 15 // Reset pin
#define SPIWIFI_ACK 7 // a.k.a BUSY or READY pin
#define ESP32_GPIO0 -1
#define NEOPIXEL_PIN 8
#elif !defined(SPIWIFI_SS) // if the wifi definition isnt in the board variant
// Don't change the names of these #define's! they match the variant ones
#define SerialESP32 Serial1
#define SPIWIFI SPI
#define SPIWIFI_SS 10 // Chip select pin
#define SPIWIFI_ACK 7 // a.k.a BUSY or READY pin
#define ESP32_RESETN 5 // Reset pin
#define ESP32_GPIO0 -1 // Not connected
#define NEOPIXEL_PIN 8
#endif
#if defined(ADAFRUIT_PYPORTAL)
#define PIN_NEOPIXEL 2
#elif defined(ADAFRUIT_METRO_M4_AIRLIFT_LITE)
#define PIN_NEOPIXEL 40
#endif
#define PIN_NEOPIXEL 8
Adafruit_NeoPixel pixel = Adafruit_NeoPixel(1, NEOPIXEL_PIN, NEO_GRB + NEO_KHZ800);
void setup() {
Serial.begin(baud); // TEENSY
pixel.begin();
pixel.setPixelColor(0, 10, 10, 10); pixel.show();
while (!Serial);
pixel.setPixelColor(0, 50, 50, 50); pixel.show();
delay(100);
SerialESP32.begin(baud); //Serial1
pinMode(SPIWIFI_SS, OUTPUT);
pinMode(ESP32_GPIO0, OUTPUT);
pinMode(ESP32_RESETN, OUTPUT);
delay(100);
// manually put the ESP32 in upload mode
digitalWrite(ESP32_GPIO0, LOW);
digitalWrite(ESP32_RESETN, LOW);
delay(1000);
digitalWrite(ESP32_RESETN, HIGH);
// pixel.setPixelColor(0, 20, 20, 0); pixel.show();
delay(1000);
}
void loop() {
while (Serial.available()) {
// pixel.setPixelColor(0, 10, 0, 0); pixel.show();
SerialESP32.write(Serial.read());
}
while (SerialESP32.available()) {
// pixel.setPixelColor(0, 0, 0, 10); pixel.show();
Serial.write(SerialESP32.read());
}
}