|
|||||||
Создание проекта PlatformIO
Время создания: 27.08.2025 23:11
Автор: alensav
Текстовые метки: platformio
Раздел: PLATFORMIO
Запись: alensav/MyTetra2/main/base/1756325484lzbe55wqa5/text.html на raw.githubusercontent.com
|
|||||||
|
|||||||
Создание проекта PlatformIO # Выйти из виртуального окружения если нужно deactivate # Активировать PlatformIO окружение source ~/platformio_venv/bin/activate # Создать директорию проекта mkdir -p ~/vs1053_diagnostic cd ~/vs1053_diagnostic # Инициализировать PlatformIO проект pio project init --board nodemcuv2 2. Создание конфигурационного файла platformio.ini: [env:nodemcuv2] platform = espressif8266 board = nodemcuv2 framework = arduino monitor_speed = 115200 upload_speed = 921600 lib_deps = 3. Создание основного скетча src/main.cpp: #include <Arduino.h> #include <SPI.h> // Пины для VS1053 const int X_CS = D1; // GPIO5 const int X_DCS = D2; // GPIO4 const int DREQ = D3; // GPIO0 const int RESET = D4; // GPIO2 // Регистры VS1053 #define SCI_MODE 0x00 #define SCI_STATUS 0x01 #define SCI_CLOCKF 0x03 #define SCI_VOL 0x0B #define SCI_AUDATA 0x05 // Функция чтения регистра uint16_t readRegister(uint8_t reg) { while (!digitalRead(DREQ)) { delayMicroseconds(100); }
digitalWrite(X_CS, LOW); SPI.transfer(0x03); // Read operation SPI.transfer(reg); uint16_t result = SPI.transfer(0xFF) << 8; result |= SPI.transfer(0xFF); digitalWrite(X_CS, HIGH);
return result; } // Функция записи в регистр void writeRegister(uint8_t reg, uint16_t value) { while (!digitalRead(DREQ)) { delayMicroseconds(100); }
digitalWrite(X_CS, LOW); SPI.transfer(0x02); // Write operation SPI.transfer(reg); SPI.transfer(value >> 8); SPI.transfer(value & 0xFF); digitalWrite(X_CS, HIGH); } void setup() { Serial.begin(115200); delay(2000); // Ждем инициализации Serial
Serial.println("\n=== VS1053 Diagnostic Tool ==="); Serial.println("PlatformIO on Ubuntu 18.04"); Serial.printf("ESP8266 Chip ID: %08X\n", ESP.getChipId()); Serial.printf("Free Heap: %d bytes\n", ESP.getFreeHeap()); // Инициализация пинов pinMode(X_CS, OUTPUT); pinMode(X_DCS, OUTPUT); pinMode(DREQ, INPUT); pinMode(RESET, OUTPUT);
digitalWrite(X_CS, HIGH); digitalWrite(X_DCS, HIGH); digitalWrite(RESET, LOW); // Инициализация SPI SPI.begin(); SPI.setFrequency(1000000); // 1 MHz // Сброс VS1053 Serial.println("Resetting VS1053..."); digitalWrite(RESET, LOW); delay(100); digitalWrite(RESET, HIGH); delay(500); // Ждем полной инициализации // Проверка связи Serial.println("Testing communication..."); uint16_t status = readRegister(SCI_STATUS); Serial.printf("SCI_STATUS: 0x%04X\n", status); if (status == 0xFFFF || status == 0x0000) { Serial.println("ERROR: No communication with VS1053"); Serial.println("Please check:"); Serial.println("1. Wiring connections"); Serial.println("2. Power supply (3.3V)"); Serial.println("3. Ground connections"); return; } Serial.println("✓ Communication established"); // Получение информации о чипе uint8_t version = (status >> 4) & 0x0F; Serial.printf("Chip Version: %d\n", version); // Тест тактовой частоты Serial.println("Testing clock settings..."); writeRegister(SCI_CLOCKF, 0x6000); // 3.5x multiplier uint16_t clockf = readRegister(SCI_CLOCKF); Serial.printf("SCI_CLOCKF: 0x%04X\n", clockf); // Проверка аудиоданных uint16_t audata = readRegister(SCI_AUDATA); Serial.printf("SCI_AUDATA: 0x%04X\n", audata); Serial.println("\n=== Diagnostic Results ==="); if (status != 0xFFFF && status != 0x0000) { Serial.println("✓ VS1053 detected and responsive"); Serial.println("✓ SPI communication working"); Serial.println("✓ Chip is properly reset"); } else { Serial.println("✗ VS1053 not responding"); } Serial.println("\nPress reset button to run diagnostics again"); } void loop() { // Минимальный мониторинг static unsigned long lastUpdate = 0; if (millis() - lastUpdate > 5000) { uint16_t status = readRegister(SCI_STATUS); Serial.printf("[%lu] Status: 0x%04X | Heap: %d bytes\n", millis()/1000, status, ESP.getFreeHeap()); lastUpdate = millis(); }
delay(100); } 4. Компиляция и загрузка # Компиляция проекта pio run # Загрузка на ESP8266 (замените порт если нужно) pio run -t upload # Если нужно указать конкретный порт: pio run -t upload --upload-port /dev/ttyUSB0 # Мониторинг Serial pio device monitor 5. Скрипт для автоматической загрузки и мониторинга upload_and_monitor.sh: #!/bin/bash echo "Compiling VS1053 diagnostic..." pio run echo "Uploading to ESP8266..." pio run -t upload echo "Starting serial monitor..." pio device monitor Сделать исполняемым: chmod +x upload_and_monitor.sh ./upload_and_monitor.sh |
|||||||
Так же в этом разделе:
|
|||||||
![]() |
|||||||
|
|||||||
|