DSPRelated.com
Forums

UART and DMA

Started by soibaf June 5, 2003
Hi.
I am using DMA descriptor mode to transfer data from and to UART port of a
ADSP2191.
I use 2 descriptor in chained mode. The first have the next descriptor pointer
pointed to the second one and the second descriptors points to the first. I
refresh the descriptor in the interrupt routine at the end of a DMA transfer.
I have found a problem in receiving data:
the DMA start the transfer and continues for a while; DMA controller accesses
different descriptor in the right way.
Abruptly the DMA gives an error: it writes in its Configuration register the
word BA07.
There is also another problem which I suppose is linked to the described
problem: in DataMemory one of the two descriptor is modified. The next
descriptor pointer register is written with 0. Is it possible that the DMA
writes to this register?
I controlled the whole project and no routines writes to that location.

Could anyone help me? I can't understand what is going on.

Thank you.

Fabio Sebastiano



Can you post or send the relevant code for the problem your
experiencing? I haven't used UART RX DMA with the 2191 Rev .1
or .2. I have done UART TX descriptor based DMA. Only problem, I
ran into with TX descriptor based DMA was that on the first transfer
the first byte wasn't always transmitted. After the first transfer,
the problem didn't seem to occur again. Whatever the case, I'd be
cautious when using the DMA on REV .1 and .2. Hopefully all will be
resolved in Rev 1.0.

The DMA does write the descriptors HEAD (page 11-7 FIRST ED. Hardware
Reference).

TD

--- In , "soibaf" <soibaf@y...> wrote:
> Hi.
> I am using DMA descriptor mode to transfer data from and to UART
port of a ADSP2191.
> I use 2 descriptor in chained mode. The first have the next
descriptor pointer pointed to the second one and the second
descriptors points to the first. I refresh the descriptor in the
interrupt routine at the end of a DMA transfer.
> I have found a problem in receiving data:
> the DMA start the transfer and continues for a while; DMA
controller accesses different descriptor in the right way.
> Abruptly the DMA gives an error: it writes in its Configuration
register the word BA07.
> There is also another problem which I suppose is linked to the
described problem: in DataMemory one of the two descriptor is
modified. The next descriptor pointer register is written with 0. Is
it possible that the DMA writes to this register?
> I controlled the whole project and no routines writes to that
location.
>
> Could anyone help me? I can't understand what is going on.
>
> Thank you.
>
> Fabio Sebastiano