Skip to content

Commit

Permalink
added pin map implementation
Browse files Browse the repository at this point in the history
  • Loading branch information
EricB-ADI committed Nov 1, 2024
1 parent 0f2ade3 commit 04c9e04
Show file tree
Hide file tree
Showing 4 changed files with 187 additions and 41 deletions.
22 changes: 12 additions & 10 deletions Libraries/PeriphDrivers/Include/MAX32655/mxc_pins.h
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@

#include "gpio.h"

typedef enum { MAP_A, MAP_B, MAP_INVALID } sys_map_t;

/***** Global Variables *****/
// Predefined GPIO Configurations
extern const mxc_gpio_cfg_t gpio_cfg_extclk;
Expand All @@ -37,16 +39,16 @@ extern const mxc_gpio_cfg_t gpio_cfg_i2c2;
extern const mxc_gpio_cfg_t gpio_cfg_i2c2b;
extern const mxc_gpio_cfg_t gpio_cfg_i2c2c;

extern const mxc_gpio_cfg_t gpio_cfg_uart0;
extern const mxc_gpio_cfg_t gpio_cfg_uart0_flow;
extern const mxc_gpio_cfg_t gpio_cfg_uart0_flow_disable;
extern const mxc_gpio_cfg_t gpio_cfg_uart1;
extern const mxc_gpio_cfg_t gpio_cfg_uart1_flow;
extern const mxc_gpio_cfg_t gpio_cfg_uart1_flow_disable;
extern const mxc_gpio_cfg_t gpio_cfg_uart2;
extern const mxc_gpio_cfg_t gpio_cfg_uart2_flow;
extern const mxc_gpio_cfg_t gpio_cfg_uart2_flow_disable;
extern const mxc_gpio_cfg_t gpio_cfg_uart3;
extern const mxc_gpio_cfg_t gpio_cfg_uart0[];
extern const mxc_gpio_cfg_t gpio_cfg_uart0_flow[];
extern const mxc_gpio_cfg_t gpio_cfg_uart0_flow_disable[];
extern const mxc_gpio_cfg_t gpio_cfg_uart1[];
extern const mxc_gpio_cfg_t gpio_cfg_uart1_flow[];
extern const mxc_gpio_cfg_t gpio_cfg_uart1_flow_disable[];
extern const mxc_gpio_cfg_t gpio_cfg_uart2[];
extern const mxc_gpio_cfg_t gpio_cfg_uart2_flow[];
extern const mxc_gpio_cfg_t gpio_cfg_uart2_flow_disable[];
extern const mxc_gpio_cfg_t gpio_cfg_uart3[];

extern const mxc_gpio_cfg_t antenna_ctrl0;
extern const mxc_gpio_cfg_t antenna_ctrl1;
Expand Down
20 changes: 20 additions & 0 deletions Libraries/PeriphDrivers/Include/MAX32655/uart.h
Original file line number Diff line number Diff line change
Expand Up @@ -256,6 +256,26 @@ int MXC_UART_SetFlowCtrl(mxc_uart_regs_t *uart, mxc_uart_flow_t flowCtrl, int rt
* for a list of return codes.
*/
int MXC_UART_SetClockSource(mxc_uart_regs_t *uart, mxc_uart_clock_t clock);
/**
* @brief Sets the clock source for the baud rate generator
*
* @param uart Pointer to UART registers (selects the UART block used.)
* @param map Pin MAP for UART
*
* @return E_NO_ERROR if successful, otherwise see \ref MXC_Error_Codes
*
*/
int MXC_UART_SetPinMap(mxc_uart_regs_t *uart, sys_map_t map);

/**
* @brief Sets the clock source for the baud rate generator
*
* @return map
*
* @note Assertion triggered in debug mode if invalid uart is passed.
*
*/
int MXC_UART_GetPinMap(mxc_uart_regs_t *uart);

/**
* @brief Gets the clock source used for the UART instance
Expand Down
86 changes: 65 additions & 21 deletions Libraries/PeriphDrivers/Source/SYS/pins_me17.c
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@

#include "gpio.h"
#include "mxc_device.h"

#include "mxc_pins.h"
/***** Definitions *****/

/***** Global Variables *****/
Expand All @@ -41,26 +41,70 @@ const mxc_gpio_cfg_t gpio_cfg_i2c1 = { MXC_GPIO0, (MXC_GPIO_PIN_16 | MXC_GPIO_PI
const mxc_gpio_cfg_t gpio_cfg_i2c2 = { MXC_GPIO0, (MXC_GPIO_PIN_30 | MXC_GPIO_PIN_31), MXC_GPIO_FUNC_ALT1,
MXC_GPIO_PAD_NONE, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 };

const mxc_gpio_cfg_t gpio_cfg_uart0 = { MXC_GPIO0, (MXC_GPIO_PIN_0 | MXC_GPIO_PIN_1), MXC_GPIO_FUNC_ALT1,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 };
const mxc_gpio_cfg_t gpio_cfg_uart0_flow = { MXC_GPIO0, (MXC_GPIO_PIN_2 | MXC_GPIO_PIN_3), MXC_GPIO_FUNC_ALT2,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 };
const mxc_gpio_cfg_t gpio_cfg_uart0_flow_disable = { MXC_GPIO0, (MXC_GPIO_PIN_2 | MXC_GPIO_PIN_3), MXC_GPIO_FUNC_IN,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 };
const mxc_gpio_cfg_t gpio_cfg_uart1 = { MXC_GPIO0, (MXC_GPIO_PIN_12 | MXC_GPIO_PIN_13), MXC_GPIO_FUNC_ALT1,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 };
const mxc_gpio_cfg_t gpio_cfg_uart1_flow = { MXC_GPIO0, (MXC_GPIO_PIN_14 | MXC_GPIO_PIN_15), MXC_GPIO_FUNC_ALT2,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 };
const mxc_gpio_cfg_t gpio_cfg_uart1_flow_disable = { MXC_GPIO0, (MXC_GPIO_PIN_14 | MXC_GPIO_PIN_15), MXC_GPIO_FUNC_IN,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 };
const mxc_gpio_cfg_t gpio_cfg_uart2 = { MXC_GPIO1, (MXC_GPIO_PIN_0 | MXC_GPIO_PIN_1), MXC_GPIO_FUNC_ALT1,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 };
const mxc_gpio_cfg_t gpio_cfg_uart2_flow = { MXC_GPIO0, (MXC_GPIO_PIN_30 | MXC_GPIO_PIN_31), MXC_GPIO_FUNC_ALT2,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 };
const mxc_gpio_cfg_t gpio_cfg_uart2_flow_disable = { MXC_GPIO0, (MXC_GPIO_PIN_30 | MXC_GPIO_PIN_31), MXC_GPIO_FUNC_IN,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 };
const mxc_gpio_cfg_t gpio_cfg_uart3 = { MXC_GPIO2, (MXC_GPIO_PIN_6 | MXC_GPIO_PIN_7), MXC_GPIO_FUNC_ALT2,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 };


const mxc_gpio_cfg_t gpio_cfg_uart0[] = {[MAP_A] = { MXC_GPIO0, (MXC_GPIO_PIN_0 | MXC_GPIO_PIN_1), MXC_GPIO_FUNC_ALT1,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 },

[MAP_B] = { MXC_GPIO0, (MXC_GPIO_PIN_0 | MXC_GPIO_PIN_1), MXC_GPIO_FUNC_ALT1,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 }
};

const mxc_gpio_cfg_t gpio_cfg_uart0_flow[] = {[MAP_A] = { MXC_GPIO0, (MXC_GPIO_PIN_2 | MXC_GPIO_PIN_3), MXC_GPIO_FUNC_ALT2,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 },

[MAP_B] = { MXC_GPIO0, (MXC_GPIO_PIN_2 | MXC_GPIO_PIN_3), MXC_GPIO_FUNC_ALT2,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 }
};

const mxc_gpio_cfg_t gpio_cfg_uart0_flow_disable[] = {[MAP_A] = { MXC_GPIO0, (MXC_GPIO_PIN_2 | MXC_GPIO_PIN_3), MXC_GPIO_FUNC_IN,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 },

[MAP_B] = {MXC_GPIO0, (MXC_GPIO_PIN_2 | MXC_GPIO_PIN_3), MXC_GPIO_FUNC_IN,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0
}
};


const mxc_gpio_cfg_t gpio_cfg_uart1[] = {[MAP_A] = { MXC_GPIO0, (MXC_GPIO_PIN_12 | MXC_GPIO_PIN_13), MXC_GPIO_FUNC_ALT1,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 },
[MAP_B] = { MXC_GPIO0, (MXC_GPIO_PIN_12 | MXC_GPIO_PIN_13), MXC_GPIO_FUNC_ALT1,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 }
};

const mxc_gpio_cfg_t gpio_cfg_uart1_flow[] = {[MAP_A] = { MXC_GPIO0, (MXC_GPIO_PIN_14 | MXC_GPIO_PIN_15), MXC_GPIO_FUNC_ALT2,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 },
[MAP_B] = { MXC_GPIO0, (MXC_GPIO_PIN_14 | MXC_GPIO_PIN_15), MXC_GPIO_FUNC_ALT2,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 }};

const mxc_gpio_cfg_t gpio_cfg_uart1_flow_disable[] = {[MAP_A] = { MXC_GPIO0, (MXC_GPIO_PIN_14 | MXC_GPIO_PIN_15), MXC_GPIO_FUNC_IN,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 },
[MAP_B] = { MXC_GPIO0, (MXC_GPIO_PIN_14 | MXC_GPIO_PIN_15), MXC_GPIO_FUNC_IN,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 }
};



const mxc_gpio_cfg_t gpio_cfg_uart2[] = {[MAP_A] = { MXC_GPIO1, (MXC_GPIO_PIN_0 | MXC_GPIO_PIN_1), MXC_GPIO_FUNC_ALT1,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 },
[MAP_B] = { MXC_GPIO1, (MXC_GPIO_PIN_0 | MXC_GPIO_PIN_1), MXC_GPIO_FUNC_ALT1,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 }};

const mxc_gpio_cfg_t gpio_cfg_uart2_flow[] = {[MAP_A] = { MXC_GPIO0, (MXC_GPIO_PIN_30 | MXC_GPIO_PIN_31), MXC_GPIO_FUNC_ALT2,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 },
[MAP_B] = { MXC_GPIO0, (MXC_GPIO_PIN_30 | MXC_GPIO_PIN_31), MXC_GPIO_FUNC_ALT2,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 }};

const mxc_gpio_cfg_t gpio_cfg_uart2_flow_disable[] = {[MAP_A] = { MXC_GPIO0, (MXC_GPIO_PIN_30 | MXC_GPIO_PIN_31), MXC_GPIO_FUNC_IN,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 },
[MAP_B] ={ MXC_GPIO0, (MXC_GPIO_PIN_30 | MXC_GPIO_PIN_31), MXC_GPIO_FUNC_IN,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 }};


const mxc_gpio_cfg_t gpio_cfg_uart3[] = {[MAP_A] = { MXC_GPIO2, (MXC_GPIO_PIN_6 | MXC_GPIO_PIN_7), MXC_GPIO_FUNC_ALT2,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 },
[MAP_B] = { MXC_GPIO2, (MXC_GPIO_PIN_6 | MXC_GPIO_PIN_7), MXC_GPIO_FUNC_ALT2,
MXC_GPIO_PAD_WEAK_PULL_UP, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 }};

const mxc_gpio_cfg_t antenna_ctrl0 = { MXC_GPIO1, (MXC_GPIO_PIN_8 | MXC_GPIO_PIN_9), MXC_GPIO_FUNC_ALT1,
MXC_GPIO_PAD_NONE, MXC_GPIO_VSSEL_VDDIO, MXC_GPIO_DRVSTR_0 };
Expand Down
100 changes: 90 additions & 10 deletions Libraries/PeriphDrivers/Source/UART/uart_me17.c
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,14 @@
#include "lpgcr_regs.h"
#include "dma.h"


static sys_map_t uart_maps[] = {
[0] = MAP_A,
[1] = MAP_A,
[2] = MAP_A,
[3] = MAP_A,
};

void MXC_UART_DMACallback(int ch, int error)
{
MXC_UART_RevB_DMACallback(ch, error);
Expand All @@ -51,25 +59,27 @@ int MXC_UART_Init(mxc_uart_regs_t *uart, unsigned int baud, mxc_uart_clock_t clo
if (retval) {
return retval;
}

const sys_map_t map = MXC_UART_GetPinMap(uart);

switch (MXC_UART_GET_IDX(uart)) {
case 0:
MXC_GPIO_Config(&gpio_cfg_uart0);
MXC_GPIO_Config(&gpio_cfg_uart0[map]);
MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_UART0);
break;

case 1:
MXC_GPIO_Config(&gpio_cfg_uart1);
MXC_GPIO_Config(&gpio_cfg_uart1[map]);
MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_UART1);
break;

case 2:
MXC_GPIO_Config(&gpio_cfg_uart2);
MXC_GPIO_Config(&gpio_cfg_uart2[map]);
MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_UART2);
break;

case 3:
MXC_GPIO_Config(&gpio_cfg_uart3);
MXC_GPIO_Config(&gpio_cfg_uart3[map]);
MXC_SYS_ClockEnable(MXC_SYS_PERIPH_CLOCK_UART3);
break;

Expand Down Expand Up @@ -216,35 +226,38 @@ int MXC_UART_SetParity(mxc_uart_regs_t *uart, mxc_uart_parity_t parity)

int MXC_UART_SetFlowCtrl(mxc_uart_regs_t *uart, mxc_uart_flow_t flowCtrl, int rtsThreshold)
{
const sys_map_t map = MXC_UART_GetPinMap(uart);

if (flowCtrl == MXC_UART_FLOW_EN) {
switch (MXC_UART_GET_IDX(uart)) {
case 0:
MXC_GPIO_Config(&gpio_cfg_uart0_flow);
MXC_GPIO_Config(&gpio_cfg_uart0_flow[map]);
break;

case 1:
MXC_GPIO_Config(&gpio_cfg_uart1_flow);
MXC_GPIO_Config(&gpio_cfg_uart1_flow[map]);
break;

case 2:
MXC_GPIO_Config(&gpio_cfg_uart2_flow);
MXC_GPIO_Config(&gpio_cfg_uart2_flow[map]);
break;

default:
return E_BAD_PARAM;
}
} else {

switch (MXC_UART_GET_IDX(uart)) {
case 0:
MXC_GPIO_Config(&gpio_cfg_uart0_flow_disable);
MXC_GPIO_Config(&gpio_cfg_uart0_flow_disable[map]);
break;

case 1:
MXC_GPIO_Config(&gpio_cfg_uart1_flow_disable);
MXC_GPIO_Config(&gpio_cfg_uart1_flow_disable[map]);
break;

case 2:
MXC_GPIO_Config(&gpio_cfg_uart2_flow_disable);
MXC_GPIO_Config(&gpio_cfg_uart2_flow_disable[map]);
break;

default:
Expand Down Expand Up @@ -340,6 +353,73 @@ mxc_uart_clock_t MXC_UART_GetClockSource(mxc_uart_regs_t *uart)
return E_BAD_PARAM;
}
}
/**
* @brief Sets the clock source for the baud rate generator
*
* @param map Pin MAP for UART
*
* @return E_NO_ERROR if successful, otherwise see \ref MXC_Error_Codes
*
*/
int MXC_UART_SetPinMap(mxc_uart_regs_t *uart, sys_map_t map)
{
if(map != MAP_A || map != MAP_B)
{
return E_BAD_PARAM;
}
const uint8_t uart_idx = MXC_UART_GET_IDX(uart);

switch (uart_idx) {
case 0:
MXC_GPIO_Config(&gpio_cfg_uart0[map]);
break;

case 1:

MXC_GPIO_Config(&gpio_cfg_uart1[map]);
break;

case 2:
MXC_GPIO_Config(&gpio_cfg_uart2[map]);
break;

case 3:
MXC_GPIO_Config(&gpio_cfg_uart3[map]);
break;

default:
return E_BAD_PARAM;
}



uart_maps[uart_idx] = map;


return E_NO_ERROR;

}

/**
* @brief Sets the clock source for the baud rate generator
*
* @return map
*
* @note Assertion triggered in debug mode if invalid uart is passed.
*
*/
int MXC_UART_GetPinMap(mxc_uart_regs_t *uart)
{
const int uart_idx = MXC_UART_GET_IDX(uart);

if(uart_idx < 0)
{
return E_BAD_PARAM;
}

return (int)uart_maps[uart_idx];
}


int MXC_UART_GetActive(mxc_uart_regs_t *uart)
{
Expand Down

0 comments on commit 04c9e04

Please sign in to comment.