SDK4.0 This document shows Ameba SDK 4.0 APIs

- Main Page
- Modules
- Data Structures
- Files

Enumerator
I2S
Ameba SDK » HAL

i2s functions More...

## Ameba Common
enum | { SR_8KHZ = I2S_SR_8KHZ, SR_16KHZ = I2S_SR_16KHZ, SR_24KHZ = I2S_SR_24KHZ, SR_32KHZ = I2S_SR_32KHZ, SR_48KHZ = I2S_SR_48KHZ, SR_96KHZ = I2S_SR_96KHZ, SR_7p35KHZ = I2S_SR_7p35KHZ, SR_14p7KHZ = I2S_SR_14p7KHZ, SR_22p05KHZ = I2S_SR_22p05KHZ, SR_29p4KHZ = I2S_SR_29p4KHZ, SR_44p1KHZ = I2S_SR_44p1KHZ, SR_88p2KHZ = I2S_SR_88p2KHZ }
enum | { CH_STEREO = I2S_CH_STEREO, CH_MONO = I2S_CH_MONO }
enum | { WL_16b = I2S_WL_16, WL_24b = I2S_WL_24 }
enum | { I2S_DIR_RX = I2S_ONLY_RX, I2S_DIR_TX = I2S_ONLY_TX, I2S_DIR_TXRX = I2S_TXRX }
typedef void(* | i2s_irq_handler) (uint32_t id, char *pbuf)
typedef struct i2s_s | i2s_t
void | i2s_deinit (i2s_t *obj)
| Deinitializes the I2S device, include function/interrupt/I2S registers. More...
void | i2s_set_dma_buffer (i2s_t *obj, char *tx_buf, char *rx_buf, uint32_t page_num, uint32_t page_size)
| Sets page number, page size, page address. More...
void | i2s_tx_irq_handler (i2s_t *obj, i2s_irq_handler handler, uint32_t id)
| Sets TX interrupt handler. More...
void | i2s_rx_irq_handler (i2s_t *obj, i2s_irq_handler handler, uint32_t id)
| Sets RX interrupt handler. More...
void | i2s_set_direction (i2s_t *obj, int trx_type)
| Sets i2s data transfer direction. More...
void | i2s_set_param (i2s_t *obj, int channel_num, int rate, int word_len)
| Sets i2s channel number, sample rate, word length. More...
int * | i2s_get_tx_page (i2s_t *obj)
| Gets current tx page address. More...
void | i2s_send_page (i2s_t *obj, uint32_t *pbuf)
| Sets current tx page own by i2s. More...
void | i2s_recv_page (i2s_t *obj)
| Sets current rx page own by i2s. More...
void | i2s_enable (i2s_t *obj)
| Enable i2s interrupt and function. More...
void | i2s_disable (i2s_t *obj)
| Disable i2s interrupt and function. More...

## Ameba1 Only
void | i2s_init (i2s_t *obj, PinName sck, PinName ws, PinName sd)
| Initializes the I2S device, include clock/function/interrupt/I2S registers. More...

## AmebaZ Only
void | i2s_init (i2s_t *obj, PinName sck, PinName ws, PinName sd_tx, PinName sd_rx, PinName mck)
| Initializes the I2S device, include clock/function/interrupt/I2S registers. More...

## Detailed Description

i2s functions

## Function Documentation

void i2s_deinit | ( | i2s_t * | obj | ) |

Deinitializes the I2S device, include function/interrupt/I2S registers.

Parameters

  obj | i2s object define in application software.

Return values

  none |

void i2s_disable | ( | i2s_t * | obj | ) |

Disable i2s interrupt and function.

Parameters

  obj | i2s object define in application software.

Return values

  none |

void i2s_enable | ( | i2s_t * | obj | ) |

Enable i2s interrupt and function.

Parameters

  obj | i2s object define in application software.

Return values

  none |

int* i2s_get_tx_page | ( | i2s_t * | obj | ) |

Gets current tx page address.

Parameters

  obj | i2s object define in application software.

Return values

  | address of current tx page or NULL

Note
  current page own by cpu, return address of current tx page
  current page own by i2s, return NULL

void i2s_init | ( | i2s_t * | obj,
|  | PinName | sck,
|  | PinName | ws,
|  | PinName | sd
| ) |  |

Initializes the I2S device, include clock/function/interrupt/I2S registers.

Parameters

  obj | i2s object define in application software.
  sck | Serial clock PinName according to pinmux spec.
  ws | Word select PinName according to pinmux spec.
  sd | PinName according to pinmux spec.

Return values

  none |

void i2s_init | ( | i2s_t * | obj,
|  | PinName | sck,
|  | PinName | ws,
|  | PinName | sd_tx,
|  | PinName | sd_rx,
|  | PinName | mck
| ) |  |

Initializes the I2S device, include clock/function/interrupt/I2S registers.

Parameters

  obj | i2s object define in application software.
  sck | Serial clock PinName according to pinmux spec.
  ws | Word select PinName according to pinmux spec.
  sd_tx | Tx PinName according to pinmux spec.
  sd_rx | Rx PinName according to pinmux spec.
  mck | Master clock PinName according to pinmux spec.

Return values

  none |

void i2s_recv_page | ( | i2s_t * | obj | ) |

Sets current rx page own by i2s.

Parameters

  obj | i2s object define in application software.

Return values

  none |

void i2s_rx_irq_handler | ( | i2s_t * | obj,
|  | i2s_irq_handler | handler,
|  | uint32_t | id
| ) |  |

Sets RX interrupt handler.

Parameters

  obj | i2s object define in application software.
  handler | RX interrupt callback function.
  id | RX interrupt callback function parameter.

Return values

  none |

void i2s_send_page | ( | i2s_t * | obj,
|  | uint32_t * | pbuf
| ) |  |

Sets current tx page own by i2s.

Parameters

  obj | i2s object define in application software.
  pbuf | tx buffer adderss.

Return values

  none |

void i2s_set_direction | ( | i2s_t * | obj,
|  | int | trx_type
| ) |  |

Sets i2s data transfer direction.

Parameters

  obj | i2s object define in application software.
  trx_type | transfer direction. This parameter can be one of the following values: I2S_DIR_RX: Rx receive direction I2S_DIR_TX: Tx transmission direction I2S_DIR_TXRX: Tx & Rx bi-direction

Return values

  none |

void i2s_set_dma_buffer | ( | i2s_t * | obj,
|  | char * | tx_buf,
|  | char * | rx_buf,
|  | uint32_t | page_num,
|  | uint32_t | page_size
| ) |  |

Sets page number, page size, page address.

Parameters

  obj | i2s object define in application software.
  tx_buf | pointer to the start address of Tx page.
  rx_buf | pointer to the start address of Rx page.
  page_num | page number. This parameter must be set to a value in the 2~4 range
  page_size | page size. This parameter must be set to a value in the 4~16384 bytes range

Return values

  none |

void i2s_set_param | ( | i2s_t * | obj,
|  | int | channel_num,
|  | int | rate,
|  | int | word_len
| ) |  |

Sets i2s channel number, sample rate, word length.

Parameters

  obj | i2s object define in application software.
  channel_num | this parameter can be one of the following values: CH_STEREO: stereo channel CH_MONO: mono channel
  rate | this parameter can be one of the following values: SR_8KHZ: sample rate is 8kHz SR_16KHZ: sample rate is 16kHz SR_24KHZ: sample rate is 24kHz SR_32KHZ: sample rate is 32kHz SR_48KHZ: sample rate is 48kHz SR_96KHZ: sample rate is 96kHz SR_7p35KHZ: sample rate is 7.35kHz SR_14p7KHZ: sample rate is 14.7kHz SR_22p05KHZ: sample rate is 22.05kHz SR_29p4KHZ: sample rate is 29.4kHz SR_44p1KHZ: sample rate is 44.1kHz SR_88p2KHZ: sample rate is 88.2kHz
  word_len | this parameter can be one of the following values: WL_16b: sample bit is 16 bit WL_24b: sample bit is 24 bit

Return values

  none |

void i2s_tx_irq_handler | ( | i2s_t * | obj,
|  | i2s_irq_handler | handler,
|  | uint32_t | id
| ) |  |

Sets TX interrupt handler.

Parameters

  obj | i2s object define in application software.
  handler | TX interrupt callback function.
  id | TX interrupt callback function parameter.

Return values

  none |