UART with DMA

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

UART with DMA

3,389 Views
renka
Contributor II

Hi,

I'm currently working with kinetis k60 and IAR workspace.I'm trying to write to UART via DMA channel 1,i.e. i have a buffer in memory:

#define DMA_BLK_SIZE 16

uint8 Dma_Source_Blk[DMA_BLK_SIZE]; //filled with data 0x01 - 0x10

 

and i trying to transfer this array to UART by DMA.  

The DMA is configured to 1byte minor loop and 16 bytes major loop.When i set 1 byte major loop,i've received DMA interrupt,but when the major loop is defined as 16 bytes,DMA ISR isn't triggered.

 

I've worked with UART3 and DMA channel 1. DMA MUX source is 13.Is it right?

Thanks,

 

0 Kudos
6 Replies

1,411 Views
comsosysarch
Contributor III

    DMAMUX_SRC_UART0_RX                = 2,
    DMAMUX_SRC_UART0_TX                = 3,
    DMAMUX_SRC_UART1_RX                = 4,
    DMAMUX_SRC_UART1_TX                = 5,
    DMAMUX_SRC_UART2_RX                = 6,
    DMAMUX_SRC_UART2_TX                = 7,
    DMAMUX_SRC_UART3_RX                = 8,
    DMAMUX_SRC_UART3_TX                = 9,
    DMAMUX_SRC_UART4_RX                = 10,
    DMAMUX_SRC_UART4_TX                = 11,

 

So, no, not 13. I think 13 is reserved. You want DMAMUX_SRC_UART3_TX = 9.

0 Kudos

1,411 Views
richyankee
Contributor II

comsosysarch,

 

your quote below - I am using IAR on K60 and lookoing for these definitions (and all the peripheral slots assignable through the DMAMUX).

 

May I ask, where did you find these?

 

Thanks

 

Rich

 

    DMAMUX_SRC_UART0_RX                = 2,
    DMAMUX_SRC_UART0_TX                = 3,
    DMAMUX_SRC_UART1_RX                = 4,
    DMAMUX_SRC_UART1_TX                = 5,
    DMAMUX_SRC_UART2_RX                = 6,
    DMAMUX_SRC_UART2_TX                = 7,
    DMAMUX_SRC_UART3_RX                = 8,
    DMAMUX_SRC_UART3_TX                = 9,
    DMAMUX_SRC_UART4_RX                = 10,
    DMAMUX_SRC_UART4_TX                = 11,

0 Kudos

1,411 Views
comsosysarch
Contributor III

K60 Sub-Family Reference Manual, Rev. 6, Nov 2011

pp 92-94

3.3.9.1 DMA MUX request sources

Table 3-24. DMA request sources - MUX 0

 

May not be the most recent but it is the one I have.

 

Yes, I have IAR EWARM-CM (and Keil uVision4) but had to make my own header file since both of them fail to include this information. Just like if you use DMA you may find that it is easier when writing code to remake the TCD definition using pointers instead of uint32_t for a few items - ymmv.

 

Go by that table, not my list (for example, for whatever reason long since forgotten I have the UART5 sources as reserved).

 

0 Kudos

1,411 Views
richyankee
Contributor II

I guess that's what happens when you zoom in on the part thet you 'know is important' and forget the rest of the manual :smileyhappy:

 

Thanks.

 

 

0 Kudos

1,411 Views
patooooo
Contributor I

thanks or ...... I have procesor MPC 5606B

I need send array byte[176][144] to UART with DMA ........ repeatedly ........ it is posible?????

example is :

 "

In File registers.h:
#define DMAMUX_BASE_ADDR 0xFC084000/* Example only ! */
/* Following example assumes char is 8-bits */
volatile unsigned char *CHCONFIG2 = (volatile unsigned char *) (DMAMUX_BASE_ADDR+0x0002);
In File main.c:
#include "registers.h"
.


.*CHCONFIG2 = 0x00;
*CHCONFIG2 = 0xA2;

"

0 Kudos

1,411 Views
patooooo
Contributor I

I have to this problem .... I need send same array  with  DMA to UART....... pleas help me

0 Kudos