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.

CCS: Log_print1(Diags_USER2, "I2S:(%p) opened", hwAttrs->baseAddr);

Other Parts Discussed in Thread: CC2650STK, TIMAC, CC2650

Tool/software: Code Composer Studio

Hello!

         I can use the Uart for translating now,thank you! but there are 2 questions.

1) when i use I2S to PDM microphone .  In its example pdmstream_CC2650STK_TI, I want to see and save  the PDM STREAMMING ,but how to  get them ?

2) where to see the out put from this :"Log_print1(Diags_USER2, "I2S:(%p) opened", hwAttrs->baseAddr);

  • Hi lixia,

    We will look into this and get back to you by the end of the week.

    Thanks,

    Alexis

  • Hi,

    1) Are you sure you want to have access to the PDM data? In general, the useful data are the PCM data.

    To get the PCM data it is quite easy: you basically need to use the function PDMCC26XX_requestBuffer() as it is done in the SA_processPDMData() function. Then you basically store the data where you want.

    To get the PDM raw data, you need to dig into the PDM driver to intercept the data before they got decimated (but once again I don't thing you want to do this).

    In both cases, please keep in mind that the amount of data to store is huge (depending on your settings, you might fill the whole memory of the device in a couple of seconds)

    2) Please have a look to the README file to get some details about how to use the Display driver. If needed, I have pasted below the most relevant part of it:

    ## Example Usage
    
    * Example output is generated through use of Display driver APIs. Refer to the
    Display driver documentation found in the SimpleLink MCU SDK User's Guide.
    
    Run the example. `Board_PIN_LED1` turns `ON` to indicate that driver
    initialization is complete. It is turned off as the PDM driver is started.
    
    A stream is started when the user presses `Board_PIN_BUTTON0`. `Board_PIN_LED1`
    remains off until the stream ends. The stream ends when user presses
    `Board_PIN_BUTTON1`, or if there is an error in the stream.
    
    While the stream is running `Board_PIN_LED1` toggles on and off with a period
    based on the sample rate. The period is 32 frames, duty cycle 50%. One frame is
    192 samples, @16kHz, which gives a period of 364ms.
    
    When the application is running, open a serial session (e.g. HyperTerminal,
    puTTY, etc.) to the appropriate COM port.
    
    > The COM port can be determined via the Device Manager in Windows or via
    `ls /dev/tty*` in Linux.
    
    The connection should have the following settings
    
    ```
        Baud-rate:  115200
        Data bits:       8
        Stop bits:       1
        Parity:       None
        Flow Control: None
    ```
    
    If the serial session is started before the target completes initialization,
    the following is displayed:
        `Starting PDM stream:`

    I hope this will help,

    Best regards,

  •  yes,i am sure my  microphone sensor is PDM output, and i use the example  of pdmstream_cc2650STK_TI.

      i am not sure is that  fit for PDM microphone , as i add  the two header files in my source 

    #include <ti/drivers/pdm/PDMCC26XX.h>
    #include <ti/drivers/pdm/PDMCC26XX_util.h>

    and i attend to use API to get the I2S buffer, but it recommand me it can't find the source .

    PDMCC26XX_I2S_Handle i2sHandle;
    i2sHandle=(PDMCC26XX_I2S_Handle)&(PDMCC26XX_I2S_config);
    PDMCC26XX_I2S_init(i2sHandle);
    i2sHandle=PDMCC26XX_I2S_open(i2sHandle,NULL);
    PDMCC26XX_I2S_startStream(i2sHandle);

    and i also want to add this API:

    pdm2pcm16k(bufferRequest.bufferIn, decimationState, object->decimationFilter, (int16_t *)&tempPcmBuf);

    that seemed the same question . could you give me some suggestion?

     and now i  have to use the I2S register to accept the pdm buffer,  the only way it seems.

  • Hi,

    What do you need to access: raw PDM data? or decimated PDM data (called PCM)?

    The PDM driver is already responsible to decimate the raw PDM data into PCM data using a decimation filter (named pdm2pcm16k or pdm2pcm8k). 

    Regards,

  • hi,

              Anyone of The two styles is ok, I think the decimated PDM data is better. 

    how can i  to sove this problem:

    I add the title in main.c

    #include <ti/drivers/pdm/PDMCC26XX.h> ,

    and put  PDMCC26XX.c  in  ti/drivers/pdm.   

    then build all,there is a error:

    Error[Li005]: no definition for "PDMCC26XX_I2S_init" [referenced from C:\ti\simplelink\timac_1_05_02_43299-tx_low_power_2019\timac_1_05_02_43299-tx\Projects\mac\Sample\cc26xx_RTOS\IAR Projects\Application\CC2650\

    i noticed that in ti/drivers/pdm/PDMCC26XX.h

    #ifndef ti_drivers_pdm_PDMCC26XX__include
    #define ti_drivers_pdm_PDMCC26XX__include

  • Hi,

    lixia zhu said:
    I think the decimated PDM data is better

    Then you can use the PDM driver as it. Please consult the documentation for the details: http://software-dl.ti.com/dsps/dsps_public_sw/sdo_sb/targetcontent/tirtos/2_20_00_06/exports/tirtos_full_2_20_00_06/products/tidrivers_full_2_20_00_08/docs/doxygen/html/_p_d_m_c_c26_x_x_8h.html

    Regarding your compilation error, have you verify if your folder is part of the #include search path (cf. Project Properties > Build > Include Options). This kind of problem is quite common, please use the search function of the forum for details.

    Regards,

  • Hi,

    Did you manege to solve your problem with the information provided?

    Please click "This Resolved my issue" button if so.

    Regards,