Post Go back to editing

adau1761 NLMS/adaptive filter question

Category: Software
Product Number: adau1761

Hello

first time using NLMS, need some help on this project.

goal: while ARM is playing music the MIC should remove the music signal from its own speaker.

attached is the schematic and the project file.

my questions: how could I just output the clean voice to ARM?

how could I set up the audio path for MIC input and do an echo cancellation then send digital data to the CPU, and the CPU output goes directly to the DAC?

PDF

NLMS-1761.dspproj

looking forward to the reply cause a long holiday is coming.

Best regards,

Power Pan

  • finally I figured it out for the audio path but still have problem with NLMS filter. NLMS still opened

    NLMS.1.dspproj

  • Hello PowerPan,

    Yes, this is a little tricky. I will have a look when I get a chance. 

    Is there a long holiday on your end? It is not for me. 

    Dave T

  • Hello Dave

    yes, here comes the long holiday like x'mas on your side. and I'm leaving today at night.

    finally I assembly several machines for test, just missing the NLMs filter. but I'll bring the dev board with me so that I could test later. 

    but wonder why I always encounter tricky problems Disappointed  like I pick some boards for the first batch randomly always could not work...

    gotta get some sleep now.

    best regards,

    Power Pan

  • Hello Dave

    During the long holiday, I still work on my projects when I have time. so need your help on the adaptive filter if you have time.

    one more additional question about SS export files, why does the function default_download_IC_1() write the initial data 5 times?

    I tested by writing just once, and it could work, like attached codes.

    SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, PROGRAM_ADDR_IC_1, PROGRAM_SIZE_IC_1, Program_Data_IC_1 );
    //SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, PROGRAM_ADDR_IC_1, PROGRAM_SIZE_IC_1, Program_Data_IC_1 );
    //SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, PROGRAM_ADDR_IC_1, PROGRAM_SIZE_IC_1, Program_Data_IC_1 );
    //SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, PROGRAM_ADDR_IC_1, PROGRAM_SIZE_IC_1, Program_Data_IC_1 );
    //SIGMA_WRITE_REGISTER_BLOCK( DEVICE_ADDR_IC_1, PROGRAM_ADDR_IC_1, PROGRAM_SIZE_IC_1, Program_Data_IC_1 );

    Best regards,

    Power Pan

  • Hello PowerPan,

    It must be something that is possible in some programs. What is interesting is that the USBi is capable of having five devices connected to it. I also noticed the "//" in the start of the line which in some programming languages are comments from that point to the end of the line. 

    So I think it is something that is just not suppressed and probably should be. That it is the other four possible ICs that can be connected and since you have no connection it just writes in commented out device addresses. It really should be suppressed but it appears it is not. 

    It is something I would call a bug but not with serious consequences. 

    Dave T

  • hello Dave

    I added the comments after I tested the initialize code when one time could work, why bother? kinda waste of time if you do 5 times when initialize. but when I looked back into the 1452 auto-export codes, there was just one line for the initial code.

    Best regards,

    Power Pan