mirror of
https://github.com/pschatzmann/arduino-audio-tools.git
synced 2024-09-21 10:27:27 +00:00
UNO R4 - SD support
This commit is contained in:
parent
5ef9572ad1
commit
45a427c786
@ -10,15 +10,12 @@
|
||||
|
||||
#include "AudioTools.h"
|
||||
#include "AudioLibs/VS1053Stream.h"
|
||||
#include "AudioLibs/AudioSourceSDFAT.h"
|
||||
#include "AudioLibs/AudioSourceSD.h"
|
||||
#include "AudioCodecs/CodecCopy.h"
|
||||
|
||||
#define SD_CARD_CS 22
|
||||
|
||||
const char *startFilePath="/";
|
||||
const char* ext="mp3";
|
||||
SdSpiConfig sdcfg(SD_CARD_CS, DEDICATED_SPI, SD_SCK_MHZ(10) , &SPI);
|
||||
AudioSourceSDFAT source(startFilePath, ext, sdcfg);
|
||||
AudioSourceSD source(startFilePath, ext);
|
||||
VS1053Stream vs1053; // final output
|
||||
AudioPlayer player(source, vs1053, *new CopyDecoder());
|
||||
|
||||
|
@ -401,6 +401,7 @@ uint64_t millis() {return (xTaskGetTickCount() * portTICK_PERIOD_MS);}
|
||||
//----- RP2040 -----------
|
||||
#elif defined(ARDUINO_ARCH_RP2040)
|
||||
#define RP2040_HOWER
|
||||
#define USE_SD_NO_NS
|
||||
#define USE_I2S
|
||||
#define USE_PWM
|
||||
#define USE_ANALOG_ARDUINO
|
||||
@ -580,6 +581,10 @@ using WiFiServerSecure = BearSSL::WiFiServerSecure;
|
||||
//------ RENESAS ----------
|
||||
// Arduino UNO R4
|
||||
#if defined(ARDUINO_ARCH_RENESAS) || defined(_RENESAS_RA_)
|
||||
// no trace to save on memory
|
||||
#define NO_TRACE
|
||||
//#define LOG_NO_MSG
|
||||
|
||||
#define USE_INT24_FROM_INT
|
||||
#define IS_RENESAS 1
|
||||
#define USE_TYPETRAITS
|
||||
@ -590,10 +595,10 @@ using WiFiServerSecure = BearSSL::WiFiServerSecure;
|
||||
#define PIN_PWM_COUNT 12
|
||||
#define USE_ANALOG
|
||||
#define USE_ANALOG_ARDUINO
|
||||
#define USE_SD_NO_NS
|
||||
#define PIN_ANALOG_START A0
|
||||
#define ANALOG_BUFFER_SIZE 512
|
||||
#define ANALOG_BUFFERS 5
|
||||
|
||||
// default pins for UNO VS1053 shield
|
||||
#define VS1053_CS 6
|
||||
#define VS1053_DCS 7
|
||||
|
@ -121,11 +121,11 @@ class I2SConfig : public AudioInfo {
|
||||
LOGI("sample rate: %d", sample_rate);
|
||||
LOGI("bits per sample: %d", bits_per_sample);
|
||||
LOGI("number of channels: %d", channels);
|
||||
#ifdef ESP32
|
||||
LOGI("signal_type: %s", i2s_signal_types[signal_type]);
|
||||
if (signal_type==Digital){
|
||||
LOGI("i2s_format: %s", i2s_formats[i2s_format]);
|
||||
}
|
||||
#ifdef ESP32
|
||||
LOGI("auto_clear: %s",auto_clear? "true" : "false");
|
||||
if (use_apll) {
|
||||
LOGI("use_apll: %s", use_apll ? "true" : "false");
|
||||
|
@ -1,6 +1,5 @@
|
||||
#pragma once
|
||||
#include <SPI.h>
|
||||
#include <FS.h>
|
||||
#include <SD.h>
|
||||
#include "AudioLogger.h"
|
||||
#include "AudioBasic/StrExt.h"
|
||||
@ -101,8 +100,8 @@ public:
|
||||
long size() { return idx.size();}
|
||||
|
||||
protected:
|
||||
#ifdef RP2040_HOWER
|
||||
SDIndex<SDClass,fs::File> idx{SD};
|
||||
#if defined(USE_SD_NO_NS)
|
||||
SDIndex<SDClass, File> idx{SD};
|
||||
#else
|
||||
SDIndex<fs::SDFS,fs::File> idx{SD};
|
||||
#endif
|
||||
|
@ -4,7 +4,6 @@
|
||||
#include "AudioLogger.h"
|
||||
#include "AudioTools/AudioSource.h"
|
||||
#include "AudioLibs/SDDirect.h"
|
||||
#include "FS.h"
|
||||
#include "SD.h"
|
||||
#include "SPI.h"
|
||||
|
||||
@ -103,8 +102,8 @@ public:
|
||||
long size() { return idx.size();}
|
||||
|
||||
protected:
|
||||
#ifdef RP2040_HOWER
|
||||
SDDirect<SDClass,fs::File> idx{SD};
|
||||
#if defined(USE_SD_NO_NS)
|
||||
SDDirect<SDClass, File> idx{SD};
|
||||
#else
|
||||
SDDirect<fs::SDFS,fs::File> idx{SD};
|
||||
#endif
|
||||
|
@ -250,7 +250,7 @@ class SDDirect {
|
||||
}
|
||||
return result;
|
||||
#else
|
||||
return p_sd->open(name, "r");
|
||||
return p_sd->open(name);
|
||||
#endif
|
||||
}
|
||||
|
||||
|
@ -47,8 +47,6 @@ class TimerAlarmRepeatingDriverRP2040 : public TimerAlarmRepeatingDriverBase {
|
||||
uint64_t time_us = AudioTime::toTimeUs(time);
|
||||
result = alarm_pool_add_repeating_timer_us(ap, time_us, &staticCallback, this, &timer);
|
||||
break;
|
||||
default:
|
||||
LOGE("Undefined Unit");
|
||||
}
|
||||
|
||||
return result;
|
||||
|
@ -142,27 +142,49 @@ class AudioLogger {
|
||||
snprintf(AudioLogger::instance().str(), LOG_PRINTF_BUFFER_SIZE, fmt, ##__VA_ARGS__); \
|
||||
AudioLogger::instance().println();\
|
||||
}
|
||||
#define LOG_MIN(level) { \
|
||||
AudioLogger::instance().prefix(__FILE__,__LINE__, level); \
|
||||
AudioLogger::instance().println();\
|
||||
}
|
||||
|
||||
#ifdef LOG_NO_MSG
|
||||
#define LOGD(fmt, ...) if (AudioLogger::instance().level()<=AudioLogger::Debug) { LOG_MIN(AudioLogger::Debug);}
|
||||
#define LOGI(fmt, ...) if (AudioLogger::instance().level()<=AudioLogger::Info) { LOG_MIN(AudioLogger::Info);}
|
||||
#define LOGW(fmt, ...) if (AudioLogger::instance().level()<=AudioLogger::Warning) { LOG_MIN(AudioLogger::Warning);}
|
||||
#define LOGE(fmt, ...) if (AudioLogger::instance().level()<=AudioLogger::Error) { LOG_MIN(AudioLogger::Error);}
|
||||
#else
|
||||
// Log statments which store the fmt string in Progmem
|
||||
#define LOGD(fmt, ...) if (AudioLogger::instance().level()<=AudioLogger::Debug) { LOG_OUT_PGMEM(AudioLogger::Debug, fmt, ##__VA_ARGS__);}
|
||||
#define LOGI(fmt, ...) if (AudioLogger::instance().level()<=AudioLogger::Info) { LOG_OUT_PGMEM(AudioLogger::Info, fmt, ##__VA_ARGS__);}
|
||||
#define LOGW(fmt, ...) if (AudioLogger::instance().level()<=AudioLogger::Warning) { LOG_OUT_PGMEM(AudioLogger::Warning, fmt, ##__VA_ARGS__);}
|
||||
#define LOGE(fmt, ...) if (AudioLogger::instance().level()<=AudioLogger::Error) { LOG_OUT_PGMEM(AudioLogger::Error, fmt, ##__VA_ARGS__);}
|
||||
#endif
|
||||
|
||||
// Just log file and line
|
||||
#if defined(NO_TRACED)
|
||||
#if defined(NO_TRACED) || defined(NO_TRACE)
|
||||
# define TRACED()
|
||||
#else
|
||||
# define TRACED() if (AudioLogger::instance().level()<=AudioLogger::Debug) { LOG_OUT(AudioLogger::Debug, LOG_METHOD);}
|
||||
#endif
|
||||
|
||||
#if defined(NO_TRACEI)
|
||||
#if defined(NO_TRACEI) || defined(NO_TRACE)
|
||||
# define TRACEI()
|
||||
#else
|
||||
# define TRACEI() if (AudioLogger::instance().level()<=AudioLogger::Info) { LOG_OUT(AudioLogger::Info, LOG_METHOD);}
|
||||
#endif
|
||||
#define TRACEW() if (AudioLogger::instance().level()<=AudioLogger::Warning) { LOG_OUT(AudioLogger::Warning, LOG_METHOD);}
|
||||
|
||||
#if defined(NO_TRACEW) || defined(NO_TRACE)
|
||||
# define TRACEW()
|
||||
#else
|
||||
# define TRACEW() if (AudioLogger::instance().level()<=AudioLogger::Warning) { LOG_OUT(AudioLogger::Warning, LOG_METHOD);}
|
||||
#endif
|
||||
|
||||
#if defined(NO_TRACEE) || defined(NO_TRACE)
|
||||
# define TRACEE()
|
||||
#else
|
||||
#define TRACEE() if (AudioLogger::instance().level()<=AudioLogger::Error) { LOG_OUT(AudioLogger::Error, LOG_METHOD);}
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
#else
|
||||
|
Loading…
Reference in New Issue
Block a user