Hello,
I was using OMAP-L138 DSP UPP for data transmission and reception with a single OMAP Kit using channel Q for TX and channel I for RX. I configured UPP to transmit and receive dividing the signal into blocks and I did it in a loop, like this (it's not the whole loop, just the lines related to UPP):
while(1){
// DMA TX polling
UPP->UPQD0 = dma_tx_data + (uint32_t)(i*DMA_LINE_SIZE);
UPP->UPQD1 = ((DMA_WINDOW_SIZE&0xffff)<<16) | (DMA_LINE_SIZE&0xffff);
UPP->UPQD2 = (DMA_LINE_SIZE&0xffff);
i++;
// DMA RX polling
UPP->UPID0 = ((uint32_t)dma_rx_buffer) + ((uint32_t)(i*DMA_LINE_SIZE));
UPP->UPID1 = ((DMA_WINDOW_SIZE&0xffff)<<16) | (DMA_LINE_SIZE&0xffff);
UPP->UPID2 = (DMA_LINE_SIZE&0xffff);
j++;
}
where DMA_LINE_SIZE is 32768 and DMA_WINDOW_SIZE is 1.
Now I wanted to do it with 2 OMAP Kits, independing TX and RX. And I would like to transmit the whole signal in a time and then receive it. To make it transmit the whole signal I configured the UPP of the TX Kit like this:
UPP->UPQD0 = dma_tx_data;
UPP->UPQD1 = ((DMA_WINDOW_SIZE_NEW&0xffff)<<16) | (DMA_LINE_SIZE&0xffff);
UPP->UPQD2 = (DMA_LINE_SIZE&0xffff);
where DMA_LINE_SIZE is 32768 and DMA_WINDOW_SIZE_NEW is 32 (to complete the size of the signal, which is 1048576)
And to make it recieve the whole signal I configured the UPP of the RX Kit like this:
UPP->UPID0 = ((uint32_t)dma_rx_buffer);
UPP->UPID1 = ((DMA_WINDOW_SIZE_NEW&0xffff)<<16) | (DMA_LINE_SIZE&0xffff);
UPP->UPID2 = (DMA_LINE_SIZE&0xffff);
where DMA_LINE_SIZE is 32768 and DMA_WINDOW_SIZE_NEW is 32 (to complete the size of the signal, which is 1048576)
I don't know if it is enough to configure more lines per window (32 instead of 1) and doing it without a loop, or I have to configure some fields else of the UPP... but it doesn't work like this. Maybe some of you can help me. It would be great if you answer me, thank you very much!
Pablo