This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

PCM3168A: PCM3168AEVM obsoleted, send me the PCB files?

Part Number: PCM3168A
Other Parts Discussed in Thread: PCM3168, AM5728,

I read in this thread https://e2e.ti.com/support/audio/f/6/t/829078?keyMatch=PCM3168AEVM&tisearch=Search-EN-everything

that I can receive the PCB files for the PCM3168 EVM.

I would like to receive them, my email is angel.dimitrov@tid-engineering.bg

Thanks.

  • Also I have another question:

    I will connect this chip to AM5728 with linux but I'm new to dts files. Will this work?

    &i2c1 {
    
        pinctrl-names = "default";
    
        pinctrl-0 = <&i2c1_pins>;
    
        status = "okay";
    
        clock-frequency = <100000>;
    
        pcm3168: pcm3168@44 {
    
            compatible = "ti,pcm3168";
    
            reg = <0x44>;
    
            status = "okay";
    
        };
    
    };
    
    
    &mcasp0 {
        pinctrl-names = "default";
        pinctrl-0 = <&mcasp0_pins>;
    
        status = "okay";
    
        op-mode = <0>;          /* MCASP_TDM_MODE */
        tdm-slots = <4>;
        num-serializer = <16>;
        serial-dir = <  /* 0: INACTIVE, 1: TX, 2: RX */
        1 1 2 2    
        0 0 0 0
        0 0 0 0
        0 0 0 0    
        >;
        tx-num-evt = <1>;
        rx-num-evt = <1>;
    };

    or if not, how to modify this 

    for AM5728.

    In another words: I know how to do the pinmuxing and rebuilding the kernel with the driver but I dont know how to do the rest of the dts configuration.

    ---------------

    My alternative is a USB to I2S chip but how the codec driver will know where is the I2S stream?

  • Hi Angel,

    I have reached out to your provided email address. I'm not very familiar with Linux so I have asked a colleague to provide some feedback on your DTS file.

    Best,

    Zak

  • Angel,

    The documentation for the DTS for PCM3168 is here. You can set clocks and supplies. For example:

    i2c0: i2c0@0 {
    
    	...
    
    	pcm3168a: audio-codec@44 {
    		compatible = "ti,pcm3168a";
    		reg = <0x44>;
    		reset-gpios = <&gpio0 4 GPIO_ACTIVE_LOW>;
    		clocks = <&clk_core CLK_AUDIO>;
    		clock-names = "scki";
    		VDD1-supply = <&supply3v3>;
    		VDD2-supply = <&supply3v3>;
    		VCCAD1-supply = <&supply5v0>;
    		VCCAD2-supply = <&supply5v0>;
    		VCCDA1-supply = <&supply5v0>;
    		VCCDA2-supply = <&supply5v0>;
    		pinctrl-names = "default";
    		pinctrl-0 = <&dac_clk_pin>;
    	};
    };
    For BeagleBone Black, I use:

    &mcasp0 {

    #sound-dai-cells = <0>;
    pinctrl-names = "default";
    pinctrl-0 = <&mcasp0_pins>;
    status = "okay";
    op-mode = <0>; /* MCASP_IIS_MODE */
    tdm-slots = <6>;
    serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */ 2 0 1 0 >;
    tx-num-evt = <32>;
    rx-num-evt = <32>;

    };

    Plus a sound object:

    sound {

    compatible = "simple-audio-card";
    simple-audio-card,name = "TI BeagleBone Black";
    #sound-dai-cells = <1>; 

     simple-audio-card,dai-link@0 {
    format = "dsp_a";
    bitclock-master = <&sound0_master>;
    frame-master = <&sound0_master>;
    sound0_master: cpu {

    sound-dai = <&mcasp0>;
    clocks = <&clk_mcasp0>;
    dai-tdm-slot-num = <6>;
    dai-tdm-slot-width = <32>;
    dai-tdm-slot-tx-mask = <1 1 1 1 1 1>;
    dai-tdm-slot-rx-mask = <1 1 1 1 1 1>;

    };
    codec {

    sound-dai = <&pcm3168a>;

    };

    };

    To support six channels of 32-bit data. 

    Then use alsamixer or amixer commands to control the sound widgets of the driver (volume, high pass filter, digital filters, switches, etc.)

    Best regards,
    Pedro

  • Thank you Zak and Pedro, i will try the dts when the PCBs are ready and mark the issue as resolved when i see it works. :)

  • How to do the wiring for douts and dins of the EVM.

    For example:

    dout1 -> axr? (which axr)

    dout2 -> axr?

    ..

    din1 -> axr?

    din2 -> axr?

    --------------------------------------------------

    What I think it would be: ( if serial-dir = < /* 0: INACTIVE, 1: TX, 2: RX */ 2 0 1 0 >; )

    dout[1:3] -> axr[0:2]

    nothing   -> axr[4:7]

    din[1:4]   -> axr[8:11]

    Am I think correct?

  • Angel,

    That depends on the pins you have connected and the ADC and DAC channels used. If using six ADCs (three DOUTs with two values per sample) and eight DACs (four DINs with two values per sample), your suggestions should work fine for:

    dout[1:3] -> axr[0:2]
    nothing   -> axr[3:7]
    din[1:4]   -> axr[8:11]

    tdm-slots = <2>;  /* 2 slots on each serializer for I2S or DSP format since there are two values per sample */
    serial-dir = <2 2 2 0 0 0 0 0 1 1 1 1> /* 0: INACTIVE, 1: TX, 2: RX */

    Best regards,
    Pedro