BF514

Could you please help on below question:

I ported my custom BF531 board's code into my custom BF514 board but I never manege to run 2D PPI DMA receive interrupt.

 

Here below is my custom board's Blackfin pin connections;

 

PORT F

PF0 - PF15 -> PPI0 - PPI15 (16 bit)

 

PORT G

PG5 -> PPI CLK

PG6 -> PPI FS1

PG7 -> PPI FS2

 

I looked https://ez.analog.com forums but there is no solved issue or I could not have found it.

  

You can see my sample code in the attachment.

 

main.c.zip
Parents
  • 0
    •  Analog Employees 
    on Aug 25, 2017 1:28 AM

    Hi Bora,

    I had a quick review on your code example and I found that the programming sequence is still not correct. I could see that you have enabled PPI first prior to enable DMA. Please note the general procedure for setting up DMA operation with the PPI follows.

    1. Configure DMA registers as appropriate for desired DMA operating mode.

    2. Enable the DMA channel for operation.

    3. Configure appropriate PPI registers.

    4. Enable the PPI by writing a 1 to bit 0 in PPI_CONTROL.

    5. If internally generated frame syncs are used, write to the TIMER_ENABLE register to enable the timers linked to the PPI frame syncs.

    PPI Flow Diagram (Figure 20-12) given in the HRM give you clear information about how to configure PPI correctly. In your 'main()', I would suggest you to call 'Init_Interrupts();' prior to call 'Init_DMA_and_PPI();'. Also, enable the PPI interrupt in the 'Init_Interrupts();' itself rather enabling in the while (1) loop.

     

    How are you confirming the interrupt occurrence? Can you put a break point in the start of ISR function and see if the that hits? 

     

    In case if you are still facing the problem can you give the screenshot of DMA and EPPI registers?

     

    Best Regards,

    Jithul


Reply
  • 0
    •  Analog Employees 
    on Aug 25, 2017 1:28 AM

    Hi Bora,

    I had a quick review on your code example and I found that the programming sequence is still not correct. I could see that you have enabled PPI first prior to enable DMA. Please note the general procedure for setting up DMA operation with the PPI follows.

    1. Configure DMA registers as appropriate for desired DMA operating mode.

    2. Enable the DMA channel for operation.

    3. Configure appropriate PPI registers.

    4. Enable the PPI by writing a 1 to bit 0 in PPI_CONTROL.

    5. If internally generated frame syncs are used, write to the TIMER_ENABLE register to enable the timers linked to the PPI frame syncs.

    PPI Flow Diagram (Figure 20-12) given in the HRM give you clear information about how to configure PPI correctly. In your 'main()', I would suggest you to call 'Init_Interrupts();' prior to call 'Init_DMA_and_PPI();'. Also, enable the PPI interrupt in the 'Init_Interrupts();' itself rather enabling in the while (1) loop.

     

    How are you confirming the interrupt occurrence? Can you put a break point in the start of ISR function and see if the that hits? 

     

    In case if you are still facing the problem can you give the screenshot of DMA and EPPI registers?

     

    Best Regards,

    Jithul


Children
No Data