How to enable DSD_Native on XS1-L1 ?

Technical questions regarding the xTIMEcomposer, xSOFTip Explorer and Programming with XMOS.
xP0W3R
Member
Posts: 8
Joined: Tue Nov 21, 2017 2:17 pm
Location: France

How to enable DSD_Native on XS1-L1 ?

Postby xP0W3R » Tue Nov 21, 2017 2:40 pm

Hi everyone,

I'm new in this community.
Here is my problem, I downloaded the latest release of the software "sw_usb_audio-[sw]_6.15.2rc1" and tried to build a project.
No matter witch one I picked I've got the same errors :

Code: Select all

initializer element is not constant   main.xc   /module_usb_audio   line 121   C/C++ Problem
use of undeclared identifer `PORT_MCLK_COUNT'   main.xc   /module_usb_audio   line 121   C/C++ Problem


I don't know what to do to solve this issue...

For now, someone from outside of my company do the program but we would like to be able to do it on our own.
We would like to be able to do a program for a XS1-L1A-TQ128 and perhaps in the future a XU208-128-TQ64.
Last edited by xP0W3R on Wed Nov 22, 2017 1:05 pm, edited 1 time in total.
xP0W3R
Member
Posts: 8
Joined: Tue Nov 21, 2017 2:17 pm
Location: France

Postby xP0W3R » Wed Nov 22, 2017 11:26 am

I solved the problem !
I might have changed some lines when I was trying something.

And now I have a new issue I don't understand how to enable the DSD NATIVE mode. For now it works in DoP mode.
xP0W3R
Member
Posts: 8
Joined: Tue Nov 21, 2017 2:17 pm
Location: France

Postby xP0W3R » Thu Nov 23, 2017 8:44 am

Problem solved with the help of 'AN00103'.

New issue !
I want to put a 'dsd_indicator' to show if we run in dsd native or not.
The 'dsd_indicator' is declared to output on port 32A.
As show :

Code: Select all

port32A.h

#ifndef _PORT32A_OUT_
#define _PORT32A_OUT_

/* Bit defs */
#define P32A_USB_RST       0x01           /* ULPI rst line */
#define P32A_COD_RST       0x02           /* Codec rst line */
#define P32A_CLK_SEL       0x04           /* MClk Select line */
#define P32A_LED_A         0x08           /* LED A */
#define P32A_DSD_IND       0x10           /* DSD Indicator */
#define P32A_LED_B         0x20           /* LED B */

#endif


For now, it works when I playback a dsd file. It illuminate a led connected to 'P32A_DSD_IND' and then when I playback a file other than dsd the led extinguished.
But I want also to extinguish the led when I have no playback and here is my issue. I tried when using 'UserAudioStreamStop()' and it didn't work.

Code: Select all

audio.xc

    /* Main Audio I/O loop */
    while (1)
    {
#if (DSD_CHANS_DAC != 0) && (NUM_USB_CHAN_OUT > 0)
        if(dsdMode == DSD_MODE_NATIVE)
        {
            asm("peek %0, res[%1]":"=r"(x):"r"(XS1_PORT_32A));
            x |= P32A_DSD_IND;
            asm("out res[%0], %1"::"r"(XS1_PORT_32A),"r"(x));
        }
        else
        {
            asm("peek %0, res[%1]":"=r"(x):"r"(XS1_PORT_32A));
            x &= (~P32A_DSD_IND);
            x |= P32A_LED_A;
            asm("out res[%0], %1"::"r"(XS1_PORT_32A),"r"(x));
        }
#endif

Code: Select all

audiostream.xc

void UserAudioStreamStop(void)
{
    int x;

    /* Peek at current port value using port 32A resource ID */
    asm("peek %0, res[%1]":"=r"(x):"r"(XS1_PORT_32A));
    // x &= (~P32A_LED_B);
    x &= (~P32A_DSD_IND);
    /* Output to port */
    asm("out res[%0], %1"::"r"(XS1_PORT_32A),"r"(x));
}


If you have any suggestions to help me doing it, thanks.

Who is online

Users browsing this forum: Tomsimb and 10 guests