Hello everybody!
I have a working project on the ESP32. The device is an audio recorder that receives serial data from an ADC and saves it to an SD card. The data is 16 bits at 44.1 kHz.
So far, the SD card logger works fine.
However, I'm struggling to get the I2S peripheral working on the STM32F411CEU6 (Black Pill).
Before moving my project to CubeIDE, I’d like to give it a try on the Arduino IDE.
Has anyone successfully made this peripheral work on the Arduino IDE?
I tried using this library:
But not even the example program compile.
#include "AudioTools.h"
#include "stm32-i2s.h"
using namespace stm32_i2s;
SineWaveGenerator<int16_t> sineWave(32000); // subclass of SoundGenerator with max amplitude of 32000
I2SSettingsSTM32 i2s_settings;
Stm32I2sClass I2S;
int sample_rate = 8000;
int channels = 1;
void readToTransmit(uint8_t *buffer, uint16_t byteCount, void*) {
uint16_t samples = byteCount / 2;
int16_t *buffer_16 = (int16_t*) buffer;
for (uint j = 0; j < samples; j+=2) {
int16_t sample = sineWave.readSample();
buffer_16[j] = sample;
buffer_16[j+1] = sample;
}
}
void setup() {
Serial.begin(115200);
sineWave.begin(channels, sample_rate, N_B4);
i2s_settings.sample_rate = I2S_AUDIOFREQ_8K;
if (!I2S.beginWriteDMA(i2s_settings, readToTransmit)){
Serial.println("I2S Error");
}
}
void loop() {}
Error:
C:\Users\Miguel\AppData\Local\Temp\.arduinoIDE-unsaved2024112-13628-19nnl1.rljl3\i2s-in\i2s-in.ino:4:17: error: 'stm32_i2s' is not a namespace-name
4 | using namespace stm32_i2s;
| ^~~~~~~~~
C:\Users\Miguel\AppData\Local\Temp\.arduinoIDE-unsaved2024112-13628-19nnl1.rljl3\i2s-in\i2s-in.ino:7:1: error: 'I2SSettingsSTM32' does not name a type
7 | I2SSettingsSTM32 i2s_settings;
| ^~~~~~~~~~~~~~~~
C:\Users\Miguel\AppData\Local\Temp\.arduinoIDE-unsaved2024112-13628-19nnl1.rljl3\i2s-in\i2s-in.ino:8:1: error: 'Stm32I2sClass' does not name a type
8 | Stm32I2sClass I2S;
| ^~~~~~~~~~~~~
C:\Users\Miguel\AppData\Local\Temp\.arduinoIDE-unsaved2024112-13628-19nnl1.rljl3\i2s-in\i2s-in.ino: In function 'void setup()':
C:\Users\Miguel\AppData\Local\Temp\.arduinoIDE-unsaved2024112-13628-19nnl1.rljl3\i2s-in\i2s-in.ino:25:9: error: 'i2s_settings' was not declared in this scope
25 | i2s_settings.sample_rate = I2S_AUDIOFREQ_8K;
| ^~~~~~~~~~~~
C:\Users\Miguel\AppData\Local\Temp\.arduinoIDE-unsaved2024112-13628-19nnl1.rljl3\i2s-in\i2s-in.ino:26:14: error: 'I2S' was not declared in this scope
26 | if (!I2S.beginWriteDMA(i2s_settings, readToTransmit)){
| ^~~
Multiple libraries were found for "AudioConfig.h"
Used: C:\Users\Miguel\Documents\Arduino\libraries\arduino-audio-tools
Not used: C:\Users\Miguel\Documents\Arduino\libraries\audio-tools
exit status 1
Compilation error: 'stm32_i2s' is not a namespace-name
This is the board selected:
Board: