nodemcu-firmware/docs/en/modules/i2s.md

3.5 KiB

I2S Module

Since Origin / Contributor Maintainer Source
2017-04-29 zelll Arnim Läuger i2s.c

The I2S module provides access to the in-built two I2S controllers.

!!! note "DAC mode configuration" DACs are only available for DAC built-in mode on I2S peripheral 0.

!!! note "ADC mode configuration" Only ADC1 is available for ADC built-in mode.

i2s.start()

Configuration and start I2S bus.

Syntax

i2s.start(i2s_num, cfg, cb)

Parameters

  • i2s_num I2S peripheral 0 or 1
  • cfg table containing configuration data:
    • mode I2S work mode. Optional, defaults to i2s.MODE_MASTER + i2s.MODE_TX when omitted
      • i2s.MODE_MASTER
      • i2s.MODE_SLAVE
      • i2s.MODE_TX
      • i2s.MODE_RX
      • i2s.MODE_DAC_BUILT_IN
      • i2s.MODE_ADC_BUILT_IN
      • i2s.MODE_PDM
    • rate audio sample rate. Optional, defauls to 44100 when omitted
    • bits bits per sample. Optional, defaults to 16 when omitted
    • channel channel format of I2S stream. Optional, defaults to i2s.CHANNEL_RIGHT_LEFT when omitted
      • i2s.CHANNEL_RIGHT_LEFT
    • i2s.CHANNEL_ALL_LEFT
    • i2s.CHANNEL_ONLY_LEFT
    • i2s.CHANNEL_ALL_RIGHT
    • i2s.CHANNEL_ONLY_RIGHT
    • format communicarion format. Optional, defaults to i2s.FORMAT_I2S + i2s.FORMAT_I2S_MSB when omitted
      • i2s.FORMAT_I2S
      • i2s.FORMAT_I2S_MSB
      • i2s.FORMAT_I2S_LSB
      • i2s.FORMAT_PCM
      • i2s.FORMAT_PCM_SHORT
      • i2s.FORMAT_PCM_LONG
    • buffer_count number of dma buffers. Optional, defaults to 2 when omitted
    • buffer_len size of one dma buffer. Optional, defaults to rate/100
    • bck_pin clock pin, optional
    • ws_pin WS pin, optional
    • data_out_pin data output pin, optional
    • data_in_pin data input pin, optional
    • dac_mode DAC mode configuration. Optional, defaults to i2s.DAC_CHANNEL_DISABLE if omitted
      • i2s.DAC_CHANNEL_DISABLE
      • i2s.DAC_CHANNEL_RIGHT
      • i2s.DAC_CHANNEL_LEFT
      • i2s.DAC_CHANNEL_BOTH
    • adc1_channel ADC1 channel number 0..7. Optional, defaults to off is omitted
  • cb function called when transmit data is requested or received data is available
    • the function is called with parameters i2s_num and dir
      • dir is "tx" for TX data request. Function shall call i2s.write().
      • dir is "rx" for RX data available. Function shall call i2s.read().

Returns

nil

An error is thrown in case of invalid parameters or if the channel failed.

i2s.stop()

Stop I2S bus

Syntax

i2s.stop(i2s_num)

Parameters

  • i2s_num I2S peripheral 0 or 1

Returns

nil

An error is thrown in case of invalid parameters or if the channel failed.

i2s.read()

Read data from data-in

Syntax

i2s.read(i2s_num, size[, wait_ms])

Parameters

  • i2s_num I2S peripheral 0 or 1
  • size Bytes to read
  • wait_ms Millisecond to wait if data is not ready. Optional, defaults to 0 (not to wait) if omitted.

Returns

Data read from data-in pin. If data is not ready in wait_ms millisecond, less than size bytes can be returned.

i2s.write()

Write to I2S bus.

Syntax

i2s.write(i2s_num, data)

Parameters

  • i2s_num I2S peripheral 0 or 1
  • data string containing I2S stream data

Returns

nil

An error is thrown in case of invalid parameters or if the channel failed.