The TAS2770 provides a flexible TDM serial audio port for use in TDM/I2C Mode. The port can be configured to support a variety of formats including stereo I2S, Left Justified and TDM. Mono audio playback is available via the SDIN pin. The SDOUT pin is used to transmit sample streams including speaker voltage and current sense, VBAT voltage, die temperature and channel gain.
The TDM serial audio port supports up to 8 32-bit time slots at 44.1/48 kHz, 4 32-bit time slots at a 88.2/96 kHz sample rate and 2 32-bit time slots at a 176.4/192 kHz sample rate. The device supports 2 time slots at 32 bits in width and 4 or 8 time slots at 16, 24 or 32 bits in width. Valid SBCLK to FSYNC ratios are 64, 96, 128, 192, and 256.. Note that the device will automatically detect the number of time slots and this does not need to be programmed.
By default, the TAS2770 will automatically detect the PCM playback sample rate. This can be disabled by setting the AUTO_RATE register bit high.
The SAMP_RATE[2:0] register bits set the PCM audio sample rate when AUTO_RATE = 1. The TAS2770 employs a robust clock fault detection engine that will automatically volume ramp down the playback path if FSYNC does not match the configured sample rate (if AUTO_RATE = 1) or the ratio of SBCLK to FSYNC is not supported (minimizing any audible artifacts). Once the clocks are detected to be valid in both frequency and ratio, the device will automatically volume ramp the playback path back to the configured volume and resume playback.
Table 8-8 PCM Auto Sample Rate DetectionAUTO_RATE | Setting |
---|
0
| Enabled (default) |
1
| Disabled |
Table 8-9 PCM Audio Sample RatesSAMP_RATE[1:0] | Sample Rate |
---|
000
| Reserved |
001
| Reserved |
010
| Reserved |
011
| 44.1 kHz / 48 kHz (default) |
100
| 88.2 kHz / 96 kHz |
101
| 176.4 kHz / 192 kHz |
110
| Reserved |
111
| Reserved |
Figure 8-8 and Figure 8-9 below illustrates the receiver frame parameters required to configure the port for playback. A frame begins with the transition of FSYNC from either high to low or low to high (set by the FRAME_START register bit). FSYNC and SDIN are sampled by SBCLK using either the rising or falling edge (set by the RX_EDGE register bit). The RX_OFFSET[4:0] register bits define the number of SBCLK cycles from the transition of FSYNC until the beginning of time slot 0. This is typically set to a value of 0 for Left Justified format and 1 for an I2S format.
Table 8-10 TDM Start of Frame PolarityFRAME_START | Polarity |
---|
0
| Low to High on FSYNC |
1
| High to Low on FSYNC (default) |
Table 8-11 TDM RX Capture PolarityRX_EDGE | FSYNC and SDIN Capture Edge |
---|
0
| Rising edge of SBCLK (default) |
1
| Falling edge of SBCLK |
Table 8-12 TDM RX Start of Frame to Time Slot 0 OffsetRX_OFFSET[4:0] | SBCLK Cycles |
---|
0x00
| 0 |
0x01
| 1 (default) |
0x02
| 2 |
...
| ... |
0x1E
| 30 |
0x1F
| 31 |
The RX_SLEN[1:0] register bits set the length of the RX time slot. The length of the audio sample word within the time slot is configured by the RX_WLEN[1:0] register bits. The RX port will left justify the audio sample within the time slot by default, but this can be changed to right justification via the RX_JUSTIFY register bit. The TAS2770 supports mono and stereo down mix playback ([L+R]/2) via the left time slot, right time slot and time slot configuration register bits (RX_SLOT_L[3:0], RX_SLOT_R[3:0] and RX_SCFG[1:0] respectively). By default the device will playback mono from the time slot equal to the I2C base address offset (set by the MODE pin) for playback. The RX_SCFG[1:0] register bits can be used to override the playback source to the left time slot, right time slot or stereo down mix set by the RX_SLOT_L[3:0] and RX_SLOT_R[3:0] register bits.
If time slot selections places reception either partially or fully beyond the frame boundary, the receiver will return a null sample equivalent to a digitally muted sample.
Table 8-13 TDM RX Time Slot LengthRX_SLEN[1:0] | Time Slot Length |
---|
00
| 16-bits |
01
| 24-bits |
10
| 32-bits (default) |
11
| reserved |
Table 8-14 TDM RX Sample Word LengthRX_WLEN[1:0] | Length |
---|
00
| 16-bits |
01
| 20-bits |
10
| 24-bits (default) |
11
| 32-bits |
Table 8-15 TDM RX Sample JustificationRX_JUSTIFY | Justification |
---|
0
| Left (default) |
1
| Right |
Table 8-16 TDM RX Time Slot Select ConfigurationRX_SCFG[1:0] | Config Origin |
---|
00
| Mono with Time Slot equal to I2C Address Offset (default) |
01
| Mono Left Channel |
10
| Mono Right Channel |
10
| Stereo Down Mix [L+R]/2 |
Table 8-17 TDM RX Left Channel Time SlotRX_SLOT_L[3:0] | Time Slot |
---|
0x0
| 0 (default) |
0x1
| 1 |
...
| ... |
0xE
| 14 |
0xF
| 15 |
Table 8-18 TDM RX Right Channel Time SlotRX_SLOT_R[3:0] | Time Slot |
---|
0x0
| 0 (default) |
0x1
| 1 |
...
| ... |
0xE
| 14 |
0xF
| 15 |
The TDM port can transmit a number sample streams on the SDOUT pin including speaker voltage sense, speaker current sense, decimated PDM input, VBAT voltage, die temperature and channel gain. Figure 8-10 below illustrates the alignment of time slots to the beginning of a frame and how a given sample stream is mapped to time slots. Either the rising or falling edge of SBCLK can be used to transmit data on the SDOUT pin, which can be configured by setting the TX_EDGE register bit. The TX_OFFSET[2:0] register bits define the number SBCLK cycles between the start of a frame and the beginning of time slot 0. This would typically be programmed to 0 for Left Justified format and 1 for I2S format. The TDM TX can either transmit logic 0 or Hi-Z depending on the setting of the TX_FILL register bit setting. An optional bus keeper will weakly hold the state of SDOUT when all devices driving are Hi-Z. Since only one bus keeper is required on SDOUT, this feature can be disabled via the TX_KEEPER register bit.
Each sample stream is composed of either one or two 8-bit time slots. Speaker voltage sense, speaker current sense and decimated PDM sample streams are 16-bit precision, so they will always utilize two TX time slots. The VBAT voltage stream is 12-bit precision, and can either be transmitted left justified in a 16-bit word (using two time slots) or can be truncated to 8-bits (the top 8 MSBs) and be transmitted in a single time slot. This is configured by setting VBAT_SLEN register bit. The Die temperature and gain are both 8-bit precision and are transmitted in a single time slot.
Table 8-19 TDM TX Transmit PolarityTX_EDGE | SDOUT Transmit Edge |
---|
0
| Rising edge of SBCLK |
1
| Falling edge of SBCLK (default) |
Table 8-20 TDM TX Start of Frame to Time Slot 0 OffsetTX_OFFSET[2:0] | SBCLK Cycles |
---|
0x0
| 0 |
0x1
| 1 (default) |
0x2
| 2 |
...
| ... |
0x6
| 6 |
0x7
| 7 |
Table 8-21 TDM TX Unused Bit Field FillTX_FILL | SDOUT Unused Bit Fields |
---|
0
| Transmit 0 |
1
| Transmit Hi-Z (default) |
Table 8-22 TDM TX SDOUT Bus Keeper EnableTX_KEEPER | SDOUT Bus Keeper |
---|
0
| Disable bus keeper |
1
| Enable bus keeper (default) |
The time slot register for each sample stream defines where the MSB transmission begins. For instance, if VSNS_SLOT[5:0] is set to 2, the upper 8 MSBs will be transmitted in time slot 2 and the lower 8 LSBs will be transmitted in time slot 3. Each sample stream can be individually enabled or disabled. This is useful to manage limited TDM bandwidth since it may not be necessary to transmit all streams for all devices on the bus.
It is important to ensure that time slot assignments for actively transmitted sample streams do not conflict. For instance, if VSNS_SLOT[5:0] is set to 2 and ISNS_SLOT[5:0] is set to 3, the lower 8 LSBs of voltage sense will conflict with the upper 8 MSBs of current sense. This will produce unpredictable transmission results in the conflicting bit slots (i.e. the priority is not defined).
If time slot selections place transmission beyond the frame boundary, the transmitter will truncate transmission at the frame boundary.
Table 8-23 TDM Voltage Sense Time SlotVSNS_SLOT[5:0] | Slot |
---|
0x00
| 0 (default) |
0x01
| 1 |
0x02
| 2 |
...
| ... |
0x3E
| 62 |
0x3F
| 63 |
Table 8-24 TDM Voltage Sense Transmit EnableVSNS_TX | State |
---|
0
| Disabled (default) |
1
| Enabled |
Table 8-25 TDM Current Sense Time SlotISNS_SLOT[5:0] | Slot |
---|
0x00
| 0 |
0x01
| 1 |
0x02
| 2 (default) |
...
| ... |
0x3E
| 62 |
0x3F
| 63 |
Table 8-26 TDM Current Sense Transmit EnableISNS_TX | State |
---|
0
| Disabled (default) |
1
| Enabled |
Table 8-27 TDM Decimated PDM Input Time SlotPDM_SLOT[5:0] | Slot |
---|
0x00
| 0 |
0x01
| 1 |
...
| ... |
0x04
| 4 (default) |
...
| ... |
0x3E
| 62 |
0x3F
| 63 |
Table 8-28 TDM Decimated PDM Input Transmit EnablePDM_TX | State |
---|
0
| Disabled (default) |
1
| Enabled |
Table 8-29 TDM VBAT Time SlotVBAT_SLOT[5:0] | Slot |
---|
0x00
| 0 |
0x01
| 1 |
...
| ... |
0x06
| 6 (default) |
...
| ... |
0x3E
| 62 |
0x3F
| 63 |
Table 8-30 TDM VBAT Time Slot LengthVBAT_SLEN | Slot Length |
---|
0
| Truncate to 8-bits (default) |
1
| Left justify to 16-bits |
Table 8-31 TDM VBAT Transmit EnableVBAT_TX | State |
---|
0
| Disabled (default) |
1
| Enabled |
Table 8-32 TDM Temp Sensor Time SlotTEMP_SLOT[5:0] | Slot |
---|
0x00
| 0 |
0x01
| 1 |
...
| ... |
0x07
| 7 (default) |
...
| ... |
0x3E
| 62 |
0x3F
| 63 |
Table 8-33 TDM Temp Sensor Transmit EnableTEMP_TX | State |
---|
0
| Disabled (default) |
1
| Enabled |
Table 8-34 TDM Limiter Gain Reduction Time SlotGAIN_SLOT[5:0] | Slot |
---|
0x00
| 0 |
0x01
| 1 |
...
| ... |
0x08
| 8 (default) |
...
| ... |
0x3E
| 62 |
0x3F
| 63 |
Table 8-35 TDM Limiter Gain Reduction Transmit EnableGAIN_TX | State |
---|
0
| Disabled (default) |
1
| Enabled |