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.

C5535 eZdsp USB Stick Development Kit Tutorials

First, I am an absolute beginner to C5000 and C5535 eZdsp USB Stick Development Kit, so don't expect any DSP rocket science here.  This topic is about modifying C5505 and C5515 demo's, written previously for the C5505/C5515 USB Stick demo boards, to run on the new C5535 eZdsp USB Stick Development Kit.

Last weekend I was looking for any kind of lessons, tutorials or whatever you like to call it, for the C5535 eZdsp USB Stick Development Kit. The only closest thing I could find related to this board was: http://www.ti.com/ww/eu/university/roms.html. Al the modifications are pretty trivial but, being an absolute beginner, I spent a few hours last weekend to figure it out. So, don't waste your time too, follow this instructions instead.

Download the C5000 Teaching ROM from: http://www.ti.com/ww/eu/university/cd-rom/C5505.zip. This is a great learning material. A big THANK YOU to the authors.

To be able to run this lessons to your board, there is one very simple modification: The  C5535 eZdsp USB Stick Development Kit use I2S2 instead of I2S0. All you have to do is to replace I2S0 text with I2S2 everywhere in the files aic3204_init.c and aic3204.c . Also, in the file usbstk5505.h insert the following lines:

#define I2S2_CR *(volatile ioport Uint16*)(0x2A00)
#define I2S2_SRGR *(volatile ioport Uint16*)(0x2A04)
#define I2S2_W0_LSW_W *(volatile ioport Uint16*)(0x2A08)
#define I2S2_W0_MSW_W *(volatile ioport Uint16*)(0x2A09)
#define I2S2_W1_LSW_W *(volatile ioport Uint16*)(0x2A0C)
#define I2S2_W1_MSW_W *(volatile ioport Uint16*)(0x2A0D)
#define I2S2_IR *(volatile ioport Uint16*)(0x2A10)
#define I2S2_ICMR *(volatile ioport Uint16*)(0x2A14)
#define I2S2_W0_LSW_R *(volatile ioport Uint16*)(0x2A28)
#define I2S2_W0_MSW_R *(volatile ioport Uint16*)(0x2A29)
#define I2S2_W1_LSW_R *(volatile ioport Uint16*)(0x2A2C)
#define I2S2_W1_MSW_R *(volatile ioport Uint16*)(0x2A2D)

in the I2S Module section.

To run the demo's follow the lessons. I created a new project for a C5535 chip, runtime suport library to automatic, then unpack the lesson in the project folder. Set the project properties to: chip version silicon as 5515, Runtime Model Options to 32 bit and the memory model to huge, as stated in the first lesson. The target configuration I used to debug was XDS100v2 and EZDSP5535. I also modified the PLL lock frequency in the source code to 100 MHz. For me it worked. The CCS version was 4.2.4.00033. Any questions or observations are welcomed.

With this modifications I was able to run the first, second and the last (20'st) project from the tutorial. Yeaaaa, it works!

:o)

If there are some other tutorials for this board (or any other board, but easy to adapt to C5535 eZdsp) on the Internet, please let me know.

  • Hi,

    You look good at C5535 DSP. Chip support library is also including many examples http://software-dl.ti.com/dsps/dsps_public_sw/dsps_swops_houston/C55X/CSL-c55x-lowpower-versions.htm.

    Regards,

    Hyun

     

  • Hi George:

    In order for the C5505 programs in C5000 Teaching ROM which use I2S0 on C5505 ezdsp to run on C5535 eZdsp which use I2S2, additional modifications are needed:

    1. The External Bus Selection Register (EBSR)  as SYS_EXBUSSEL in aic3204_init.c must be set to 0x1100.

          SYS_EXBUSSEL = 0x1100;

    The example in Chapter 1 will work.

    Frank L K Wan

     

     

     

     

     

     

     

  • I have tried all of the above in the ROM application examples 1 (First Project) and 9 (Guitar Effects) and the program get stuck in the receive interrupt loop shown below. The RcvR bit in the I2S2 interrupt register never gets high. I understand that codec is reset automatically by power good, and enabled by a pull-down on ezDSP C5535 and there is no need to use the GPIO26 for this purpose. Are there any GPIOs to configure? Any idea?Thanks,

    void aic3204_codec_read(Int16* left_input, Int16* right_input)

    {

      volatile Int16 dummy;

      counter1 = 0;

      /* Read Digital audio inputs */

      while(!(I2S0_IR & RcvR) )

      {

        counter1++;

        // Wait for receive interrupt }

        *left_input = I2S0_W0_MSW_R;

        // Read Most Significant Word of first channel

        dummy = I2S0_W0_LSW_R;

        // Read Least Significant Word (ignore)

        *right_input = I2S0_W1_MSW_R;

        // Read Most Significant Word of second channel

        dummy = I2S0_W1_LSW_R;

        // Read Least Significant Word of second channel (ignore)

    }

  • I need to play the song from USB and SD card for C5535.

    i downloaded the project USB / AIC from ti website for C5515.

     i couldn't be able to make the change wat they've said in that site.

    In the downloaded project there is no file in the name of the aic3204_init.c and aic3204.c.

    if u have the USB memory stick / Audio / SD card project for C5535.please provide the infiormation.

    Please kindly help me in this.

    Regards

    Bala

     

  • You are probably refering to the C55x audio Framework http://www.ti.com/tool/c55x-audioframework that uses dspbios. This thread makes reference to the  C5000 Teaching ROM from: http://www.ti.com/ww/eu/university/cd-rom/C5505.zip

  • Hi George,

    This wiki page discusses how to port the C5000 Teaching ROM to the C5535 eZdsp:

    http://processors.wiki.ti.com/index.php/Porting_C5000_Teaching_ROM_to_C5535_eZdsp

    Thank you for your interest in TI DSPs

    Regards,
    Mark

  • I have tried the porting instructions in the ROM application example 9 (Guitar Effects). The program runs, but nothing can be heard, the value of the samples seems to be too low, I guess the audio codec must be configured differently.

  • I think I found the reason why the ROM applications don't work. The MIC BIAS input must be powered up on the aic3204 for C5535.

    I made the changes on example 9 ( Guitar Effects)

    The additional changes I had to do to make it work affect only the file aic3205_init.c:

    After selecting page 1 of the codec and enabling analog VDD on LDO:

    AIC3204_rset( 0, 1 );// Point to page 1

    AIC3204_rset( 2, 1 ); // Enable Analog Blocks, use LDO power

    The following line must be added:

    AIC3204_rset( 51, 0x48);  // power up MICBIAS with AVDD (0x40)or LDOIN (0x48)

    This can be done on line 90 inside aic3204_init() function and also on line 233 inside  set_sampling_frequency_and_gain()

    Once this is done, the microphone on the C5535 ezDSP starts to work miracolously and the guitar effects can be listened.

    Enjoy!!

  • Hi Diego,

    Thanks for posting your solution!

    You are absolutely correct that the mic bias needs to be enabled in order to use a PC mic (electret type). I will add this to the wiki page.

    In the Teaching ROM presentations, a 600 Ohm dynamic microphone is referenced. These dynamic mics (non-electret) do not require mic bias to produce a signal, but they do require a high mic gain.

    Similarly, the pickups on an electric guitar also do not require a MIC BIAS (in my experience), but again the gain needs to be set high.

    Hope you are enjoying the eZdsp and Teaching ROM.

    Regards,
    Mark

  • I just added the instructions for configuring a microphone as input to the C5535 eZdsp to the Porting C5000 Teaching ROM to C5535 eZdsp wiki page...

    http://processors.wiki.ti.com/index.php/Porting_C5000_Teaching_ROM_to_C5535_eZdsp#Configuring_a_Microphone_as_Input_to_the_C5535_eZdsp

    Regards,
    Mark

  • I have followed all directions. When I attempt to debug, I get the following error:

    Error connecting to the target.

    (Error -600 @ 0x0)

    A required dynamic library could not be located.

    The library isn't on the search path.

    (Release 5.0.429)

    - First, an error message that reads "something failed" isn't helpful.

    - I searched on this error and found a thread that wasn't applicable (to the limits of my unskilled level).

    - I am working with Chapter 1 - getting started.

    - Any help would be greatly and deeply appreciated.

    Thank you

  • Hi Perry,

    Can you post the console output with these errors into a new post?

    Thanks,
    Mark

  • Hi,

    I tried to run examples of c5505 in my c5535. I changed settings as you told. I programmed my device without no error. But when i tried to listen the results, my windows didn't download software of my device. It said no software found for c5505. But my device is c5535, how can i change and get back my device normal. I think i missed something from things told, i don't get it what it is. Any help will be apreciated.

    Best regards,

    Ipek

  • Ok, my issue is solved, i had forgetten to plug sd card.

  • Hi,

    Who porting "VC5505 FFT Filter" Demo to ezdsp5535?

    Greg

  • Hi Mark,

    I followed the instructions but when I use the TI debugger, I get the following error on my console: "TMS320C55x: Can't Run Target CPU: Check the linker command file / map file for any part of the program going into reserved area and correct the problem when Program Counter is 0x0  NOTE: Reset the target, reload the corrected program and continue execution".

    Can you help me resolve this issue?

    Thanks!

    Karthik 

  • I got it working. :)  Figured out that the default target configuration was set to something else! 

  • Congratulation :)

    Can You send me this  source code?

    ameliadsp@yahoo.com

    Regards

    AG

  • ki said:

    In order for the C5505 programs in C5000 Teaching ROM which use I2S0 on C5505 ezdsp to run on C5535 eZdsp which use I2S2, additional modifications are needed:

    1. The External Bus Selection Register (EBSR)  as SYS_EXBUSSEL in aic3204_init.c must be set to 0x1100.

          SYS_EXBUSSEL = 0x1100;

    The example in Chapter 1 will work.

    Frank L K Wan

    My project 1 is working without this modification. In my code:

     SYS_EXBUSSEL = 0x0000;

    and it works fine.

     Can anyone confirm if the register should be set to 1100 or 0000?

    Thanks,

    Nate 

  • According to pages 71-72 of the Datasheet:

    http://www.ti.com/lit/ds/symlink/tms320c5535.pdf

    bits 14:12 of register EBSR (configured by SYS_EXBUSSEL) define PPMODE:

    001 = Mode 1 (SPI, GPIO, UART, and I2S2). 7 signals of the SPI module, 6 GPIO signals, 4 signals of the UART module and 4 signals of the I2S2 module are routed to the 21 external signals of the parallel port.

    And bits 9:8 SP0MODE:

    01 = Mode 1 (I2S1 and GP[11:10]). 4 signals of the I2S1 module and 2 GP[11:10] signals are routed to the 6 external signals of the serial port 1.

    So I think 0x1100 is the right configuration for this register for ezDSP5535

  • (do you mean page 94)?
    I agree you are correct though. I wonder how my code was working then?

    hmm Ill try to change the register assignment to the (theoretically) correct values and see if that still works.
    Thanks,
    Nate

  • Is this working?

    Would You like to share source code solved this problem?

    G

  • Heres my source code. You will see that I set both registers to 0x0000 within I2C_Test.c (which is the only function that main.c calls). The program  takes audio in and spits it right back out.

    1832.Application_1_Modified.zip

    Let me know if that works or not.



    -Nate

  • Thanks Nathan,

    It works :)

    5 chapters work good. time to change VC5505_FFT_Filter_Demo .

    6332.5_Chapters_Teaching_ROM_Port_to_C5535_eZdsp.zip

    -Ame

  • Greg S. said:

    5 chapters work good. time to change VC5505_FFT_Filter_Demo .



    I do not know exactly what you are saying here Arne. What do you mean by "5 chapters work good"? And what do you mean by "time to change VC5505_FFT_Filter_Demo "?

    - Nate