ESP32 WROOM 32 Проблемы с SPI EMF
Я пытаюсь запустить экран Waveshare SSD1327 128x128 через SPI на плате ESP32 WROOM 32. На ESP8266 (D1R1?) он работает безупречно при использовании HW SPI, но когда я запускаю его на esp32, все, что подключено к сети, находится Даже если я просто буду держать в одной руке кабель зарядного устройства телефона, подключенный к сети, а другой рукой подойду вплотную к экрану(расстояние между руками не менее 1 м), экран мгновенно отключится и выключится. Я почти уверен, что это не проблема с подключением, так как он работает на ESP8266, и я даже пытался припаять провода непосредственно к плате ESP32.
Я использую платформу VS Code PlatformIO и платформу Arduino. Я попытался установить частоту процессора на 40 МГц, добавив строку в platformio.ini и вызвав setCpuFrequencyMhz(40); в моей функции setup (). У меня нет осциллографа, чтобы подтвердить, что это действительно произошло. Я где-то читал, что эта штука с .ini не сработала.
Я использую U8g2lib для экрана, который использует глобальный объект SPI. Даже если я купил экран у Waveshare, я не могу использовать реализацию WS. MIDAS one-единственная реализация, которая работает для меня. Поскольку на моей плате нет всех контактов VSPI, мне пришлось установить их вручную в SPI.begin(...):
U8G2_SSD1327_MIDAS_128X128_F_4W_HW_SPI display(U8G2_R0, /* cs=*/ 39, /* dc=*/ 16, /* reset=*/ 2);
...
...
pinMode(39, OUTPUT);
pinMode(14, OUTPUT);
pinMode(13, OUTPUT);
pinMode(12, INPUT);
digitalWrite(39, LOW);
// sck, miso, mosi, ss
SPI.begin(14, 12, 13, 39);
display.begin();
Кстати, SW SPI работал для меня очень медленно(display.sendBuffer() занимает около 1 секунды) как на ESP32 WOOM32, так и на ESP8266 D1R1 mini. Мой друг использует плату ESP32 WROOVER, и даже SW SPI отлично работает для него без каких-либо сбоев.
@user1726744, 👍0
Обсуждение1 ответ
Лучший ответ:
Проблема заключалась в GPIO39, который внутренне подключен к датчику Холла... Как только я сменил CS на какой-то другой контакт, все начало работать...
Наличие чит-листа с контактами было бы действительно полезно в таких ситуациях.
- esp32 Stack canary watchpoint срабатывает
- ESP32S v1.1 NodeMCU vs ESP32 DevKitV1
- esp32-cam публикует изображение в mqtt
- Как назначить точке доступа ESP8266 имя хоста, которое может быть разрешено станциями?
- Adafruit esp32 Feather не удалось скомпилировать
- Использование внутренней памяти ESP32 Cam
- ESP32-CAM не читает BME680
- Взаимодействие ESP32-CAM с CCS811+HDC1080+BMP280
Я бы посоветовал вам проверить все ваши наземные и силовые соединения. Также все неиспользуемые контакты ESP32 должны быть прекращены. Вы можете просто установить их в качестве выходов и включить их на низкий уровень., @Gil
Разве gpio39 не является только вводом? Я не уверен, что вы можете установить его в качестве выходного., @Adriano