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.

AM3358: McASP I2S master mode serial data out

Part Number: AM3358

Hello,

I am using the audio serial port and I have AHCLKX, ACLKX, AFSX all working on ASP0 (channel 0). I cannot seem to figure out my
data pin AXR0 is not working. I have PDIR and PFUNC set correctly. PDIR set to 0x1 in the lower 3 bits and PFUNC set to 0x0 for
the whole register. I thought there might be a bus width field to to set the data bus width to 1 (as opposed to 4 bits) but I cannot to
find any. Can you please help?

Thanks.

  • Hi,

    What software are you using? Have you checked the pinmux configuration for AXR0?
  • Do you mean embedded or PC side application? I am not using any particular software other than that we
    are using QNX RTOS on a modified beaglebone BSP. Modified because it is our board, not the beaglebone.
    Yes, I have set the pinmux register for MCASP0_AXR0 (hex address (0x44E10000+0x0998) ) to 0.

  • Hi Daniel,

    I am not familiar with QNX RTOS, thus I will try to help you only for the AM335x McASP module registers setup. If you can switch to AM335x TI PSDK v4, we can be in better help.

    Please make sure you have the transmit buffer XBUF full and data ready flag setup at the time you expect data output on the AXR0 pin. Make sure you are following instructions from AM335x TRM, section 22.3.12 Setup and Initialization.

    You can also provide full McASP0 register dump for review.

    Regards,
    Pavel
  • Thank you. I am looking at these register configs. Also, please note that the software I am using uses the EDMA3 in conjunction with the McASP. What needs to be reconfigured if using the EDMA3? I will compare your notes to the existing source code.

    Question on the SRCTL0 to 5 registers. The TRM says that each McASP has up to 16 serializer registers but the register section has only 6. Is this because of the specific AM3358? Also, to which pins (AXRn) do SRCTL5 and SRCTL6 correspond or are these registers deprecated? Are XBUF4, XBUF5, RBUF4, RBUF5 deprecated?
  • Daniel Brown said:
    Also, please note that the software I am using uses the EDMA3 in conjunction with the McASP. What needs to be reconfigured if using the EDMA3?

    You need to enable DMA support in McASP registers and also program EDMA registers. McASP linux driver in PSDK comes with DMA support enabled by default, you can use the source code and registers settings as a reference.

    I would recommend you to start with polling mode (no interrupt, no DMA), thus you will isolate the problem more easily. Once you are fine with polling mode you can switch to DMA mode.

    Daniel Brown said:
    Question on the SRCTL0 to 5 registers. The TRM says that each McASP has up to 16 serializer registers but the register section has only 6. Is this because of the specific AM3358? Also, to which pins (AXRn) do SRCTL5 and SRCTL6 correspond or are these registers deprecated? Are XBUF4, XBUF5, RBUF4, RBUF5 deprecated?

    The TRM is generic, you should check datasheet which is specific. AM3358 has "Up to Four Serial Data Pins per McASP Port" - axr0, axr1, axr2, axr3. McASP module has 4 serializers, thus you can use SRCTL0 to 3 and RBUF/XBUF_0 to RBUF/XBUF_3 registers, the rest are not available. For axr0, you should use SRCTL0 and RBUF/XBUF0.