254 lines
7.3 KiB
C
254 lines
7.3 KiB
C
/*
|
|
* lpc8xx_swm.h
|
|
*
|
|
* Created on: March 28, 2017
|
|
*
|
|
*/
|
|
|
|
#ifndef LPC8XX_SWM_H_
|
|
#define LPC8XX_SWM_H_
|
|
|
|
#include "LPC8xx.h"
|
|
|
|
// Port pin number equates
|
|
#define P0_0 0
|
|
#define P0_1 1
|
|
#define P0_2 2
|
|
#define P0_3 3
|
|
#define P0_4 4
|
|
#define P0_5 5
|
|
#define P0_6 6
|
|
#define P0_7 7
|
|
#define P0_8 8
|
|
#define P0_9 9
|
|
#define P0_10 10
|
|
#define P0_11 11
|
|
#define P0_12 12
|
|
#define P0_13 13
|
|
#define P0_14 14
|
|
#define P0_15 15
|
|
#define P0_16 16
|
|
#define P0_17 17
|
|
#define P0_18 18
|
|
#define P0_19 19
|
|
#define P0_20 20
|
|
#define P0_21 21
|
|
#define P0_22 22
|
|
#define P0_23 23
|
|
#define P0_24 24
|
|
#define P0_25 25
|
|
#define P0_26 26
|
|
#define P0_27 27
|
|
#define P0_28 28
|
|
#define P0_29 29
|
|
#define P0_30 30
|
|
#define P0_31 31
|
|
#define P1_0 32
|
|
#define P1_1 33
|
|
#define P1_2 34
|
|
#define P1_3 35
|
|
#define P1_4 36
|
|
#define P1_5 37
|
|
#define P1_6 38
|
|
#define P1_7 39
|
|
#define P1_8 40
|
|
#define P1_9 41
|
|
#define P1_10 42
|
|
#define P1_11 43
|
|
#define P1_12 44
|
|
#define P1_13 45
|
|
#define P1_14 46
|
|
#define P1_15 47
|
|
#define P1_16 48
|
|
#define P1_17 49
|
|
#define P1_18 50
|
|
#define P1_19 51
|
|
#define P1_20 52
|
|
#define P1_21 53
|
|
#define P1_22 54
|
|
#define P1_23 55
|
|
#define P1_24 56
|
|
#define P1_25 57
|
|
#define P1_26 58
|
|
#define P1_27 59
|
|
#define P1_28 60
|
|
#define P1_29 61
|
|
#define P1_30 62
|
|
#define P1_31 63
|
|
#define NO_PIN 0xFF
|
|
|
|
|
|
|
|
// Function name equates (for normal people)
|
|
#define U0_TXD 0
|
|
#define U0_RXD 1
|
|
#define U0_RTS 2
|
|
#define U0_CTS 3
|
|
|
|
#define U0_SCLK 4
|
|
#define U1_TXD 5
|
|
#define U1_RXD 6
|
|
#define U1_SCLK 7
|
|
|
|
#define SPI0_SCK 8
|
|
#define SPI0_MOSI 9
|
|
#define SPI0_MISO 10
|
|
#define SPI0_SSEL0 11
|
|
|
|
#define SPI0_SSEL1 12
|
|
#define T0_CAP0 13
|
|
#define T0_CAP1 14
|
|
#define T0_CAP2 15
|
|
|
|
#define T0_MAT0 16
|
|
#define T0_MAT1 17
|
|
#define T0_MAT2 18
|
|
#define T0_MAT3 19
|
|
|
|
#define I2C0_SDA 20
|
|
#define I2C0_SCL 21
|
|
#define COMP0_OUT 22
|
|
#define ACOMP 22
|
|
#define CLKOUT 23
|
|
|
|
#define GPIO_INT_BMAT 24
|
|
#define LVLSHFT_IN0 25
|
|
#define LVLSHFT_IN1 26
|
|
#define LVLSHFT_OUT0 27
|
|
|
|
#define LVLSHFT_OUT1 28
|
|
#define I2C1_SDA 29
|
|
#define I2C1_SCL 30
|
|
#define PLU_CLKIN 31
|
|
|
|
#define CAPT_X0 32
|
|
#define CAPT_X1 33
|
|
#define CAPT_X2 34
|
|
#define CAPT_X3 35
|
|
|
|
#define CAPT_X4 36
|
|
#define CAPT_YL 37
|
|
#define CAPT_YH 38
|
|
|
|
#define num_funcs 39
|
|
|
|
|
|
|
|
// Function name equates for the PINASSIGN_4PIN register
|
|
#define min_4pin_func 100
|
|
|
|
#define PLU_IN0 100
|
|
#define PLU_IN1 101
|
|
#define PLU_IN2 102
|
|
#define PLU_IN3 103
|
|
#define PLU_IN4 104
|
|
#define PLU_IN5 105
|
|
#define PLU_OUT0 106
|
|
#define PLU_OUT1 107
|
|
#define PLU_OUT2 108
|
|
#define PLU_OUT3 109
|
|
#define PLU_OUT4 110
|
|
#define PLU_OUT5 111
|
|
#define PLU_OUT6 112
|
|
#define PLU_OUT7 113
|
|
|
|
#define max_4pin_func 113
|
|
|
|
|
|
|
|
// PINENABLE0 register defines
|
|
#define ACMP_I1 (1<<0)
|
|
#define ACMP_I2 (1<<1)
|
|
#define ACMP_I3 (1<<2)
|
|
#define ACMP_I4 (1<<3)
|
|
#define SWCLK (1<<4)
|
|
#define SWDIO (1<<5)
|
|
#define RESETN (1<<6)
|
|
#define CLKIN (1<<7)
|
|
#define WKTCLKIN (1<<8)
|
|
#define VDDCMP (1<<9)
|
|
#define ADC_0 (1<<10)
|
|
#define ADC_1 (1<<11)
|
|
#define ADC_2 (1<<12)
|
|
#define ADC_3 (1<<13)
|
|
#define ADC_4 (1<<14)
|
|
#define ADC_5 (1<<15)
|
|
#define ADC_6 (1<<16)
|
|
#define ADC_7 (1<<17)
|
|
#define ADC_8 (1<<18)
|
|
#define ADC_9 (1<<19)
|
|
#define ADC_10 (1<<20)
|
|
#define ADC_11 (1<<21)
|
|
#define ACMP_I5 (1<<22)
|
|
#define DACOUT0 (1<<23)
|
|
|
|
/**
|
|
* @brief LPC8XX Switch Matrix PLU Movable pins (works for LPC804 with PLU)
|
|
*/
|
|
typedef enum CHIP_SWM_PLU_MOVABLE {
|
|
PLU_INPUT0_PIO0_0 = 0x00 << 0, /*!< PLU_INPUT0 - PIO0_0 */
|
|
PLU_INPUT0_PIO0_8 = 0x01 << 0, /*!< PLU_INPUT0 - PIO0_8 */
|
|
PLU_INPUT0_PIO0_17 = 0x02 << 0, /*!< PLU_INPUT0 - PIO0_17 */
|
|
PLU_INPUT0_NONE = 0x03 << 0, /*!< PLU_INPUT0 - NONE */
|
|
PLU_INPUT1_PIO0_1 = 0x00 << 2, /*!< PLU_INPUT1 - PIO0_1 */
|
|
PLU_INPUT1_PIO0_9 = 0x01 << 2, /*!< PLU_INPUT1 - PIO0_9 */
|
|
PLU_INPUT1_PIO0_18 = 0x02 << 2, /*!< PLU_INPUT1 - PIO0_18 */
|
|
PLU_INPUT1_NONE = 0x03 << 2, /*!< PLU_INPUT1 - NONE */
|
|
PLU_INPUT2_PIO0_2 = 0x00 << 4, /*!< PLU_INPUT2 - PIO0_2 */
|
|
PLU_INPUT2_PIO0_10 = 0x01 << 4, /*!< PLU_INPUT2 - PIO0_10 */
|
|
PLU_INPUT2_PIO0_19 = 0x02 << 4, /*!< PLU_INPUT2 - PIO0_19 */
|
|
PLU_INPUT2_NONE = 0x03 << 4, /*!< PLU_INPUT2 - NONE */
|
|
PLU_INPUT3_PIO0_3 = 0x00 << 6, /*!< PLU_INPUT3 - PIO0_3 */
|
|
PLU_INPUT3_PIO0_11 = 0x01 << 6, /*!< PLU_INPUT3 - PIO0_11 */
|
|
PLU_INPUT3_PIO0_20 = 0x02 << 6, /*!< PLU_INPUT3 - PIO0_20 */
|
|
PLU_INPUT3_NONE = 0x03 << 6, /*!< PLU_INPUT3 - NONE */
|
|
PLU_INPUT4_PIO0_4 = 0x00 << 8, /*!< PLU_INPUT4 - PIO0_4 */
|
|
PLU_INPUT4_PIO0_12 = 0x01 << 8, /*!< PLU_INPUT4 - PIO0_12 */
|
|
PLU_INPUT4_PIO0_21 = 0x02 << 8, /*!< PLU_INPUT4 - PIO0_21 */
|
|
PLU_INPUT4_NONE = 0x03 << 8, /*!< PLU_INPUT4 - NONE */
|
|
PLU_INPUT5_PIO0_5 = 0x00 << 10, /*!< PLU_INPUT5 - PIO0_5 */
|
|
PLU_INPUT5_PIO0_13 = 0x01 << 10, /*!< PLU_INPUT5 - PIO0_13 */
|
|
PLU_INPUT5_PIO0_22 = 0x02 << 10, /*!< PLU_INPUT5 - PIO0_22 */
|
|
PLU_INPUT5_NONE = 0x03 << 10, /*!< PLU_INPUT5 - NONE */
|
|
PLU_OUTPUT0_PIO0_7 = 0x00 << 12, /*!< PLU_OUTPUT0 - PIO0_7 */
|
|
PLU_OUTPUT0_PIO0_14 = 0x01 << 12, /*!< PLU_OUTPUT0 - PIO0_14 */
|
|
PLU_OUTPUT0_PIO0_23 = 0x02 << 12, /*!< PLU_OUTPUT0 - PIO0_23 */
|
|
PLU_OUTPUT0_NONE = 0x03 << 12, /*!< PLU_OUTPUT0 - NONE */
|
|
PLU_OUTPUT1_PIO0_8 = 0x00 << 14, /*!< PLU_OUTPUT1 - PIO0_8 */
|
|
PLU_OUTPUT1_PIO0_15 = 0x01 << 14, /*!< PLU_OUTPUT1 - PIO0_15 */
|
|
PLU_OUTPUT1_PIO0_24 = 0x02 << 14, /*!< PLU_OUTPUT1 - PIO0_24 */
|
|
PLU_OUTPUT1_NONE = 0x03 << 14, /*!< PLU_OUTPUT1 - NONE */
|
|
PLU_OUTPUT2_PIO0_9 = 0x00 << 16, /*!< PLU_OUTPUT2 - PIO0_9 */
|
|
PLU_OUTPUT2_PIO0_16 = 0x01 << 16, /*!< PLU_OUTPUT2 - PIO0_16 */
|
|
PLU_OUTPUT2_PIO0_25 = 0x02 << 16, /*!< PLU_OUTPUT2 - PIO0_25 */
|
|
PLU_OUTPUT2_NONE = 0x03 << 16, /*!< PLU_OUTPUT2 - NONE */
|
|
PLU_OUTPUT3_PIO0_10 = 0x00 << 18, /*!< PLU_OUTPUT3 - PIO0_10 */
|
|
PLU_OUTPUT3_PIO0_17 = 0x01 << 18, /*!< PLU_OUTPUT3 - PIO0_17 */
|
|
PLU_OUTPUT3_PIO0_26 = 0x02 << 18, /*!< PLU_OUTPUT3 - PIO0_26 */
|
|
PLU_OUTPUT3_NONE = 0x03 << 18, /*!< PLU_OUTPUT3 - NONE */
|
|
PLU_OUTPUT4_PIO0_11 = 0x00 << 20, /*!< PLU_OUTPUT4 - PIO0_11 */
|
|
PLU_OUTPUT4_PIO0_18 = 0x01 << 20, /*!< PLU_OUTPUT4 - PIO0_18 */
|
|
PLU_OUTPUT4_PIO0_27 = 0x02 << 20, /*!< PLU_OUTPUT4 - PIO0_27 */
|
|
PLU_OUTPUT4_NONE = 0x03 << 20, /*!< PLU_OUTPUT4 - NONE */
|
|
PLU_OUTPUT5_PIO0_12 = 0x00 << 22, /*!< PLU_OUTPUT5 - PIO0_12 */
|
|
PLU_OUTPUT5_PIO0_19 = 0x01 << 22, /*!< PLU_OUTPUT5 - PIO0_19 */
|
|
PLU_OUTPUT5_PIO0_28 = 0x02 << 22, /*!< PLU_OUTPUT5 - PIO0_28 */
|
|
PLU_OUTPUT5_NONE = 0x03 << 22, /*!< PLU_OUTPUT5 - NONE */
|
|
PLU_OUTPUT6_PIO0_13 = 0x00 << 24, /*!< PLU_OUTPUT6 - PIO0_13 */
|
|
PLU_OUTPUT6_PIO0_20 = 0x01 << 24, /*!< PLU_OUTPUT6 - PIO0_20 */
|
|
PLU_OUTPUT6_PIO0_29 = 0x02 << 24, /*!< PLU_OUTPUT6 - PIO0_29 */
|
|
PLU_OUTPUT6_NONE = 0x03 << 24, /*!< PLU_OUTPUT6 - NONE */
|
|
PLU_OUTPUT7_PIO0_14 = 0x00 << 26, /*!< PLU_OUTPUT7 - PIO0_14 */
|
|
PLU_OUTPUT7_PIO0_21 = 0x01 << 26, /*!< PLU_OUTPUT7 - PIO0_21 */
|
|
PLU_OUTPUT7_PIO0_30 = 0x02 << 26, /*!< PLU_OUTPUT7 - PIO0_30 */
|
|
PLU_OUTPUT7_NONE = 0x03 << 26, /*!< PLU_OUTPUT7 - NONE */
|
|
} CHIP_SWM_PLU_MOVABLE_T;
|
|
|
|
|
|
// Function prototypes
|
|
void ConfigSWM(uint32_t func, uint32_t port_pin);
|
|
void EnableFixedPinFunc(uint32_t func);
|
|
void DisableFixedPinFunc(uint32_t func);
|
|
|
|
#endif /* LPC8XX_SWM_H_ */
|