Other Parts Discussed in Thread: HALCOGEN
Dear TI-Support,
This ticket is related to an other post:
In short:
It appeared that the results of 4 adc - conversions were swapped after an undefined time, when we are using the dma modul, in fact the ADC result was invalid and the same ADC channel was triggered again. So the new value of the result was not in the expected ADC buffer and the DMA copied the invalid value to the application buffer.
To solve this problem, we set the element count of the dma modul to 8 even though G2_BLOCKS was still 4.
The idea was that dma would copy all adc->G2BUF[0-7] after a dma request was triggered.
In our application we discard all invalid results.
Using a block transfer IRQ triggered at the end of 10 DMA frames(frame count = 10), we measure the time between each IRQ.
After an undefined time, the IRQ is triggered every 2-3ms instead of every 10ms.
We don't know why the IRQ triggers that early.
As new workaround we think to use ADC port A and port B on two different DMA request lines (11 and 17). At the same time we decrease the fifo size from 16 to 2 or 4.
A) What would you recommend?
B) Btw, where are the results stored if we use a fifo size greater than 8? 16 Was Halcogen's default value, althouh there are only 8 buffer register?
We enable G2_BLK_XFER with size 2. In our application we check if the G2_EMPTY flag is set and only copy the values if the bit is not set.
c) What does no valid data mean for ADC?
d) When does the block transfer trigger the DMA request? If we set G2_BLK_XFER to2, will a request be generated after the second valid or after the seconf measurement?