import 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
import 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
printf
print
print
jag scan <ip>
// Set slave serial port mode
reg = registers_.read_u8 REG_DAC_POWER_MANAGEMENT
reg &= ~0b1000_0000
registers_.write_u8 REG_DAC_POWER_MANAGEMENT reg
// 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
print
codec := ES8388 device
codec.on
on
Constructing 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
print
// 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
Initalizing 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
"0b%(08b value)"
--mclk=(gpio.Pin 0)
Writing 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]