All Libraries

Quick Search Results

  • Version
    Updated
    Download
    Title

  • Version
    Updated
    Download
    Title

Audio

  • Version
    Updated
    Download
    Title
  • I2S/TDM Library

    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 interface particularly appropriate for transmission of audio data. The components in the libary are controlled via C using the XMOS multicore extensions (xC) and can either act as I2S master, TDM master or I2S slave.

    Features

    • I2S master, TDM master and I2S slave modes.
    • Handles multiple input and output data lines.
    • Support for standard I2S, left justified or right justified data modes for I2S.
    • Support for multiple formats of TDM synchronization signal.
    • Sample rate support up to 192KHz.
    • Up to 32 channels in/32 channels out (depending on sample rate)

    Resource Usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    I2S Master

    3 + data lines

    3 x (1-bit) + data lines

    2

    ~1.8K

    1

    I2S Slave

    2 + data lines

    2 x (1-bit) + data lines

    1

    ~1.3K

    1

    TDM Master

    2 + data lines

    2 x (1-bit) + data lines

    1

    ~1.6K

    1

    Software version and dependencies

    This document pertains to version 2.1.1 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    This library depends on the following other libraries:

    • lib_logging (>=2.0.0)
    • lib_xassert (>=2.0.0)

    The following application notes use this library:

    • AN00162 - Using the I2S library
  • Microphone array library 2.0.0

    Microphone array library

    The XMOS microphone array library is designed to allow interfacing to PDM microphones coupled with efficient decimation to user selectable output sample rates. Additionally, a high resolution delay can be introduced to each of the individual PDM microphones allowing for individual time shifts. This library is only avaliable for XS2 devices.

    Features

    The microphone array library has the following features:

    • 48kHz, 24kHz, 16kHz, 12kHz and 8kHz output sample rate by default (3.072MHz PDM clock),
    • 44.1kHz, 22.05kHz, 14.7kHz, 11.025kHz and 7.35kHz output sample rate by default (2.8224MHz PDM clock),
    • 4, 8, 12 or 16 PDM interfaces per tile,
    • No less than 80dB of stop band attenuation for all output sample frequencies,
    • Configurable latency, ripple and bandwidth,
    • Framing, configurable frame size from 1 sample to 8192 samples plus 50% overlapping frames option,
    • Windowing and sample index bit reversal within a frame,
    • Individual microphone gain compensation,
    • DC offset removal,
    • Up to 3.072MHz input sample rate,
    • High resolution (2.63 microsecond) microphone specific delay lines,
    • Every task requires only a 62.5 MIPS core to run.

    Components

    • PDM interface,
    • Four channel decimators,
    • High resolution delay block.

    Software version and dependencies

    This document pertains to version 2.0.0 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    This library depends on the following other libraries:

    • lib_logging (>=2.0.0)
    • lib_xassert (>=2.0.0)

    None

  • S/PDIF library

    A software defined S/PDIF library that allows you to trasnmit or receive S/PDIF data via xCORE ports. S/PDIF is a digital data streaming interface. The components in the libary are controlled via C using the XMOS multicore extensions (xC) and provides both a S/PDIF receiver and transmitter.

    Features

    • Supports stereo S/PDIF receive up to sample rates up to 96KHz
    • Supports stereo S/PDIF transmit up to 192KHz

    Typical Resource Usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    Transmit

    1

    1 (1-bit)

    1

    ~3.8K

    1

    Receive

    1

    1 (1-bit)

    1

    ~3.9K

    1

    Software version and dependencies

    This document pertains to version 2.0.2 of this library. It is known to work on version 14.2.1 of the xTIMEcomposer tools suite, it may work on other versions.

    The library does not have any dependencies (i.e. it does not rely on any other libraries).

    The following application notes use this library:

    • AN00231 - SPDIF Receive to I2S output using Asynchronous Sample Rate Conversion
  • Sample Rate Conversion Library 1.0.0

    Sample Rate Conversion Library

    The XMOS Sample Rate Conversion (SRC) library provides both synchronous and asynchronous audio sample rate conversion functions for use on xCORE-200 multicore micro-controllers.

    In systems where the rate change is exactly equal to the ratio of nominal rates, synchronous sample rate conversion (SSRC) provides efficient and high performance rate conversion. Where the input and output rates are not locked by a common clock or clocked by an exact rational frequency ratio, the Asynchronous Sample Rate Converter (ASRC) provides a way of streaming high quality audio between the two different clock domains, at the cost of higher processing resource usage. ASRC can ease interfacing in cases where the are multiple digital audio inputs or allow cost saving by removing the need for physical clock recovery using a PLL.

    Features

    • Conversion between 44.1, 48, 88.2, 96, 176.4 and 192KHz input and output sample rates
    • 32 bit PCM input and output data in Q1.31 signed format
    • Optional output dithering to 24 bit using Triangular Probability Density Function (TPDF)
    • Optimized for xCORE-200 instruction set with dual-issue
    • Block based processing - Minimum 4 samples input per call, must be power of 2
    • Up to 10000 ppm sample rate ratio deviation from nominal rate (ASRC only)
    • Very high quality - SNR greater than 135db (ASRC) or 140db (SSRC), with THD of less than 0.0001% (reference 1KHz)
    • Configurable number of audio channels per SRC instance
    • Reentrant library permitting multiple instances with differing configurations and channel count
    • No external components (PLL or memory) required

    Components

    • Synchronous Sample Rate Converter function
    • Asynchronous Sample Rate Converter function

    Software version and dependencies

    This document pertains to version 1.0.0 of this library. It is known to work on version 14.2.0 of the xTIMEcomposer tools suite, it may work on other versions.

    This library depends on the following other libraries:

    • lib_logging (>=2.0.0)
    • lib_xassert (>=2.0.0)

    The following application notes use this library:

    • AN00230 - [Adding Synchronous Sample Rate Conversion to the USB Audio reference design]
    • AN00231 - [SPDIF receive to I2S output using Asynchronous Sample Rate Conversion]

    Typical Resource Usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    SSRC

    0

    0

    0

    ~30.5K

    1

    The SSRC algorithm runs a series of cascaded FIR filters to perform the rate conversion. This includes interpolation, decimation and bandwidth limiting filters with a final polyphase FIR filter. The last stage supports the rational rate change of 147:160 or 160:147 allowing conversion between 44.1KHz family of sample rates to the 48KHz family of sample rates.

    The below table shows the worst case MHz consumption at a given sample rate using the minimum block size of 4 input samples with dithering disabled. The MHz requirement can be reduced by around 8-12%, depending on sample rate, by increasing the input block size to 16. It is not usefully reduced by increasing block size beyond 16.

    SSRC Processor Usage per Channel (MHz)
     

    Output sample rate

             

    Input sample rate

    44.1KHz

    48KHz

    88.2KHz

    96KHz

    176.4KHz

    192KHz

    44.1KHz

    1MHz

    23MHz

    16MHz

    26MHz

    26MHz

    46MHz

    48KHz

    26MHz

    1MHz

    28MHz

    17MHz

    48MHz

    29MHz

    88.2KHz

    18MHz

    43MHz

    1MHz

    46MHz

    32MHz

    53MHz

    96KHz

    48MHz

    20MHz

    52MHz

    2MHz

    56MHz

    35MHz

    176.4KHz

    33MHz

    61MHz

    37MHz

    67MHz

    3MHz

    76MHz

    192KHz

    66MHz

    36MHz

    70MHz

    40MHz

    80MHz

    4MHz

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    ASRC

    0

    0

    0

    ~28.5K

    1

    The ASRC algorithm also runs a series of cascaded FIR filters to perform the rate conversion. The final filter is different because it uses adaptive coefficients to handle the varying rate change between the input and the output. The adaptive coefficients must be computed for each output sample period, but can be shared amongst all channels within the ASRC instance. Consequently, the MHz usage of the ASRC is expressed as two tables; the first table enumerates the MHz required for the first channel with adaptive coefficients calculation and the second table specifies the MHz required for filtering of each additional channel processed by the ASRC instance.

    The below tables show the worst case MHz consumption per sample, using the minimum block size of 4 input samples. The MHz requirement can be reduced by around 8-12% by increasing the input block size to 16.

    Typically you will need to allow for performance headroom for buffering (especially if the system is sample orientated rather than block orientated) and inter-task communication. Please refer to the application notes for practical examples of usage.

    ASRC Processor Usage (MHz) for the First Channel in the ASRC Instance
     

    Output sample rate

             

    Input sample rate

    44.1KHz

    48KHz

    88.2KHz

    96KHz

    176.4KHz

    192KHz

    44.1KHz

    29MHz

    30MHz

    40MHz

    42MHz

    62MHz

    66MHz

    48KHz

    33MHz

    32MHz

    42MHz

    43MHz

    63MHz

    66MHz

    88.2KHz

    47MHz

    50MHz

    58MHz

    61MHz

    80MHz

    85MHz

    96KHz

    55MHz

    51MHz

    67MHz

    64MHz

    84MHz

    87MHz

    176.4KHz

    60MHz

    66MHz

    76MHz

    81MHz

    105MHz

    106MHz

    192KHz

    69MHz

    66MHz

    82MHz

    82MHz

    109MHz

    115MHz

    Configurations requiring more than 100MHz cannot currently be run in real time on a single core. The performance limit for a single core on a 500MHz xCORE-200 device is 100MHz (500/5). Further optimization of the library, including assembler optimization and pipelining of the adaptive filter generation and FIR filter stages, is feasible to achieve higher sample rate operation within the constraints of a 100MHz logical core.

    ASRC Processor Usage (MHz) for Subsequent Channels in the ASRC Instance
     

    Output sample rate

             

    Input sample rate

    44.1KHz

    48KHz

    88.2KHz

    96KHz

    176.4KHz

    192KHz

    44.1KHz

    28MHz

    28MHz

    32MHz

    30MHz

    40MHz

    40MHz

    48KHz

    39MHz

    31MHz

    33MHz

    36MHz

    40MHz

    45MHz

    88.2KHz

    51MHz

    49MHz

    57MHz

    55MHz

    65MHz

    60MHz

    96KHz

    51MHz

    56MHz

    57MHz

    62MHz

    66MHz

    71MHz

    176.4KHz

    60MHz

    66MHz

    76MHz

    79MHz

    92MHz

    91MHz

    192KHz

    69MHz

    66MHz

    76MHz

    82MHz

    90MHz

    100MHz

Board/Device Support

  • Version
    Updated
    Download
    Title
  • A-Series Support Library

    This library provides support for accessing the available functionality of the XMOS A-Series devices.

    Features

    • ADC support.
    • Sleep support.
    • Watchdog timer support.

    Software version and dependencies

    This document pertains to version 2.0.1 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    This library depends on the following other libraries:

    • lib_logging (>=2.0.0)
    • lib_xassert (>=2.0.0)

  • Microphone array board support library 1.0.0

    Microphone array board support library

    Library for controlling the XMOS microphone array ref design 1v0.

    Features

    The microphone array board support library has the following features:

    • button and led interface

    Typical Resource Usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    Default

    13

    3 (1-bit), 1 (4-bit), 2 (8-bit)

    0

    ~1.3K

    1

    Software version and dependencies

    This document pertains to version 1.0.0 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    The library does not have any dependencies (i.e. it does not rely on any other libraries).

    None avaliable.

  • OTP reading library

    This module contains functions for reading board information (e.g. serial number, MAC address) from the OTP memory of an XCore. This information can be written to the device using the XBURN develop tool provider by XMOS.

    Software version and dependencies

    This document pertains to version 2.0.1 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    The library does not have any dependencies (i.e. it does not rely on any other libraries).

  • sliceKIT board support library

    The sliceKIT support library for managing the flash port multiplex on the xCORE sliceKIT core board.

    Software version and dependencies

    This document pertains to version 2.0.1 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    The library does not have any dependencies (i.e. it does not rely on any other libraries).

  • Startkit support library

    This library provides support for accessing the available functionaility of the startKIT development board.

    Features

    • Ability to access on-board ADC.
    • Ability to access LEDs and buttons.
    • Ability to access the board’s capacitive sensors.

    Resource usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    Simple LED control

    9

    1 (32-bit)

    0

    ~2.2K

    0

    LED, buttons and cap-sense

    9

    1 (32-bit), 2 (4-bit)

    1

    ~14.2K

    ≤ 1

    ADC

    5

    1 (1-bit)

    0

    ~3.7K

    ≤ 1

    Cap-sense slider

    9

    1 (4-bit)

    1

    ~12.1K

    ≤ 1

    Software version and dependencies

    This document pertains to version 3.0.1 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    The library does not have any dependencies (i.e. it does not rely on any other libraries).

    The following application notes use this library:

    • AN00173 - A startKIT accelerometer demo
    • AN00174 - A startKIT glowing LED demo
    • AN00175 - A startKIT LED demo
    • AN00176 - A startKIT noughts and crosses game (tic-tac-toe)
    • AN00177 - A startKIT ADC example
  • U-Series Support Library

    This library provides support for accessing the available functionality of the XMOS U-Series devices.

    Features

    • ADC support.

    Software version and dependencies

    This document pertains to version 2.0.1 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    This library depends on the following other libraries:

    • lib_logging (>=2.0.0)
    • lib_xassert (>=2.0.0)

Display

  • Version
    Updated
    Download
    Title
  • Display controller library

    The XMOS display controller library provides the service of removing the real-time constraint of maintaining the LCDs line buffer from the application and provides a managed frame buffering service. It does this by using an SDRAM as a storage for the frame buffers.

    Features

    • Asynchronous non-blocking interface for modifying frame buffers,
    • User configurable number of frame buffers.

    Components

    • Display controller

    Resource Usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    Display controller server, 2 frame buffers of 480x272 pixels

    0

    0

    0

    ~10.8K

    0

    Display controller server, 4 frame buffers of 480x272 pixels

    0

    0

    0

    ~10.9K

    0

    Display controller server, 8 frame buffers of 480x272 pixels

    0

    0

    0

    ~11.0K

    0

    Software version and dependencies

    This document pertains to version 3.0.1 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    This library depends on the following other libraries:

    • lib_sdram (>=3.0.0)
    • lib_lcd (>=3.0.0)

    The following application notes use this library:

    • AN00169 - Using the display controller library
  • LCD Library

    The XMOS LCD library allows you to interface to LCD screens via a parallel bus.

    Features

    • Standard component to support different types LCD displays with RGB 565
    • Resolution of up to 800 * 480 pixels
    • Up to 62.5 MHz pixel clock
    • Hsync/Vsync and/or Data_Enable signal interfaces supported
    • Configurable porch timings

    Components

    • LCD server
    • LCD server with synchronization

    Resource Usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    LCD server, 16 bit data, sync mode: DE

    18

    2 (1-bit), 1 (16-bit)

    1

    ~1.0K

    1

    LCD server, 16 bit data, sync mode: h_sync, v_sync

    19

    3 (1-bit), 1 (16-bit)

    1

    ~1.1K

    1

    LCD server, 16 bit data, sync mode: h_sync, v_sync, DE

    20

    4 (1-bit), 1 (16-bit)

    1

    ~0.8K

    1

    LCD server with synchronization, 16 bit data, sync mode: DE

    18

    2 (1-bit), 1 (16-bit)

    1

    ~1.0K

    1

    LCD server with synchronization, 16 bit data, sync mode: h_sync, v_sync

    19

    3 (1-bit), 1 (16-bit)

    1

    ~1.1K

    1

    LCD server with synchronization, 16 bit data, sync mode: h_sync, v_sync, DE

    20

    4 (1-bit), 1 (16-bit)

    1

    ~0.8K

    1

    Software version and dependencies

    This document pertains to version 3.0.1 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    The library does not have any dependencies (i.e. it does not rely on any other libraries).

    The following application notes use this library:

    • AN00168 - Using the LCD library

DSP

  • Version
    Updated
    Download
    Title
  • xCORE-200 DSP Library

    This API reference manual describes the XMOS fixed-point digital signal processing software library. The library implements of a suite of common signal processing functions for use on XMOS xCORE-200 multicore microcontrollers.

    Required tools and libraries

    • xTIMEcomposer Tools Version 14.1.2 or later

    Required hardware

    Only XMOS xCORE-200 based multicore microcontrollers are supported with this library. The previous generation XS1 based multicore microntrollers are not supported.

    The xCORE-200 has a single cycle 32x32->64 bit multiply/accumulate unit, single cycle double-word load and store, dual issue instruction execution, and other instruction set enhancements. These features make xCORE-200 an efficient platform for executing digital signal processing algorithms.

    Prerequisites

    This document assumes familiarity with the XMOS xCORE architecture, the XMOS tool chain, the ‘C’ programming language, and digital signal processing concepts.

    Software version and dependencies

    This document pertains to version 2.0.0 of this library. It is known to work on version 14.2.0 of the xTIMEcomposer tools suite, it may work on other versions.

    The library does not have any dependencies (i.e. it does not rely on any other libraries).

    The following application notes use this library:

    • AN00209 - xCORE-200 DSP Library

External Memory

  • Version
    Updated
    Download
    Title
  • SDRAM Library

    The XMOS SDRAM module is designed for 16 bit read and write access of arbitrary length at up to 62.5MHz clock rates. It uses an optimized pinout with address and data lines overlaid along with other pinout optimizations to implement 16 bit read/write with up to 13 address lines with a total of just 20 pins.

    Features

    The SDRAM component has the following features:

    • Configurability of:
      • SDRAM geometry
      • clock rate
      • refresh properties
    • Supports:
      • read
      • write
      • one or more clients
      • asynchronous command decoupling with a command queue of length 8 for each client
      • refresh handled by the SDRAM component itself
    • Requires a single core for the server

    Components

    • SDRAM server
    • Memory address allocator

    Resource Usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    SDRAM server

    20

    4 (1-bit), 1 (16-bit)

    1

    ~4.0K

    1

    Memory address allocator

    0

    0

    0

    ~0.2K

    0

    Software version and dependencies

    This document pertains to version 3.1.0 of this library. It is known to work on version 14.2.0 of the xTIMEcomposer tools suite, it may work on other versions.

    The library does not have any dependencies (i.e. it does not rely on any other libraries).

    The following application notes use this library:

    • AN00170 - Using the SDRAM library

Networking

  • Version
    Updated
    Download
    Title
  • Embedded Webserver Library

    This software library allows you to generate a webserver that communicates using the XMOS TCP/IP server component.

    Features

    • Automatically package a file tree of web pages into data that be accessed on the device
    • Store web pages in either program memory or on an attached SPI flash
    • Call C/XC functions from within web page templates to access dynamic content
    • Handle GET and POST HTTP requests
    • Separate the handling of TCP traffic and the access of flash into different tasks passing data over XC channels. Allowing you to integrate the webserver in other applications that already handle TCP or access flash.

    Typical Resource Usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    Default

    0

    0

    0

    ~5.8K

    1

    Note that this does not include the TCP/IP stack (which is a separate library) or any web-pages stored in memory.

    Software version and dependencies

    This document pertains to version 2.0.1 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    This library depends on the following other libraries:

    • lib_xtcp (>=4.0.0)

    The following application notes use this library:

    • AN00122 - Using the XMOS embedded webserver library
  • Ethernet MAC 3.1.1

    Ethernet MAC library

    The Ethernet MAC library provides a complete, software defined, Ethernet MAC that supports 10/100/1000 Mb/s data rates and is designed to IEEE Std 802.3-2002 specifications.

    Features

    • 10/100/1000 Mb/s full-duplex operation
    • Media Independent Interface (MII) and Reduced Gigabit Media Independent Interface (RGMII) to the physical layer
    • Configurable Ethertype and MAC address filters for unicast, multicast and broadcast addresses
    • Frame alignment, CRC, and frame length error detection
    • IEEE 802.1Q Audio Video Bridging priority queueing and credit based traffic shaper
    • Support for VLAN-tagged frames
    • Transmit and receive frame timestamp support for IEEE 1588 and 802.1AS
    • Management Data Input/Output (MDIO) Interface for physical layer management

    Components

    • 10/100 Mb/s Ethernet MAC
    • 10/100 Mb/s Ethernet MAC with real-time features
    • 10/100/1000 Mb/s Ethernet MAC with real-time features (xCORE-200 XE/XEF)
    • Raw MII interface

    Software version and dependencies

    This document pertains to version 3.1.1 of this library. It is known to work on version 14.1.0 of the xTIMEcomposer tools suite, it may work on other versions.

    This library depends on the following other libraries:

    • lib_logging (>=2.0.0)
    • lib_locks (>=2.0.0)
    • lib_xassert (>=2.0.0)
    • lib_gpio (>=1.0.0)

  • TCP/IP Library

    A TCP/UDP/IP protocol stack for XMOS devices. This library connects to the XMOS Ethernet library to provide layer-3 traffic over Ethernet via MII or RGMII.

    Features

    • TCP + UDP connection handling
    • DHCP, IP4LL, ICMP, IGMP support
    • Low level, event based interface for efficient memory usage
    • Based on the open-source uIP stack
    • Currently, the library does not officially support IPv6. However, experimental code for IPv6 support is contained in the library. Contact XMOS for more details if you require IPv6.

    Typical Resource Usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    Standard

    0

    0

    0

    ~21.1K

    1

    Software version and dependencies

    This document pertains to version 4.0.2 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    This library depends on the following other libraries:

    • lib_otpinfo (>=2.0.0)
    • lib_ethernet (>=3.0.3)

    The following application notes use this library:

    • AN00121 - Using the XMOS TCP/IP library
  • TSN 7.0.2

    Time Sensitive Networking Library

    This library provides components for creating time sensitive networking and media transport applications. In particular, it supports the various standards for Ethernet AVB (Audio Video Bridging).

    Features

    • 1722 61883-6 audio Talker and Listener (simultaneous) support
    • 1722 MAAP support for Talkers
    • 802.1Q MRP, MVRP, MSRP protocols
    • gPTP server and protocol
    • Media clock recovery and interface to PLL clock source
    • Support for 1722.1 AVDECC: ADP, AECP (AEM) and ACMP

    Software version and dependencies

    This document pertains to version 7.0.2 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    This library depends on the following other libraries:

    • lib_logging (>=2.0.0)
    • lib_xassert (>=2.0.0)
    • lib_i2c (>=3.0.0)
    • lib_ethernet (>=3.0.3)
    • lib_otpinfo (>=2.0.0)

Programming Utilities

  • Version
    Updated
    Download
    Title
  • Debug printing library

    This library provides a lightweight printf function that can be enabled or disabled via configuration defines. Code can be declared to be within a “debug unit” (usually a library or application source base) and prints can be enabled/disabled per debug unit.

    Features

    • Low memory usage
    • Ability to enable or disable printing via compile options
    • Ability to enable or disable printing for sets of source files

    Software version and dependencies

    This document pertains to version 2.0.1 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    The library does not have any dependencies (i.e. it does not rely on any other libraries).

  • GPIO Library

    The XMOS GPIO library allows you to access XMOS ports as low-speed GPIO

    Although XMOS ports can be directly accessed via the xC programming language this library allows more flexible usage. In particular, it allows splitting a multi-pin output/input port to be able to the individual pins independently. It also allows accessing ports across separate XMOS tiles or separate XMOS chips.

    Features

    • Abstract interface to GPIO functionality of XMOS ports
    • Allow separate access to multibit ports
    • Allow access to ports across tiles

    Operating modes

    • Multibit output for individual access to the pins of a multibit output port
    • Multibit input for individual access to the pins of a multibit input port
    • Multibit input for individual access to the pins of a multibit input port allowing the application to react to events on those pins

    Software version and dependencies

    This document pertains to version 1.0.1 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    This library depends on the following other libraries:

    • lib_xassert (>=2.0.0)

    The following application notes use this library:

    • AN00166 - How to access individual pins of a multi-bit port
  • Lightweight assertions library

    This library provides a lightweight and flexible replacement for the standard C header assert.h.

    The assertions in this library can be be enabled/disabled and configured as to how much debug information they show. This configuration can be per “debug unit” (i.e. for sets of files).

    Features

    • Low memory usage
    • Ability to enable or disable various features via compile time defines

    Software version and dependencies

    This document pertains to version 2.0.1 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    The library does not have any dependencies (i.e. it does not rely on any other libraries).

  • Lock handling Library

    This library provides access to hardware and software locks for use in concurrent C programs. In general it is not safe to use these to marshall within XC due to the assumptions XC makes about safe concurrent data access.

    Two types of locks are provided. Hardware locks are fast and power efficient but there are a limited number per tile. Software locks are slower but you can use an unlimited number of them.

    Software version and dependencies

    This document pertains to version 2.0.2 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    The library does not have any dependencies (i.e. it does not rely on any other libraries).

Serial Peripherals

  • Version
    Updated
    Download
    Title
  • I2C Library

    A software defined, industry-standard, I2C library that allows you to control an I2C bus via xCORE ports. I2C is a two-wire hardware serial interface, first developed by Philips. The components in the libary are controlled via C using the XMOS multicore extensions (xC) and can either act as I2C master or slave.

    The libary is compatible with multiple slave devices existing on the same bus. The I2C master component can be used by multiple tasks within the xCORE device (each addressing the same or different slave devices).

    Features

    • I2C master and I2C slave modes.
    • Supports speed up to 400 Kb/s.
    • Clock stretching suppoirt.
    • Synchronous and asynchronous APIs for efficient usage of processing cores.

    Typical Resource Usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    Master

    2

    2 (1-bit)

    0

    ~1.1K

    0

    Master (single port)

    2

    1 (multi-bit)

    0

    ~0.9K

    0

    Master (asynchronous)

    2

    2 (1-bit)

    0

    ~3.1K

    1

    Master (asynchronous, combinable)

    2

    2 (1-bit)

    0

    ~2.9K

    ≤ 1

    Slave

    2

    2 (1-bit)

    0

    ~1.4K

    ≤ 1

    Software version and dependencies

    This document pertains to version 3.1.3 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    This library depends on the following other libraries:

    • lib_logging (>=2.0.0)
    • lib_xassert (>=2.0.0)

    The following application notes use this library:

    • AN00181 - xCORE-200 explorer accelerometer demo
  • LIN library

    A software defined LIN bus library. The LIN library include master and slave peripherals. Master component automatically includes slave functionality. 50MIPS is required for the baud rate of 115Kbps. Connects directly to LIN transceiver using Rxd and Txd pins.

    Each peripheral uses a client server architecture where the server consists of a custom UART function, extended with timeout and break detect. The client C functions are exposed as a simple API.

    Features

    • LIN 2.1 master and slave protocol components
    • 2400 to 115200 baud operation (limited by physical layer)
    • Integrated frame processing with simple application API
    • Timeout and mid-frame break detection
    • Integrated frame processing with simple application API
    • Single logical core per LIN node (either slave or master)

    Typical Resource Usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    Master

    2

    2

    0

    ~1.5K

    1

    Slave

    2

    2

    0

    ~2.1K

    1

    Software version and dependencies

    This document pertains to version 2.0.1 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    The library does not have any dependencies (i.e. it does not rely on any other libraries).

  • SPI Library

    A software defined, industry-standard, SPI (serial peripheral interface) component that allows you to control an SPI bus via the xCORE GPIO hardware-response ports. SPI is a four-wire hardware bi-directional serial interface.

    The SPI bus can be used by multiple tasks within the xCORE device and (each addressing the same or different slaves) and is compatible with other slave devices on the same bus.

    Features

    • SPI master and SPI slave modes.
    • Supports speed of up to 100 Mbit.
    • Multiple slave device support
    • All clock polarity and phase configurations supported.

    Typical Resource Usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    Master (synchronous, zero clock blocks)

    4

    4 (1-bit)

    0

    ~1.3K

    0

    Master (synchronous, one clock block)

    4

    4 (1-bit)

    1

    ~2.7K

    0

    Master (asynchronous)

    4

    4 (1-bit)

    2

    ~3.3K

    ≤ 1

    Slave (32 bit transfer mode)

    4

    4 (1-bit)

    1

    ~0.8K

    ≤ 1

    Slave (8 bit transfer mode)

    4

    4 (1-bit)

    1

    ~0.8K

    ≤ 1

    The number of pins is reduced if either of the data lines are not required.

    Software version and dependencies

    This document pertains to version 3.0.2 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    The library does not have any dependencies (i.e. it does not rely on any other libraries).

    The following application notes use this library:

    • AN00160 - How to communicate as SPI master
    • AN00161 - How to communicate as SPI slave
  • UART library

    A software defined, industry-standard, UART (Universal Asynchronous Receiver/Transmitter) library that allows you to control an UART serial connection via the xCORE GPIO hardware-response ports. This library is controlled via C using the XMOS multicore extensions.

    Features

    • UART receive and transmit
    • Supports speeds up to 10MBit/s
    • Half-duplex mode (applicable to RS485)
    • Efficient multi-uart mode for implementing multiple connections

    Resource Usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    Standard TX

    1

    1

    0

    ~1.0K

    0

    Standard TX (buffered)

    1

    1

    0

    ~1.2K

    ≤ 1

    Standard RX

    1

    1

    0

    ~1.5K

    ≤ 1

    Fast/streaming TX

    1

    1

    0

    ~0.2K

    1

    Fast/streaming RX

    1

    1

    0

    ~0.2K

    1

    Multi-UART TX (8 UARTs)

    8

    1

    0

    ~2.9K

    1

    Multi-UART RX (8 UARTs)

    8

    1

    0

    ~3.4K

    1

    Half Duplex

    1

    1

    0

    ~1.8K

    1

    Software version and dependencies

    This document pertains to version 3.0.2 of this library. It is known to work on version 14.1.1 of the xTIMEcomposer tools suite, it may work on other versions.

    This library depends on the following other libraries:

    • lib_logging (>=2.0.0)
    • lib_xassert (>=2.0.0)
    • lib_gpio (>=1.0.0)

    The following application notes use this library:

    • AN00158 - How to use the UART lbirary
    • AN00159 - How to run large numbers of UARTS
    • AN00163 - Using half duplex UARTS over RS485

USB

  • Version
    Updated
    Download
    Title
  • USB Library

    A software defined, industry-standard, USB library that allows you to control an USB bus via xCORE ports.

    The library provides functionality to act as a USB device.

    This library is aimed primarily for use with xCORE U-Series or the xCORE-200 Series devices but it does also support xCORE L-Series devices.

    Features

    • USB 2.0 Full-speed (12Mbps) and High-speed (480Mbps) modes.
    • Device mode.
    • Bulk, control, interrupt and isochronous endpoint types supported.

    Typical Resource Usage

    This following table shows typical resource usage in some different configurations. Exact resource usage will depend on the particular use of the library by the application.

    Configuration

    Pins

    Ports

    Clocks

    Ram

    Logical cores

    USB device (U series)

    23 (internal)

    11

    0

    ~8.8K

    1

    USB device (xCORE-200 series)

    23 (internal)

    11

    0

    ~9.1K

    1

    USB device (L series)

    13

    8

    0

    ~8.4K

    1

    Software version and dependencies

    This document pertains to version 3.1.2 of this library. It is known to work on version 14.2.0 of the xTIMEcomposer tools suite, it may work on other versions.

    This library depends on the following other libraries:

    • lib_logging (>=2.0.0)
    • lib_xassert (>=2.0.0)
    • lib_gpio (>=1.0.0)

    The following application notes use this library:

    • AN00125 - USB mass storage device class
    • AN00126 - USB printer device class
    • AN00127 - USB video device class
    • AN00128 - USB Audio device class
    • AN00129 - USB HID device class
    • AN00130 - Extended USB HID class
    • AN00131 - USB CDC-EDC device class
    • AN00132 - USB Image device class

Voice

  • Version
    Updated
    Download
    Title