Hello,
I’m having trouble with uPP Transmit. I have Channel A configured for 16-bit transmits using DMA I and I'm using an OMAPL138 running at 300 MHz. I have my test code stripped down to a loop in which I perform a single transmit, wait for the interrupt indicating that the transmit has completed and then repeat. The issue I’m seeing is that I very frequently get UORI interrupts from the uPP device.
I’ve gone through all the suggested actions in section 2.6.3 of the uPP User’s Guide (using single data rate, increasing the clock divisor to its maximum, changing the DMA read burst size to 256, using longer lines (up to 0xFFFE bytes), and raising the system priority of the uPP DMA to its maximum), but I still see the UORI error.
The only way I can make the error go away is to decrease the byte count setting in the DMA control registers to be less than 256, and then increase the line count so that the desired number of total bytes is transferred. I realize this is the opposite of what the User’s Guide advises, but for some reason it stops the UORI error from being generated. For example, if I want to transmit 1280 bytes, setting the byte count to 1280 and the line count to 1, will generate UORI errors. However setting the byte count to 128, the line count to 10 and the line offset to 128 will not generate any errors.
Is this perhaps somehow related to the 2xTxClk required for uPP transfers? I’ve tried a variety of clock speeds, and have used the clock divider for Channel A to set the Tx Clock to be exactly half of 2xTxClk or even much slower, but it does not seem to make a difference. Are there additional requirements for the 2xTxClk? All I’ve read in the User’s Manual is that it must be twice the frequency of the Tx Clock.
Here is a copy of the uPP configuration register settings I’m using (in case it helps):
1651 1 1e16000 0 78
0x44231100 UPPID
0x00000089 UPPCR
0x00000000 UPDLB
0x00000000
0x22220007 UPCTL
0x00300130 UPICR
0xFFFFFFFF UPIVR
0x03030303 UPTCR
0x00000010 UPISR
0x00000000 UPIER
0x00000F0F UPIES
0x00000F0F UPIEC
0x00000000 UPEOI
0x00000000
0x00000000
0x00000000
0xC6120080 UPID0
0x00010100 UPID1
0x00000000 UPID2
0x00000000
0xC6120080 UPIS0
0x00020000 UPIS1
0x00000020 UPIS2
0x00000000
0x00000000 UPQD0
0x00000000 UPQD1
0x00000000 UPQD2
0x00000000
0x00000000 UPQS0
0x00010000 UPQS1
0x00000020 UPQS2
Any help or insight would be greatly appreciated.
Thanks,
\Greg