SBAA415 April   2020 PCM6240-Q1 , PCM6260-Q1 , PCM6340-Q1 , PCM6360-Q1

 

  1.   Multiple PCM6xx0 Devices With Shared TDM and I2C Bus
    1.     Trademarks
    2. 1 Introduction
    3. 2 Sharing the Control Bus
    4. 3 Sharing the Audio Bus
      1. 3.1 ASI Configuration for Shared TDM
      2. 3.2 ASI Configuration for Daisy Chain TDM
    5. 4 Configuring PurePath Console for Multiple PCM6xx0 EVMs
      1. 4.1 Changing the Default I2C Address of the PCM6xx0 EVM
      2. 4.2 Launching PurePath Console With Multiple Devices
  2.   A PurePath Console I2C Scripts
    1.     A.1 PCM6xx0 I2C Scripts for Shared TDM
    2.     A.2 PCM6xx0 I2C Scripts for Daisy Chain TDM

ASI Configuration for Daisy Chain TDM

To simplify board routing and TDM bus timing requirements, or to avoid high SDOUT line load capacitance, PCM6xx0 devices offer a daisy-chain mode that routes data output (SDOUT) of one device as input to the GPI1 pin (GPIO1) of another device. Each device internally combines the data into the appropriate slot in the TDM bus and passes it to the next device.

Daisy Chain Polaris.pngFigure 16. PCM6xx0 Daisy Chain TDM Connection Diagram

Setting the ASI_DAISY bit field of the ASI_CFG2 Register shown in Table 11 configures the devices for daisy chain configuration.

Setting the ASI_DAISY bit field of the ASI_CFG2 Register shown in Table 11 configures the devices for daisy chain configuration.

Figure 17. ASI_CFG2 Register
7 6 5 4 3 2 1 0
ASI_DAISY Reserved ASI_ERR ASI_ERR_
RCOV
Reserved
R/W-0h R-0h R/W-0h R/W-0h R-0h

Table 11. ASI_CFG2 Register Field Descriptions

Bit Field Type Reset Description
7 ASI_DAISY R/W 0h ASI daisy-chain connection
0d = All devices are connected in the common ASI bus
1d = All devices are daisy-chained for the ASI bus
6 Reserved R 0h Reserved
5 ASI_ERR R/W 0h ASI bus error detection
0d = Enable bus error detection
1d = Disable bus error detection
4 ASI_ERR_RCOV R/W 0h ASI bus error auto resume
0d = Enable auto resume after bus error recovery
1d = Disable auto resume after bus error recovery and remains powered down until the host configures the device
3-0 Reserved R 0h Reserved

For all the devices that take the SDOUT as input from another device into the GPIO1 pin, the bit filed GPIO1_CFG of the GPIO_CFG0 register must be set to "ASI Input for daisy chain (SDIN)," as shown in Table 12.

Figure 18. GPIO_CFG0 Register
7 6 5 4 3 2 1 0
GPIO1_CFG[3:0] Reserved GPIO1_DRV[2:0]
R/W-2h R-0h R/W-2h

Table 12. GPIO_CFG0 Register Field Descriptions

Bit Field Type Reset Description
7-4 GPIO1_CFG[3:0] R/W 2h GPIO1 configuration
0d = GPIO1 is disabled
1d = GPIO1 is configured as a general-purpose output (GPO)
2d = GPIO1 is configured as a device interrupt output (IRQ)
3d = GPIO1 is configured as a secondary ASI output (SDOUT2)
4d to 7d = Reserved

8d = GPIO1 is configured as an input to control when MICBIAS turns on or off (MICBIAS_EN)
9d = GPIO1 is configured as a general-purpose input (GPI)
10d = GPIO1 is configured as a master clock input (MCLK)
11d = GPIO1 is configured as an ASI input for daisy-chain (SDIN)
12d to 15d = Reserved
3 Reserved R 0h Reserved
2-0 GPIO1_DRV[2:0] R/W 2h GPIO1 output drive configuration (not used when GPIO1 is configured as SDOUT2)
0d = Hi-Z output
1d = Drive active low and active high
2d = Drive active low and weak high
3d = Drive active low and Hi-Z
4d = Drive weak low and active high
5d = Drive Hi-Z and active high
6d to 7d = Reserved

For the example of , the following I2C script configures U1, U2, and U3 for daisy chain, taking input from the next device in the SDOUT through GPIO1 of the chain. Note that channels of each device are mapped to slots 0-3. However, the SDOUT of U1 has slots 0-3 with the U1 channels, slots 4-7 with the U2 channels, slots 8-11 with the U3 channels, and slots 12-15 with the U4 channels. Note that the last device in the daisy chain does not need to be configured for daisy chain mode since it is not taking input on GPIO1 from another device.

w 90 0B 00 # Set U1 Ch1 mapped to slot 0 of SDOUT w 90 0C 01 # Set U1 Ch2 mapped to slot 1 of SDOUT w 90 0D 02 # Set U1 Ch3 mapped to slot 2 of SDOUT w 90 0E 03 # Set U1 Ch4 mapped to slot 3 of SDOUT w 91 0B 00 # Set U2 Ch1 mapped to slot 0 of SDOUT w 91 0C 01 # Set U2 Ch2 mapped to slot 1 of SDOUT w 91 0D 02 # Set U2 Ch3 mapped to slot 2 of SDOUT w 91 0E 03 # Set U2 Ch4 mapped to slot 3 of SDOUT w 92 0B 00 # Set U3 Ch1 mapped to slot 0 of SDOUT w 92 0C 01 # Set U3 Ch2 mapped to slot 1 of SDOUT w 92 0D 02 # Set U3 Ch3 mapped to slot 2 of SDOUT w 92 0E 03 # Set U3 Ch4 mapped to slot 3 of SDOUT w 93 0B 00 # Set U4 Ch1 mapped to slot 0 of SDOUT w 93 0C 01 # Set U4 Ch1 mapped to slot 1 of SDOUT w 93 0D 02 # Set U4 Ch1 mapped to slot 2 of SDOUT w 93 0E 03 # Set U4 Ch1 mapped to slot 3 of SDOUT w 90 09 80 # Set U1's ASI to daisy chain w 90 21 B0 # Set U1's GPIO1 input as ASI input for daisy chain w 91 09 80 # Set U2's ASI to daisy chain w 91 21 B0 # Set U2's GPIO1 input as ASI input for daisy chain w 92 09 80 # Set U3's ASI to daisy chain w 92 21 B0 # Set U3's GPIO1 input as ASI input for daisy chain