Post Go back to editing

No data output on sub node (AD2428)

Thread Summary

The user is troubleshooting an issue where no audio data is output from the sub-node in a TDM4 setup with a BeagleBone Black and AD2428WD1BZ. The final answer suggests starting with a simple 2-node setup, using known hardware, and verifying A2B routing and I2S settings. The user should also check the A2B bus signals with a scope to ensure data is being transmitted correctly. The accompanying answers highlight the importance of proper A2B routing and stream definitions, and suggest using sine wave generators for debugging.
AI Generated Content
Category: Software
Product Number: AD2428
Software Version: SigmaStudio+ 2.3.0 (Update 4) with A2B 1.3.2

My system is as follows: Main node - 1 sub-node (it will become 2 sub-nodes later)

The main node generates TDM4 data with speaker-test (-c4 -r48000 -FS16_LE)
(Only one of the 4 channels is activated.)

The subnode generates 50% duty cycles and intends to play them through TAS6422.

However, no data comes out of the sub node, and only some noise is generated.

Which setting might be wrong?

Thank you.
Eunsang Ko

Edit Notes

add images2 (main node setting)
[edited by: LocoField at 3:28 AM (GMT -4) on 15 Mar 2026]
  • You need to explain your hardware setup.

    In general the way to figure out where you went wrong is start with known hardware (i.e. an EVM board), usually as the main node generating the audio data, and another one as the sub node verifying you get the correct output.  Once you have known hardware working then swap in your custom hardware for the sub node, get that working, and then on the main node.

    You didn't show the A2B routing but that's the first think I would look at, then the I2S settings on each node.

  • I have a AD2428WD1BZ, but I would like to implement the audio master directly without an ADC.

    So, I have used Raspberry Pi 5 and BeagleBone Black.

    Based on my research so far, using the BeagleBone has yielded the best results for TDM4 or more, using its mcasp.

    I suddenly wonder if I attached the driver properly and if the settings are correct.

    debian@BeagleBone:~$ aplay -l
    **** List of PLAYBACK Hardware Devices ****
    card 0: locofieldmcasp [locofield-mcasp], device 0: davinci-mcasp.0-a2b24xx-hifi a2b24xx.1-0068-0 [davinci-mcasp.0-a2b24xx-hifi a2b24xx.1-0068-0]
    Subdevices: 1/1
    Subdevice #0: subdevice #0

        fragment@1 {
            target = <&am33xx_pinmux>;
            __overlay__ {
                mcasp0_pins: mcasp0_pins {
                    pinctrl-single,pins = <
                    /*  offset    mask   value  */
                        0x06c     0x00   0x07
                        0x190     0x00   0x00
                        0x194     0x10   0x00
                        0x19c     0x00   0x02
                        0x1ac     0x30   0x00
                    >;
                };
            };
        };
    
        fragment@2 {
            target-path = "/";
            __overlay__ {
                clk_mcasp0_fixed: clk_mcasp0_fixed {
                    #clock-cells = <0>;
                    compatible = "fixed-clock";
    
                    clock-frequency = <0x1770000>; /* 24576000 */
                };
    
                clk_mcasp0: clk_mcasp0 {
                    #clock-cells = <0>;
                    compatible = "gpio-gate-clock";
    
                    clocks = <&clk_mcasp0_fixed>;
                    enable-gpios = <&gpio1 0x1b 0x00>;
                };
            };
        };
        
        fragment@3 {
            target = <&mcasp0>;
            __overlay__ {
                compatible = "ti,am33xx-mcasp-audio";
    
                status = "okay";
                #sound-dai-cells = <0>;
    
                pinctrl-names = "default";
                pinctrl-0 = <&mcasp0_pins>;
    
                op-mode = <0>;
                tdm-slots  = <4>;
                slot-width = <32>;
    
                num-serializer = <4>;
                serial-dir = <0 0 1 0>;
            };
        };
    
        fragment@4 {
            target = <&i2c1>;
            __overlay__ {
                #address-cells = <1>;
                #size-cells = <0>;
    
                ad2428: a2b24xx@68 {
                    compatible = "adi,a2b24xx";
                    reg = <0x68>;
    
                    status = "okay";
                    #sound-dai-cells = <0>;
                };
            };
        };
    
        fragment@5 {
            target-path = "/";
            __overlay__ {
                sound {
                    compatible = "simple-audio-card";
                    simple-audio-card,name = "locofield-mcasp";
                    simple-audio-card,format = "dsp_b";
    
                    simple-audio-card,bitclock-master = <&dailink0_master>;
                    simple-audio-card,frame-master = <&dailink0_master>;
    
                    dailink0_master: simple-audio-card,cpu {
                        sound-dai = <&mcasp0>;
                        clocks = <&clk_mcasp0>;
                    };
    
                    simple-audio-card,codec {
                        sound-dai = <&ad2428>;
                    };
                };
            };
        };

  • Sorry, my audio data looks good for TDM4 32bit

    So, I set the main node setting below:

    and sub node 1:

    but no data output in subnode (DTX0)

    I d like to forward 2 channels to subnode:

      (is this A2B routing??)

  • > (is this A2B routing??)
    the other tab. the one you show is the stream definition.

    As an aside, if you're familiar with SS 4.7 you can use that for AD2428 projects.  SS+ is a bit, hmm, obtuse compared to SS 4.7.

    Anyway, you should have something like (this is for 8 channels done as stereo pairs but you can slice & dice it anyway you want)

    Also check the stream view (ditto for not your setup)

    and cross bar view on the sub node to make sure you are doing what you think you're doing

    I'm not sure what you have for hardware but using an external board as the audio source introduces a lot of unknowns.  

  • Without using a SHARC processor, I was unable to generate TDM4 data with a 50% duty cycle.

    As a workaround, I configured it to use a pulse mode as shown below, but the FSYNC signal becomes distorted when data is transmitted. I’m not sure whether this is related to my circuit or not.

    For now, assuming this is a limitation of McASP(multi channel audio serial port), I switched to TDM2 (I2S) to achieve proper 50% duty cycle playback.

    Could you please help check what might be incorrect?
    Currently, no valid audio data is being output again, and only white-noise is coming from the speaker.

    The configuration is as follows.

    logic analyzer results:

    channel 0: subnode dtx0 (no output)
    channel 1: subnode fsync (50%duty)
    channel 2: subnode bclk
    channel 4: main node data
    channel 5: main node fsync

  • TLDR:

    • Start with a simple 2 node setup transporting stereo audio in one direction
    • Use the ADAU1452 to generate known data to eliminate trying to get some ADC/external I2S thing involved
    • Only change one thing at a time - like generate 4 channels instead of 2 put leave everything else the same, then transport the 4, etc
    • If really stuck look at the A2B bus itself to make sure the data is making it on to the bus

    Not sure if you're still stuck, but since you have the WDZ boards I would drop back and run one of the examples that's available so you can see how it's set up.  Sometimes when I'm chasing the "where did the signal go" problems - particularly for lots of channels - I'll put some sinewave generators at different frequencies on the ADAU1452.  Then I can confirm routing is doing what I think as well as it will expose clock edge problems.  The AD2428 settings don't mean much on their own - you have to get both ends to agree.  Also remember the word size on the i2S port is not the same as what A2B will transport so that's another place to make a mistake.

    When I get really stuck I put a scope probe on the A2B signals as you an see what it's transporting and is the data changing or not (see TRM for details).



  • Hi.

    I finally got it working. Thank you so much for your help!

    Now I understand why you recommended using SigmaStudio 4.7.
    After going through this process, I found that it is much more intuitive when working with manual configurations.

    I really appreciate your support, and I look forward to your help again in the future.

    Best regards,
    LocoField

  • Hey that's great.  Now you've got something you can build off of it will get easier.  A2B is definitely one of those things where you only learn from mistakes Confounded