Library to control and transfer data from NXP SGTL5000. As used on the Teensy Audio Shield. It uses DMA to transfer I2S FIFO data.

The Library now supports dual codecs. Allowing all 4 channels of the Teensy I2S interface to RX and TX data to separate SGTL5000 devices.

The ISR routines that handles pointer swaps for double buffering has been fully coded in assembler to reduce overhead and now takes < 800nS per FIFO transfer when using all 4 channels.

Support added for all typical sample rates and system Clock speeds of 96Mhz or 120Mhz.

Pause and Resume functions added to allow quick and simple suppression of IRQs and stream halting and restart. This required software triggered IRQ, in order to ensure accurate word sync control.

History

doc updates default tip

2017-09-27, by aidan1971 [Wed, 27 Sep 2017 11:23:28 +0000] rev 14

doc updates


doc updates

2017-09-27, by aidan1971 [Wed, 27 Sep 2017 11:20:43 +0000] rev 13

doc updates


docs updated, noteing sync timing considerations

2017-09-27, by aidan1971 [Wed, 27 Sep 2017 10:59:09 +0000] rev 12

docs updated, noteing sync timing considerations


A few documentation updates

2017-09-27, by aidan1971 [Wed, 27 Sep 2017 10:39:01 +0000] rev 11

A few documentation updates


Significant re-work.; The library now supports dual codecs. Using channel 0 and channel 1 of the I2S silicon of Teensy 3.2.; replaced c code with inline assembler reduces time of pointer swaps < 800nS.

2017-09-26, by aidan1971 [Tue, 26 Sep 2017 23:03:32 +0000] rev 10

Significant re-work.; The library now supports dual codecs. Using channel 0 and channel 1 of the I2S silicon of Teensy 3.2.; replaced c code with inline assembler reduces time of pointer swaps < 800nS.


Changed the stop functions to suspend IRQs and DMA requests, also the codec's I2S interface is disabled. During start, the MCUs I2S state machine is now reset, before acquiring sync.

2017-07-15, by aidan1971 [Sat, 15 Jul 2017 13:15:08 +0000] rev 9

Changed the stop functions to suspend IRQs and DMA requests, also the codec's I2S interface is disabled. During start, the MCUs I2S state machine is now reset, before acquiring sync.


Added init function to allow control over timing of I2C comms.

2017-07-07, by aidan1971 [Fri, 07 Jul 2017 11:38:57 +0000] rev 8

Added init function to allow control over timing of I2C comms.


Placed locks around I2C access.

2017-07-05, by aidan1971 [Wed, 05 Jul 2017 17:30:08 +0000] rev 7

Placed locks around I2C access.


Separated ISRs into Callback type and IRQ type to avoid unnecessary checks. ; Replaced ISR code with inline assembler to optimize memory calls.

2017-07-01, by aidan1971 [Sat, 01 Jul 2017 10:20:45 +0000] rev 6

Separated ISRs into Callback type and IRQ type to avoid unnecessary checks. ; Replaced ISR code with inline assembler to optimize memory calls.


Packed data delivered as int16_t !

2017-06-30, by aidan1971 [Fri, 30 Jun 2017 09:46:54 +0000] rev 5

Packed data delivered as int16_t !