|
1 | 1 | /* -*- Mode: C; tab-width: 2; indent-tabs-mode: nil -*- */
|
2 | 2 |
|
| 3 | +#define LEUART0_DMA_CHANNEL 0 |
| 4 | +#define LEUART0_BUF_MAX 255 |
| 5 | + |
3 | 6 | namespace leuart0 {
|
4 | 7 |
|
5 | 8 | // extra serial interface for debugging
|
6 | 9 |
|
7 | 10 | // PD4: TX
|
8 | 11 | // PD5: RX
|
9 | 12 |
|
| 13 | + static char rxbuf[LEUART0_BUF_MAX] = {0}; |
| 14 | + |
| 15 | + LEUART_Init_TypeDef init = { |
| 16 | + .enable = leuartEnableRx, // Activate data reception on LEUn_RX pin. |
| 17 | + .refFreq = 0, // Inherit the clock frequenzy from the LEUART clock source |
| 18 | + .baudrate = 9600, |
| 19 | + .databits = leuartDatabits8, |
| 20 | + .parity = leuartNoParity, |
| 21 | + .stopbits = leuartStopbits1, |
| 22 | + }; |
| 23 | + |
| 24 | + DMA_Init_TypeDef dma_init = { |
| 25 | + .hprot = 0, // No descriptor protection |
| 26 | + .controlBlock = dmaControlBlock, // DMA control block alligned to 256 |
| 27 | + }; |
| 28 | + |
| 29 | + DMA_CfgChannel_TypeDef chnlCfg = { |
| 30 | + .highPri = false, // Normal priority |
| 31 | + .enableInt = false, // No interupt enabled for callback functions |
| 32 | + // Set LEUART0 RX data available as source of DMA signals: |
| 33 | + .select = DMAREQ_LEUART0_RXDATAV, |
| 34 | + .cb = NULL, |
| 35 | + }; |
| 36 | + |
| 37 | + DMA_CfgDescr_TypeDef descrCfg = { |
| 38 | + .dstInc = dmaDataInc1, // Increment destination address by one byte |
| 39 | + .srcInc = dmaDataIncNone, // Do no increment source address |
| 40 | + .size = dmaDataSize1, // Data size is one byte |
| 41 | + .arbRate = dmaArbitrate1, // Rearbitrate for each byte recieved |
| 42 | + .hprot = 0, // No read/write source protection |
| 43 | + }; |
| 44 | + |
| 45 | + |
10 | 46 | static void setup() {
|
| 47 | + GPIO_PinModeSet(gpioPortD, 4, gpioModePushPull, 1); |
| 48 | + GPIO_PinModeSet(gpioPortD, 5, gpioModeInput, 0); |
11 | 49 | // To avoid false start, configure output LEU0_TX as high on PD4
|
12 |
| - GPIO->P[3].DOUT |= (1 << 4); |
13 |
| - // Pin PD4 is configured to Push-pull |
14 |
| - GPIO->P[3].MODEL = (GPIO->P[3].MODEL & ~_GPIO_P_MODEL_MODE4_MASK) | GPIO_P_MODEL_MODE4_PUSHPULL; |
15 |
| - // Pin PD5 is configured to Input enabled |
16 |
| - GPIO->P[3].MODEL = (GPIO->P[3].MODEL & ~_GPIO_P_MODEL_MODE5_MASK) | GPIO_P_MODEL_MODE5_INPUT; |
| 50 | + GPIO_PinOutSet(gpioPortD, 4); |
17 | 51 |
|
18 | 52 |
|
19 |
| - // Enable signals TX, RX |
20 |
| - LEUART0->ROUTE |= LEUART_ROUTE_TXPEN | LEUART_ROUTE_RXPEN; |
| 53 | + // Enable signals TX, RX at location 0 |
| 54 | + LEUART0->ROUTE |= LEUART_ROUTE_TXPEN | LEUART_ROUTE_RXPEN |
| 55 | + | LEUART_ROUTE_LOCATION_LOC0; |
21 | 56 | }
|
22 | 57 |
|
23 | 58 | }
|
0 commit comments