This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How to get UPP to perform *contiguous* block transfers

I'm having trouble getting the Universal Parallel Port (UPP) to make contiguous block transfers.  (Using the  c6748 on the LogicPD EVM board.)

Here is the code:

 #define BLOCK_LENGTH    0xFFC0
// This load the address of the data buffer
UPP->UPID0 = (uint32_t)&data_buffer;                                    
// This calls for 2 lines of BLOCK_LENGTH bytes to be transfered
UPP->UPID1 = BLOCK_LENGTH + 0x00020000;                 
// Offset between lines -- so the data should be continguous in memory
UPP->UPID2 = BLOCK_LENGTH;                                            

Unfortunately, the UPP does not offset the blocks of data into contiguous memory locations.  Instead, it overwrites the previous memory locations (and leaves the trailing memory locations empty). The memory then contains only the last block of data, following by many unfilled memory locations. 

When I change solely the number of lines to 1 (as with the last line of code as UPP->UPID1 = BLOCK_LENGTH + 0x00010000), then the UPP transfers only one block of data, and does it correctly.  In other words, my code works properly when transfering one block of data, but not for multiple block transfers.

What am I doing wrong?