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();

This is ESP32 board I'm using

Кстати, SW SPI работал для меня очень медленно(display.sendBuffer() занимает около 1 секунды) как на ESP32 WOOM32, так и на ESP8266 D1R1 mini. Мой друг использует плату ESP32 WROOVER, и даже SW SPI отлично работает для него без каких-либо сбоев.

, 👍0

Обсуждение

Я бы посоветовал вам проверить все ваши наземные и силовые соединения. Также все неиспользуемые контакты ESP32 должны быть прекращены. Вы можете просто установить их в качестве выходов и включить их на низкий уровень., @Gil

Разве gpio39 не является только вводом? Я не уверен, что вы можете установить его в качестве выходного., @Adriano


1 ответ


Лучший ответ:

1

Проблема заключалась в GPIO39, который внутренне подключен к датчику Холла... Как только я сменил CS на какой-то другой контакт, все начало работать...

Наличие чит-листа с контактами было бы действительно полезно в таких ситуациях.

,