Browse Source

runtime/atsamd21: i2s initialization fixes

pull/743/head
Mark Glines 5 years ago
committed by Ron Evans
parent
commit
00f745e351
  1. 14
      src/machine/machine_atsamd21.go

14
src/machine/machine_atsamd21.go

@ -877,29 +877,29 @@ func (i2s I2S) Configure(config I2SConfig) {
// now set serializer data size.
switch config.DataFormat {
case I2SDataFormat8bit:
i2s.Bus.SERCTRL1.SetBits(sam.I2S_SERCTRL_DATASIZE_8)
i2s.Bus.SERCTRL1.SetBits(sam.I2S_SERCTRL_DATASIZE_8 << sam.I2S_SERCTRL_DATASIZE_Pos)
case I2SDataFormat16bit:
i2s.Bus.SERCTRL1.SetBits(sam.I2S_SERCTRL_DATASIZE_16)
i2s.Bus.SERCTRL1.SetBits(sam.I2S_SERCTRL_DATASIZE_16 << sam.I2S_SERCTRL_DATASIZE_Pos)
case I2SDataFormat24bit:
i2s.Bus.SERCTRL1.SetBits(sam.I2S_SERCTRL_DATASIZE_24)
i2s.Bus.SERCTRL1.SetBits(sam.I2S_SERCTRL_DATASIZE_24 << sam.I2S_SERCTRL_DATASIZE_Pos)
case I2SDataFormat32bit:
case I2SDataFormatDefault:
i2s.Bus.SERCTRL1.SetBits(sam.I2S_SERCTRL_DATASIZE_32)
i2s.Bus.SERCTRL1.SetBits(sam.I2S_SERCTRL_DATASIZE_32 << sam.I2S_SERCTRL_DATASIZE_Pos)
}
// set serializer slot adjustment
if config.Standard == I2SStandardLSB {
// adjust right
i2s.Bus.SERCTRL1.ClearBits(sam.I2S_SERCTRL_SLOTADJ)
// transfer LSB first
i2s.Bus.SERCTRL1.SetBits(sam.I2S_SERCTRL_BITREV)
} else {
// adjust left
i2s.Bus.SERCTRL1.SetBits(sam.I2S_SERCTRL_SLOTADJ)
// reverse bit order?
i2s.Bus.SERCTRL1.SetBits(sam.I2S_SERCTRL_BITREV)
}
// set serializer mode.

Loading…
Cancel
Save