AnsweredAssumed Answered

IVG10 conflict from USB-DMA and TWI.

Question asked by vito on Aug 13, 2013
Latest reply on Aug 28, 2013 by SteveM



I have strange problem that I cannot debug. I noticed that when I am doing USB-DMA transfers (in USB bulk mode) and

I am doing TWI transfers - I am getting problems ending up with exception indicating DMA problems/CPLB problems

that cannot be solved by disabling CPLB.


I noticed that both (TWI as well as USB DMA INT) use same interrupt vector (IVG10) that goes to adi_int_Nesting_IVG10.

What i noticed is that when TWI transfer is done whlie USB access - stack goes to the

TWI functions -> adi_int_Nesting_IVG10 and then to the USB-DMA.


I wanted to ask if there is a way of binding TWI functionality to other vector than IVG10.

Is there a way of using function adi_dev_Open(...) that forces callback to be binded under other vector (like IVG9 or IVG13?).


result = adi_dev_Open(

ghDevManager,                    // DevMgr handle

&ADI_USBDRC_Entrypoint,          // pdd entry point

0,                               // device instance

(void*)1,                        // client handle callback identifier

&usbDevHandle,                   // device handle

ADI_DEV_DIRECTION_BIDIRECTIONAL, // data direction for this device

ghDmaManager,                    // handle to DmaMgr for this device

NULL,                            // handle to deferred callback service

usbCallback );                   // client's callback function



Thank you for your help,