xmos / lib_i2s

I2S/TDM digital audio interface library
Other
20 stars 24 forks source link

.. |I2S| replace:: I\ :sup:2\ S

I2S/TDM Library

Summary

A software library that allows you to control an |I2S| or TDM (time division multiplexed) bus via xCORE ports. |I2S| and TDM are digital data streaming interfaces particularly appropriate for transmission of audio data. The components in the library are controlled via C using the XMOS multicore extensions (xC) and can either act as |I2S| master, TDM master or |I2S| slave.

Features ........

Resource Usage ..............

The I2S and TDM modules use one logical core and between 1.6 and 2.1kB of memory. IO usage is 1 x 1b port for each signal.

Software version and dependencies .................................

The CHANGELOG contains information about the current and previous versions. For a list of direct dependencies, look for DEPENDENT_MODULES in lib_i2s/module_build_info.

Notes on "frame-based" |I2S| implementations ............................................

The library supports both "sample-based" and "frame-based" versions of |I2S| master and slave. The "frame-based" versions are recommended for new designs and support higher |I2S| channel counts and rates. In addition, the number of callbacks to pass data to and from the |I2S| handler task are reduced. "Frame-based" |I2S| pass an array of channels per sample period whereas "sample-based" versions make a callback per channel within a sample period. The "frame-based" callbacks are all grouped together allowing the user side to make maximum use of the MIPS between |I2S| frames. For example, a 48kHz (20.83us) |I2S| interface supports a total of 19us processing per sample period, in any order, across the callbacks. The older "sample-based" versions are currently maintained to provide compatibility with existing code examples.

Related application notes .........................

The following application notes use this library: