I'm trying to connect a HiLetgo PCM5102 I2S DAC to a Teensy 4.0, but I'm not getting any audio out. I have it wired as:
SCK - GND
BCK - BCLK1 (21)
DIN - OUT1A (7)
LCK - LRCLK1 (20)
GND - GND
VIN - +3.3v
The datasheet confirms that if I don't set SCK then it will use a phase-locked loop from BLK to sync its clock.
The red light on the audio board does come on: board with lit light
Checking with the oscilliscope, I see plausible values for the three digital inputs. Here's the left-right clock showing 44.1kHz as it should:
Here's the bit clock, showing 2.85MHz:
Dividing, this is 64 bits per sample, which I guess is four bytes each for left and right. This seems high to me, though the datasheet says it can take it.
The VIN also looked plausible, though I forgot to take a picture.
Is there anything else worth trying before deciding that the audio board is defective?
Here's my code, which should be putting out a sine wave:
#include <Audio.h>
#include <Wire.h>
#include <SPI.h>
#include <SD.h>
#include <SerialFlash.h>
// GUItool: begin automatically generated code
AudioSynthWaveformSine sine1; //xy=212,327
AudioOutputI2S i2s1; //xy=566,307
AudioConnection patchCord1(sine1, 0, i2s1, 0);
AudioControlSGTL5000 sgtl5000_1; //xy=449,467
// GUItool: end automatically generated code
void setup() {
Serial.begin(9600); // Initialize serial communication
while (!Serial) {} // Wait for serial monitor to open
Serial.println("Initializing audio...");
AudioMemory(10);
sgtl5000_1.enable();
sgtl5000_1.volume(1); // adjust the volume if necessary
sine1.frequency(440); // set the initial frequency to 440 Hz (A4)
Serial.println("Audio initialized.");
}
void loop() {
// nothing to do here, sine wave is generated continuously in the background
Serial.println("Running loop...");
delay(10000);
}
1 Answer 1
After reading the Amazon reviews more carefully, the problem was that there are four pads that need soldering:
- 1 / FLT - Filter select : Normal latency (Low) / Low latency (High)
- 2 / DEMP - De-emphasis control for 44.1kHz sampling rate: Off (Low) / On (High)
- 3 / XSMT - Soft mute control(1): Soft mute (Low) / soft un-mute (High)
- 4/ FMT - Audio format selection : I2S (Low) / Left justified (High)
I soldered 3 high and 1, 2, and 4 low. Now it works!