Nobody likes bugs, but all nontrivial software and hardware has some. The master list of problems is the Issues list on github.
The default I2C bus clock speed is 100 kHz (100000) . At that rate, the ESP32-S2 will leave 10ms gaps between I2C transactions. This can slow down your I2C interactions considerably, such as when you are controlling a stepper motor with a PCA9685 controller.
Raising the I2C bus frequency to 125 kHz (125000) or higher fixes this problem. If your I2C peripheral can handle higher frequencies, you can use 400 kHz (400000) or even in some cases 1 MHz (1000000).
board.I2C() creates an I2C bus that runs at 100 kHz. The bus frequency cannot be changed.. To create an I2C bus on the default I2C pins that runs at a different frequency, you must use
busio.I2C(board.SCL, board.SDA, frequency=).
Current versions of the ESP-IDF SDK do not have the required APIs for DAC-based audio output. Once a future version of ESP-IDF that adds it, it will be possible to implement DAC-based AudioOut in CircuitPython.
Workaround: PWMOut can create tones and buzzes.
Workaround: I2SOut audio is currently being developed and will work with boards such as the Adafruit I2S Stereo Decoder - UDA1334A Breakout.
ESP32-S2 has hardware limitations on what kind of "pin alarms" can wake it. The following combinations are possible:
- EITHER one or two pins that wake from deep sleep when they are pulled LOW
- OR an arbitrary number of pins that wake from deep sleep when they are pulled HIGH, and optionally one pin that wakes from deep sleep when pulled LOW
This means that "wake" buttons should be wired so that pressing them pulls HIGH and a pull DOWN resistor is used with the pin. However, in some hardware designs including the original MagTag, the integrated buttons are pulled LOW when pressed and so only 1 or 2 buttons can be selected to wake the MagTag.