I2S Output Port Change - Cave Phone

schwghrt

Member
Hi all,

I'm working on a project to replace Vietnam era POTS phones (TP-6N) that are used in Cave Rescue with something more modern. So far so good! I want to add some features, which means a second audio codec.

I've been successful in using the Teensy 4.0 to control the WM8960 audio codec as my amplifier. I'd like to control two of them using i2Squad, but I don't want to create a board that uses pin 32 (OUT1B).

I understand that there are 5 pins for I2S that can be divided up between in and out

For Input it is 8,6,9,32
For Output it is 7,32,9,6

output_i2S_quad implies that I need to use sequential outputs (i.e OUT1A/OUT1B, or OUT1B/OUT1C or OUT1C/OUT1D). Is this correct?

I assume it has to do with dma?

Code:
    switch (pinoffset) {
      case 0:
        CORE_PIN7_CONFIG  = 3;
        CORE_PIN32_CONFIG = 3;
        break;
      case 1:
        CORE_PIN32_CONFIG = 3;
        CORE_PIN9_CONFIG  = 3;
        break;
      case 2:
        CORE_PIN9_CONFIG  = 3;
        CORE_PIN6_CONFIG  = 3;
    }

If I want to use 2-IN and 2-OUT, I seem to be stuck using pin 32. Is that true?

I guess one option is to use 2-IN (8,6) and 3-OUT (7,32,9) and just ignore the middle channels?

Thank you,
Sam
 
I guess one option is to use 2-IN (8,6) and 3-OUT (7,32,9) and just ignore the middle channels?
Yes, I think this is probably your simplest option. Wire your second codec to pins 6 and 9 for the data, and the same clock pins, and use an AudioInputI2SQuad for the inputs, and an AudioOutputI2SHex for the outputs, and as you say, just don’t connect the middle ports of the latter in your sketch.

The alternate pin options for audio are quite limited, I think none for Teensy 4.0, and any other way of doing what you want would probably involve switching codecs to aTDM one, which seems more effort than it’s worth.
 
Back
Top