Search

Technical Discussion Group Forum

This forum is provided for user discussion. While Beacon EmbeddedWorks support staff and engineers participate, Beacon EmbeddedWorks does not guarantee the accuracy of all information within in the Technical Discussion Group (TDG).

The "Articles" forums provide brief Articles written by Beacon EmbeddedWorks engineers that address the most frequently asked technical questions.

To receive email notifications when updates are posted for a Beacon EmbeddedWorks product download, please subscribe to the TDG Forum of interest.

TDG Forum

PrevPrev Go to previous topic
NextNext Go to next topic
Last Post 11 Oct 2012 12:57 AM by  bashir.siddiqui@tut.fi
How to use ADS901 on OMAP-L138 EVM
 1 Replies
Sort:
You are not authorized to post a reply.
Author Messages
bashir.siddiqui@tut.fi
New Member
New Member
Posts:


--
19 Jul 2012 07:44 AM
    Hi,

    I am new to DSP world and started to work with OMAP-L138 EVM lately. I am using OMAP-L138 SOM. My application requires continuous sampling and post-processing of 1 MHz analog signal.

    I have gone through the uPP documents that is designed to interface cleanly with high-speed analog-to-digital converters (ADCs). OMAP-L138 EVM Kit came with User Interface Board which has ADS901 A/D converter attached with it. I want to use that A/D converter to sample analog signal using uPP and DMA features to meet the real-time challenges.

    As I mentioned above, I am a newbie and have no idea how to use A/D converter using uPP peripheral. I am looking for an example for ADS901 or any help that let me start the project will be appreciated.

    Thanks.

    Regards,
    Siddiqui
    bashir.siddiqui@tut.fi
    New Member
    New Member
    Posts:


    --
    11 Oct 2012 12:57 AM
    Hi,

    I am trying to modify evamomapl138_test_upp example code to drive ADC attached with UI board. I am trying to use only UPP channel A to receive samples from ADC. I am unable to see the proper sine wave at Graph window. Analog signal applied to ADC input is 10 kHz with 1 Vp_p.

    Following are the modified code. Please have a look and suggest where I am wrong.

    #pragma DATA_ALIGN(recv_buffer,64)
    volatile int16_t recv_buffer[64];

    //setup UPP

    I2CGPIO_init(I2C_ADDR_GPIO_UI); //IO expander on UI board
    I2CGPIO_setOutput(I2C_ADDR_GPIO_UI, I2C_GPIO_UI_SELA, OUTPUT_HIGH);
    I2CGPIO_setOutput(I2C_ADDR_GPIO_UI, I2C_GPIO_UI_SELB, OUTPUT_LOW);
    I2CGPIO_setOutput(I2C_ADDR_GPIO_UI, I2C_GPIO_UI_SELC, OUTPUT_LOW); // only ADC is enable

    //Setup ADC Clock
    CDCE913_setOutput(cdce913_output_2, 6); //set to 4.5Mhz

    uint32_t executeTest(void)
    {
    upp_config_t config;
    UPXS2_t * UPIS2r = (UPXS2_t *)&(UPP->UPIS2);

    //UPCTL
    config.UPCTL.value=0;
    config.UPCTL.bits.DPFA = 0;
    config.UPCTL.bits.DPWA = 2;
    config.UPCTL.bits.IWA = 1;
    config.UPCTL.bits.CHN = 0; //only channel A is active
    config.UPCTL.bits.MODE = 0; //All receive mode

    //UPIVR
    config.UPIVR.value=0;
    config.UPIVR.bits.VALA = 0x0000;

    //UPTCR
    config.UPTCR.value=0; //all values 0 for 64byte DMA bursts read / write
    //UPDLB
    config.UPDLB.value=0; //no loopback
    //UPIES
    config.UPIES.value=0; //dont enable any interrupts
    //UPPCR
    config.UPPCR.value = 0;
    config.UPPCR.bits.EN = 1; //enable uPP
    config.UPPCR.bits.RTEMU = 1; //allow emulator use
    config.UPPCR.bits.SOFT = 1; //allow emulation

    UPP_init(&config);

    printf("---Collecting 64 samples from ADC---\r\n");
    UPP->UPID0 = (uint32_t)&recv_buffer;//add next DMA transfer
    UPP->UPID1 = 0x00010080; //1 lines 128 bytes per line ---> How can I set this parameter for example, capturing 1024 Points of data ? What is line and offset here ? Please explain.
    UPP->UPID2 = 0x00000080; //no offset between lines
    while(UPIS2r->bits.PEND == 1){};

    I will appreciate your help.

    -Siddiqui
    You are not authorized to post a reply.