Nathan
02/18/2023, 2:58 AMimport i2s
import gpio
SCLK ::= gpio.Pin 5
LRCK ::= gpio.Pin 25
DSDIN ::= gpio.Pin 26
ASDOUT ::= gpio.Pin 35
main:
// Initialize I2S bus
bus := i2s.Bus --sck=SCLK --ws=LRCK --tx=DSDIN --rx=ASDOUT --sample_rate=44100 --bits_per_sample=16 --buffer_size=32
i := 255
while i-- > 0:
bytes := bus.read
print "Writing $(bytes.size) bytes"
print "$bytes"
bus.write bytes
Any advice would be much appreciated!floitsch
02/18/2023, 3:01 AMNathan
02/18/2023, 3:02 AMNathan
02/18/2023, 3:04 AMfloitsch
02/18/2023, 3:14 AMfloitsch
02/18/2023, 3:20 AMfloitsch
02/18/2023, 3:22 AMfloitsch
02/18/2023, 3:24 AMNathan
02/18/2023, 3:34 AMNathan
02/18/2023, 3:35 AMfloitsch
02/18/2023, 3:49 AMfloitsch
02/18/2023, 3:51 AMfloitsch
02/18/2023, 3:53 AMNathan
02/18/2023, 3:54 AMimport gpio
import i2c
SCL ::= gpio.Pin 23
SDA ::= gpio.Pin 18
ES8388_ADDR ::= 0x20
main:
bus := i2c.Bus --scl=SCL --sda=SDA
device := bus.device ES8388_ADDR
floitsch
02/18/2023, 3:54 AMNathan
02/18/2023, 3:54 AMfloitsch
02/18/2023, 3:54 AMfloitsch
02/18/2023, 3:57 AMNathan
02/18/2023, 3:58 AMNathan
02/18/2023, 5:38 AMNathan
02/18/2023, 6:01 AMmikkel.damsgaard
02/18/2023, 9:51 AMNathan
02/18/2023, 10:28 AMfloitsch
02/18/2023, 11:04 AMNathan
02/18/2023, 11:05 AMfloitsch
02/18/2023, 11:06 AMNathan
02/18/2023, 11:06 AMfloitsch
02/18/2023, 11:07 AMfloitsch
02/18/2023, 11:10 AMNathan
02/18/2023, 11:11 AMfloitsch
02/18/2023, 11:12 AMfloitsch
02/18/2023, 11:13 AMNathan
02/18/2023, 11:17 AMfloitsch
02/18/2023, 11:17 AMfloitsch
02/18/2023, 11:19 AMNathan
02/18/2023, 11:33 AMfloitsch
02/18/2023, 11:35 AMNathan
02/18/2023, 11:35 AMNathan
02/18/2023, 1:08 PMfloitsch
02/18/2023, 1:10 PMfloitsch
02/18/2023, 1:14 PMNathan
02/18/2023, 1:14 PMfloitsch
02/18/2023, 1:20 PMNathan
02/18/2023, 1:20 PMfloitsch
02/18/2023, 1:20 PMfloitsch
02/18/2023, 1:21 PMfloitsch
02/18/2023, 1:21 PMfloitsch
02/18/2023, 1:25 PMNathan
02/18/2023, 1:27 PMfloitsch
02/18/2023, 1:28 PMNathan
02/18/2023, 1:29 PMfloitsch
02/18/2023, 1:29 PMfloitsch
02/18/2023, 1:30 PMfloitsch
02/18/2023, 1:31 PMNathan
02/18/2023, 1:31 PMfloitsch
02/18/2023, 1:32 PMfloitsch
02/18/2023, 1:32 PMNathan
02/18/2023, 1:34 PMfloitsch
02/18/2023, 1:35 PMprint
output was automatically sent to the server and then the command-line.floitsch
02/18/2023, 1:35 PMfloitsch
02/18/2023, 1:36 PMfloitsch
02/18/2023, 1:37 PMfloitsch
02/18/2023, 1:37 PMjag scan <ip>
avoids the udp broadcast scanning and sets the target to the given IP)Nathan
02/18/2023, 1:37 PMNathan
02/18/2023, 1:38 PMfloitsch
02/18/2023, 1:38 PMfloitsch
02/18/2023, 1:38 PMNathan
02/18/2023, 1:39 PMmikkel.damsgaard
02/19/2023, 10:59 AMfloitsch
02/19/2023, 11:03 AMmikkel.damsgaard
02/19/2023, 1:05 PMNathan
02/19/2023, 11:01 PM// Set slave serial port mode
reg = registers_.read_u8 REG_DAC_POWER_MANAGEMENT
reg &= ~0b1000_0000
registers_.write_u8 REG_DAC_POWER_MANAGEMENT reg
I also added
// Enable internal power up/down sequence
reg = registers_.read_u8 REG_CHIP_CONTROL_1
reg |= 0b0000_1000
registers_.write_u8 REG_CHIP_CONTROL_1 reg
but it didn't seem to help, and the reference drivers don't mess with this bit so i reset and removed it for nowNathan
02/19/2023, 11:03 PMfloitsch
02/19/2023, 11:03 PMNathan
02/19/2023, 11:06 PMNathan
02/20/2023, 12:03 AMfloitsch
02/20/2023, 12:03 AMfloitsch
02/20/2023, 12:03 AMNathan
02/20/2023, 12:04 AMfloitsch
02/20/2023, 12:05 AMprint
should not be different.floitsch
02/20/2023, 12:05 AMNathan
02/20/2023, 12:07 AMcodec := ES8388 device
codec.on
then I don't get the print statements from the driver, so I am clearly instantiating the driver incorrectlyfloitsch
02/20/2023, 12:07 AMfloitsch
02/20/2023, 12:07 AMon
.floitsch
02/20/2023, 12:08 AMNathan
02/20/2023, 12:12 AMConstructing ES8388 device...
Initalizing ES8388 codec...
Writing 0x50 to register 1
Writing 0x00 to register 2
Writing 0x08 to register 3
Writing 0x3c to register 4
Writing 0x00 to register 8
Writing 0x0c to register 12
Nathan
02/20/2023, 12:21 AMfloitsch
02/20/2023, 12:23 AMfloitsch
02/20/2023, 12:23 AMprint
issue seems to have been a fluke, so I didn't expect to see anything bad...Nathan
02/20/2023, 12:23 AMNathan
02/20/2023, 1:18 AM// https://github.com/thaaraak/es8388/blob/master/src/es8388.cpp#L84-L120
Writing 0x04 to register 25 // 0x04 mute/0x00 unmute&ramp;DAC unmute and disabled digital volume control soft ramp
Writing 0x50 to register 1 // normal all and power up all
Writing 0x00 to register 2
Writing 0x00 to register 8 // CODEC IN I2S SLAVE MODE
Writing 0xC0 to register 4 // disable DAC and disable Lout/Rout/1/2
Writing 0x12 to register 0 // Enfr=0,Play&Record Mode,(0x17-both of mic&paly)
Writing 0x18 to register 23 // 1a 0x18:16bit iis , 0x00:24
Writing 0x02 to register 24 // DACFsMode,SINGLE SPEED; DACFsRatio,256
Writing 0x00 to register 38 // 0x00 audio on LIN1&RIN1, 0x09 LIN2&RIN2
Writing 0x90 to register 39 // only left DAC to left mixer enable 0db
Writing 0x90 to register 42 // only right DAC to right mixer enable 0db
Writing 0x80 to register 43 // set internal ADC and DAC use the same LRCK clock, ADC LRCK as internal LRCK
Writing 0x00 to register 45 // vroi=0
Special handling for ADC/DAC volume on registers 16, 17, 26 and 27 // 0db
Special handling for enabled outputs on register 4
Writing 0xFF to register 3
Writing 0x11 to register 9 // MIC Left and Right channel PGA gain
Special handling for enabled inputs on register 10
Writing 0x02 to register 11
Writing 0x0d to register 12 // Left/Right data, Left/Right justified mode, Bits length, I2S format
Writing 0x02 to register 13 //ADCFsMode,singel SPEED,RATIO=256
//ALC for Microphone
Special handling for ADC/DAC volume on registers 16, 17, 26 and 27 // 0db
Writing 0x09 to register 3 //Power on ADC, Enable LIN&RIN, Power off MICBIAS, set int1lp to low power mode
Nathan
02/20/2023, 1:21 AMfloitsch
02/20/2023, 1:21 AMNathan
02/20/2023, 1:28 AMNathan
02/20/2023, 3:36 AMInitalizing ES8388 codec...
Writing 0x04 to register 25
Writing 0x50 to register 1
Writing 0x00 to register 2
Writing 0x00 to register 8
Writing 0xC0 to register 4
Writing 0x12 to register 0
Writing 0x18 to register 23
Writing 0x02 to register 24
Writing 0x00 to register 38
Writing 0x90 to register 39
Writing 0x90 to register 42
Writing 0x80 to register 43
Writing 0x00 to register 45
Writing 0x00 to register 16
Writing 0x00 to register 17
Writing 0x00 to register 26
Writing 0x00 to register 27
Writing 0x3F to register 4
Writing 0xFF to register 3
Writing 0x11 to register 9
Writing 0x00 to register 10
Writing 0x02 to register 11
Writing 0x0D to register 12
Writing 0x02 to register 13
Writing 0x09 to register 3
Nathan
02/20/2023, 3:44 AMmikkel.damsgaard
02/20/2023, 6:16 AMmikkel.damsgaard
02/20/2023, 8:08 AMNathan
02/20/2023, 8:09 AMmikkel.damsgaard
02/20/2023, 8:09 AMNathan
02/20/2023, 8:09 AMNathan
02/20/2023, 8:09 AMNathan
02/20/2023, 8:10 AMmikkel.damsgaard
02/20/2023, 8:10 AM"0b%(08b value)"
I think.mikkel.damsgaard
02/20/2023, 8:11 AMNathan
02/20/2023, 8:11 AMmikkel.damsgaard
02/20/2023, 8:11 AMNathan
02/20/2023, 8:11 AMNathan
02/20/2023, 8:11 AMmikkel.damsgaard
02/20/2023, 8:13 AMNathan
02/20/2023, 8:14 AMmikkel.damsgaard
02/20/2023, 8:20 AM--mclk=(gpio.Pin 0)
mikkel.damsgaard
02/20/2023, 8:21 AMNathan
02/20/2023, 8:22 AMNathan
02/20/2023, 8:24 AMNathan
02/20/2023, 8:24 AMWriting 32 bytes
#[0xf9, 0xfe, 0x51, 0xff, 0xf5, 0xfe, 0x51, 0xff, 0xf7, 0xfe, 0x59, 0xff, 0xfd, 0xfe, 0x4f, 0xff, 0xf9, 0xfe, 0x4d, 0xff, 0x05, 0xff, 0x51, 0xff, 0xf9, 0xfe, 0x5b, 0xff, 0xfd, 0xfe, 0x55, 0xff]
mikkel.damsgaard
02/20/2023, 8:25 AMmikkel.damsgaard
02/20/2023, 8:26 AMNathan
02/20/2023, 8:26 AMNathan
02/20/2023, 8:27 AMNathan
02/20/2023, 8:28 AMFedex
02/24/2023, 1:15 PM