Skip to content

Commit f1b965f

Browse files
Allow I2S constructor to set pins, like PWMAudio (#2702)
Pins are a physical connection, makes sense to define them at construction.
1 parent 66af359 commit f1b965f

File tree

3 files changed

+8
-10
lines changed

3 files changed

+8
-10
lines changed

libraries/I2S/examples/SimpleTone/SimpleTone.ino

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,14 +19,14 @@
1919

2020
#include <I2S.h>
2121

22-
// Create the I2S port using a PIO state machine
23-
I2S i2s(OUTPUT);
24-
2522
// GPIO pin numbers
2623
#define pBCLK 20
2724
#define pWS (pBCLK+1)
2825
#define pDOUT 22
2926

27+
// Create the I2S port using a PIO state machine
28+
I2S i2s(OUTPUT, pBCLK, pDOUT);
29+
3030
const int frequency = 440; // frequency of square wave in Hz
3131
const int amplitude = 500; // amplitude of square wave
3232
const int sampleRate = 16000; // minimum for UDA1334A
@@ -43,8 +43,6 @@ void setup() {
4343
Serial.begin(115200);
4444
Serial.println("I2S simple tone");
4545

46-
i2s.setBCLK(pBCLK);
47-
i2s.setDATA(pDOUT);
4846
i2s.setBitsPerSample(16);
4947

5048
// start I2S at the sample rate with 16-bits per sample

libraries/I2S/src/I2S.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -24,14 +24,14 @@
2424
#include <pico/stdlib.h>
2525

2626

27-
I2S::I2S(PinMode direction) {
27+
I2S::I2S(PinMode direction, pin_size_t bclk, pin_size_t data, pin_size_t mclk) {
2828
_running = false;
2929
_bps = 16;
3030
_writtenHalf = false;
3131
_isOutput = direction == OUTPUT;
32-
_pinBCLK = 26;
33-
_pinDOUT = 28;
34-
_pinMCLK = 25;
32+
_pinBCLK = bclk;
33+
_pinDOUT = data;
34+
_pinMCLK = mclk;
3535
_MCLKenabled = false;
3636
#ifdef PIN_I2S_BCLK
3737
_pinBCLK = PIN_I2S_BCLK;

libraries/I2S/src/I2S.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@
2525

2626
class I2S : public Stream {
2727
public:
28-
I2S(PinMode direction = OUTPUT);
28+
I2S(PinMode direction = OUTPUT, pin_size_t bclk = 26, pin_size_t data = 28, pin_size_t mclk = 25);
2929
virtual ~I2S();
3030

3131
bool setBCLK(pin_size_t pin);

0 commit comments

Comments
 (0)