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.

AM35xx SDMA UART alignement

Hi, i want to transfer data from SDRAM to UART Controller via SDMA

The first byte of the data does not start at a 4-Byte boundary. All Transfer length shall be possible.

 

If i try to transfer 54 Bytes, then two bytes are added. = 56Bytes

If i try to transfer 55 Bytes, then one byte is added. = 56Bytes

After some test , i found that multiples of 4 Bytes are transfered correct. For all other Length there are some bytes added.

I think i made some parameters wrong:

DMA4_CSDP.DATA_TYPE = DMA4_CSDP_DATA_TYPE_8BITSSCALAR; 

DMA4_CSDP.SRC_BURST_EN = DMA4_CSDP_SCRDST_BURST_EN_SINGLEACCESS;

DMA4_CSDP.DST_BURST_EN = DMA4_CSDP_SCRDST_BURST_EN_SINGLEACCESS;

 

DMA4_CCR.SRC_AMODE = DMA4_CCR_SRCDST_AMODE_POSTINCREMENTEDADDRESS;

DMA4_CCR.DST_AMODE = DMA4_CCR_SRCDST_AMODE_CONSTANTADDRESS;

 

DMA4_CCR.FS = 1;

DMA4_CCR.BS = 0;

 

DMA4_CCR.PREFETCH = DMA4_CCR_PREFETCH_DISABLE;

 

DMA4_CCR.READ_PRIORITY = DMA4_CCR_READWRITE_PRIORITY_HIGH;

DMA4_CCR.WRITE_PRIORITY = DMA4_CCR_READWRITE_PRIORITY_LOW;

 

DMA4_CCR.SEL_SRC_DST_SYNC = DMA4_CCR_SEL_SRC_DST_SYNC_TRIGGER_BY_DESTINATION;

 

 

DMA4_CEN.CHANNEL_ELMNT_NBR = 1; 

DMA4_CFN.CHANNEL_FRAME_NBR = conf->transferlength & 0x00FFFFFF;

 

DMA4_CSE.CHANNEL_SRC_ELMNT_INDEX = 1; 

DMA4_CSF.CH_SRC_FRM_INDEX_OR_ = 0; 

 

DMA4_CDE.CHANNEL_DST_ELMNT_INDEX = 1; 

DMA4_CDF.CH_DST_FRM_IDX_OR_16BIT_ = 0; 

 

DMA4_CSDP.DST_PACKED = DMA4_CSDP_SRCDST_PACKET_ISNONPACKET;

DMA4_CSDP.SRC_PACKED = DMA4_CSDP_SRCDST_PACKET