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.

Can not find EDMA3 synchronous event in the TMS320C6457 with CCS4.2

In my project,I config  the EDMA synchronous event is the CSL_EDMA3_CHA_GPINT10,and my Code for GPIO PIN10 like this:

/* Initialize the GPIO CSL module */
status = CSL_gpioInit(&pContext);
if (status != CSL_SOK) {
printf("GPIO: Initialization error.\n");
return;
}

/* Open the CSL module */
hGpio = CSL_gpioOpen(&gpioObj, CSL_GPIO, NULL, &status);
if ((hGpio == NULL) || (status != CSL_SOK)) {
printf("GPIO: Error opening the instance.\n");
return;
}


/* Setup hardware parameters */
hwSetup.extendSetup = NULL;

/* Setup the General Purpose IO */
status = CSL_gpioHwSetup(hGpio, &hwSetup);
/* Configure pin 10 to generate an interrupt on Rising Edge, and
* configure it as an input
*/
config.pinNum = CSL_GPIO_PIN10;
config.trigger = CSL_GPIO_TRIG_RISING_EDGE;
config.direction = CSL_GPIO_DIR_INPUT;

/* configure the gpio pin 10 */
status = CSL_gpioHwControl(hGpio, CSL_GPIO_CMD_CONFIG_BIT, &config);
if (status != CSL_SOK) {
printf("GPIO: GPIO pin configuration error.\n");
return;
}

/* Event Enable */
HWI_eventMap(C64_INT11, CSL_INTC_EVENTID_GPINT10);

C64_enableIER(C64_EINT11);

/* Enable the bank interrupt */
status = CSL_gpioHwControl(hGpio, CSL_GPIO_CMD_BANK_INT_ENABLE, NULL);




Also,I use the FPGA to generate one rising edge interrupt in the GPIOPIN10.
While debugging my project ,I find that I can run into the ISR function of the HWI_11,
but there is no event appear in the ER/ERH register(I have enabled the event );

besides, if I mannually trigger the EDMA,the EDMA can work well.

if anybody has the same problem, thank you for your reply!

  • You have done a good job of getting parts of the process implemented and the problems identified. And it is true that you should be able to generate an interrupt and also generate an EDMA3 event.

    The first thing to do is to check the Errata document for the C6457 just in case there is anything listed about your situation. This is a routine comment to make; I have not checked it.

    If EERH (Event Enable Register High) is set for this event, then you would not likely see the ERH bit set. As soon as the event comes in, it would immediately get passed through to trigger the DMA transfer. Is the EERH bit set?

    Regards,
    RandyP

  • After config the EDMA,I check the EDMA3CC register, I find that :

    And this mean the event of GPIO10 have been enabled.while I have detect the GPIO10 interrupt,the register of ERH does not change

  • Did you mean to close this thread by marking it answered? Most people will not look at this thread to offer an answer if it is already marked with Verify Answer.

    As I explained above, with the EERH bit set, the ERH bit will not stay set long enough to see it.

    Please clear the EERH bit for this test, and see if the ERH bit does get set after that.

    If ERH does not get set, then there is another configuration issue between the GPIO and the EDMA.

    Regards,
    RandyP