46 #ifndef ti_drivers_PINCC26XX__include 47 #define ti_drivers_PINCC26XX__include 55 #include <ti/drivers/dpl/HwiP.h> 59 #include <ti/devices/DeviceFamily.h> 60 #include DeviceFamily_constructPath(driverlib/ioc.h) 61 #include DeviceFamily_constructPath(driverlib/gpio.h) 66 #if defined(__IAR_SYSTEMS_ICC__) || defined(DOXYGEN) 67 #include <intrinsics.h> 70 __STATIC_INLINE uint32_t
PIN_ctz(uint32_t x) {
71 #if defined(codered) || defined(gcc) || defined(sourcerygxx) || defined(__GNUC__) 72 return __builtin_ctz(x);
73 #elif defined(__IAR_SYSTEMS_ICC__) || defined(DOXYGEN) 74 return __CLZ(__RBIT(x));
75 #elif defined(rvmdk) || defined(__ARMCC_VERSION) 76 return __clz(__rbit(x));
77 #elif defined(__TI_COMPILER_VERSION__) 78 return __clz(__rbit(x));
80 #error "Unsupported compiler used" 88 #ifdef PIN_DISABLE_RUNTIME_CHECKS 102 #define PINCC26XX_INPUT_EN (1 << 29) 103 #define PINCC26XX_HYSTERESIS (1 << 30) 104 #define PINCC26XX_NOPULL (0x3 << 13) 105 #define PINCC26XX_PULLUP (0x2 << 13) 106 #define PINCC26XX_PULLDOWN (0x1 << 13) 107 #define PINCC26XX_BM_INPUT_EN (0x01 << 29) 108 #define PINCC26XX_BM_HYSTERESIS (0x01 << 30) 109 #define PINCC26XX_BM_PULLING (0x03 << 13) 110 #define PINCC26XX_BM_INPUT_MODE (PINCC26XX_BM_INPUT_EN | PINCC26XX_BM_HYSTERESIS | \ 112 PINCC26XX_BM_PULLING) 114 #define PINCC26XX_GPIO_OUTPUT_EN (1 << 23) 115 #define PINCC26XX_GPIO_LOW (0 << 22) 116 #define PINCC26XX_GPIO_HIGH (1 << 22) 117 #define PINCC26XX_PUSHPULL (0x0 << 25) 118 #define PINCC26XX_OPENDRAIN (0x2 << 25) 119 #define PINCC26XX_OPENSOURCE (0x3 << 25) 120 #define PINCC26XX_SLEWCTRL (1 << 12) 121 #define PINCC26XX_DRVSTR_MIN (0x0 << 8) 122 #define PINCC26XX_DRVSTR_MED (0x4 << 8) 123 #define PINCC26XX_DRVSTR_MAX (0x8 << 8) 124 #define PINCC26XX_BM_GPIO_OUTPUT_EN (1 << 23) 125 #define PINCC26XX_BM_GPIO_OUTPUT_VAL (1 << 22) 126 #define PINCC26XX_BM_OUTPUT_BUF (3 << 25) 127 #define PINCC26XX_BM_SLEWCTRL (1 << 12) 128 #define PINCC26XX_BM_DRVSTR (0xF << 8) 129 #define PINCC26XX_BM_GPIO_OUTPUT_MODE (PINCC26XX_BM_GPIO_OUTPUT_EN | PINCC26XX_BM_GPIO_OUTPUT_VAL) 131 #define PINCC26XX_BM_OUTPUT_MODE (PINCC26XX_BM_GPIO_OUTPUT_MODE | PINCC26XX_BM_OUTPUT_BUF | \ 133 PINCC26XX_BM_SLEWCTRL | PINCC26XX_BM_DRVSTR) 135 #define PINCC26XX_INV_INOUT (1 << 24) 136 #define PINCC26XX_IRQ_DIS (0x0 << 16) 137 #define PINCC26XX_IRQ_NEGEDGE (0x5 << 16) 138 #define PINCC26XX_IRQ_POSEDGE (0x6 << 16) 139 #define PINCC26XX_IRQ_BOTHEDGES (0x7 << 16) 140 #define PINCC26XX_BM_INV_INOUT (1 << 24) 141 #define PINCC26XX_BM_IRQ (0x7 << 16) 143 #define PINCC26XX_NO_WAKEUP (0 << 27) 144 #define PINCC26XX_WAKEUP_POSEDGE (3 << 27) 145 #define PINCC26XX_WAKEUP_NEGEDGE (2 << 27) 146 #define PINCC26XX_BM_WAKEUP (3 << 27) 148 #define PINCC26XX_BM_IOCFG (PINCC26XX_BM_INPUT_MODE|PINCC26XX_BM_OUTPUT_BUF | \ 150 PINCC26XX_BM_SLEWCTRL | PINCC26XX_BM_DRVSTR | \ 151 PINCC26XX_BM_INV_INOUT | PINCC26XX_BM_IRQ | PINCC26XX_BM_WAKEUP) 152 #define PINCC26XX_BM_ALL (PINCC26XX_BM_IOCFG | PINCC26XX_BM_GPIO_OUTPUT_MODE) 166 #define PINCC26XX_DIO0 0 167 #define PINCC26XX_DIO1 1 168 #define PINCC26XX_DIO2 2 169 #define PINCC26XX_DIO3 3 170 #define PINCC26XX_DIO4 4 171 #define PINCC26XX_DIO5 5 172 #define PINCC26XX_DIO6 6 173 #define PINCC26XX_DIO7 7 174 #define PINCC26XX_DIO8 8 175 #define PINCC26XX_DIO9 9 176 #define PINCC26XX_DIO10 10 177 #define PINCC26XX_DIO11 11 178 #define PINCC26XX_DIO12 12 179 #define PINCC26XX_DIO13 13 180 #define PINCC26XX_DIO14 14 181 #define PINCC26XX_DIO15 15 182 #define PINCC26XX_DIO16 16 183 #define PINCC26XX_DIO17 17 184 #define PINCC26XX_DIO18 18 185 #define PINCC26XX_DIO19 19 186 #define PINCC26XX_DIO20 20 187 #define PINCC26XX_DIO21 21 188 #define PINCC26XX_DIO22 22 189 #define PINCC26XX_DIO23 23 190 #define PINCC26XX_DIO24 24 191 #define PINCC26XX_DIO25 25 192 #define PINCC26XX_DIO26 26 193 #define PINCC26XX_DIO27 27 194 #define PINCC26XX_DIO28 28 195 #define PINCC26XX_DIO29 29 196 #define PINCC26XX_DIO30 30 197 #define PINCC26XX_DIO31 31 203 return (HWREG(GPIO_BASE + GPIO_O_DIN31_0) >> pinId) & 1;
212 uint32_t key = HwiP_disable();
213 HWREG(GPIO_BASE + GPIO_O_DOE31_0) =
214 ((HWREG(GPIO_BASE + GPIO_O_DOE31_0) & ~(1 << pinId)) | (outputEnable << pinId));
224 HWREGB(GPIO_BASE + GPIO_O_DOUT3_0 + pinId) = (val) ? 1 : 0;
230 return (HWREG(GPIO_BASE + GPIO_O_DOUT31_0) >> pinId) & 1;
235 HWREG(GPIO_NONBUF_BASE + GPIO_O_EVFLAGS31_0) = (1 << pinId);
242 return HWREG(GPIO_BASE + GPIO_O_DIN31_0);
249 return HWREG(GPIO_BASE + GPIO_O_DOUT31_0);
259 HWREG(GPIO_BASE + GPIO_O_DOUTTGL31_0) =
260 (HWREG(GPIO_BASE + GPIO_O_DOUT31_0) ^ outputValueMask) & handle->
portMask;
270 uint32_t key = HwiP_disable();
271 HWREG(GPIO_BASE + GPIO_O_DOE31_0) =
272 (HWREG(GPIO_BASE + GPIO_O_DOE31_0) & (~handle->
portMask)) | (outputEnableMask & handle->
portMask);
394 #define PINCC26XX_MUX_GPIO IOC_PORT_GPIO // Default general purpose IO usage 395 #define PINCC26XX_MUX_AON_CLK32K IOC_PORT_AON_CLK32K // AON External 32kHz clock 396 #define PINCC26XX_MUX_AUX_IO IOC_PORT_AUX_IO // AUX IO Pin 397 #define PINCC26XX_MUX_MCU_SSI0_RX IOC_PORT_MCU_SSI0_RX // MCU SSI0 Receive Pin 398 #define PINCC26XX_MUX_MCU_SSI0_TX IOC_PORT_MCU_SSI0_TX // MCU SSI0 Transmit Pin 399 #define PINCC26XX_MUX_MCU_SSI0_FSS IOC_PORT_MCU_SSI0_FSS // MCU SSI0 FSS Pin 400 #define PINCC26XX_MUX_MCU_SSI0_CLK IOC_PORT_MCU_SSI0_CLK // MCU SSI0 Clock Pin 401 #define PINCC26XX_MUX_MCU_I2C_MSSDA IOC_PORT_MCU_I2C_MSSDA // MCU I2C Data Pin 402 #define PINCC26XX_MUX_MCU_I2C_MSSCL IOC_PORT_MCU_I2C_MSSCL // MCU I2C Clock Pin 403 #define PINCC26XX_MUX_MCU_UART0_RX IOC_PORT_MCU_UART0_RX // MCU UART0 Receive Pin 404 #define PINCC26XX_MUX_MCU_UART0_TX IOC_PORT_MCU_UART0_TX // MCU UART0 Transmit Pin 405 #define PINCC26XX_MUX_MCU_UART0_CTS IOC_PORT_MCU_UART0_CTS // MCU UART0 Clear To Send Pin 406 #define PINCC26XX_MUX_MCU_UART0_RTS IOC_PORT_MCU_UART0_RTS // MCU UART0 Request To Send Pin 407 #define PINCC26XX_MUX_MCU_PORT_EV_0 IOC_PORT_MCU_PORT_EVENT0 // MCU power event 0 408 #define PINCC26XX_MUX_MCU_PORT_EV_1 IOC_PORT_MCU_PORT_EVENT1 // MCU power event 1 409 #define PINCC26XX_MUX_MCU_PORT_EV_2 IOC_PORT_MCU_PORT_EVENT2 // MCU power event 2 410 #define PINCC26XX_MUX_MCU_PORT_EV_3 IOC_PORT_MCU_PORT_EVENT3 // MCU power event 3 411 #define PINCC26XX_MUX_MCU_PORT_EV_4 IOC_PORT_MCU_PORT_EVENT4 // MCU power event 4 412 #define PINCC26XX_MUX_MCU_PORT_EV_5 IOC_PORT_MCU_PORT_EVENT5 // MCU power event 5 413 #define PINCC26XX_MUX_MCU_PORT_EV_6 IOC_PORT_MCU_PORT_EVENT6 // MCU power event 6 414 #define PINCC26XX_MUX_MCU_PORT_EV_7 IOC_PORT_MCU_PORT_EVENT7 // MCU power event 7 415 #define PINCC26XX_MUX_SWV IOC_PORT_MCU_SWV // MCU serial wire viewer 416 #define PINCC26XX_MUX_MCU_SSI1_RX IOC_PORT_MCU_SSI1_RX // MCU SSI1 Receive Pin 417 #define PINCC26XX_MUX_MCU_SSI1_TX IOC_PORT_MCU_SSI1_TX // MCU SSI1 Transmit Pin 418 #define PINCC26XX_MUX_MCU_SSI1_FSS IOC_PORT_MCU_SSI1_FSS // MCU SSI1 FSS Pin 419 #define PINCC26XX_MUX_MCU_SSI1_CLK IOC_PORT_MCU_SSI1_CLK // MCU SSI1 Clock Pin 420 #define PINCC26XX_MUX_MCU_I2S_AD0 IOC_PORT_MCU_I2S_AD0 // MCU I2S Data Pin 0 421 #define PINCC26XX_MUX_MCU_I2S_AD1 IOC_PORT_MCU_I2S_AD1 // MCU I2S Data Pin 1 422 #define PINCC26XX_MUX_MCU_I2S_WCLK IOC_PORT_MCU_I2S_WCLK // MCU I2S Frame/Word Clock 423 #define PINCC26XX_MUX_MCU_I2S_BCLK IOC_PORT_MCU_I2S_BCLK // MCU I2S Bit Clock 424 #define PINCC26XX_MUX_MCU_I2S_MCLK IOC_PORT_MCU_I2S_MCLK // MCU I2S Master clock 2 425 #define PINCC26XX_MUX_RFC_TRC IOC_PORT_RFC_TRC // RF Core Tracer 426 #define PINCC26XX_MUX_RFC_GPO0 IOC_PORT_RFC_GPO0 // RC Core Data Out Pin 0 427 #define PINCC26XX_MUX_RFC_GPO1 IOC_PORT_RFC_GPO1 // RC Core Data Out Pin 1 428 #define PINCC26XX_MUX_RFC_GPO2 IOC_PORT_RFC_GPO2 // RC Core Data Out Pin 2 429 #define PINCC26XX_MUX_RFC_GPO3 IOC_PORT_RFC_GPO3 // RC Core Data Out Pin 3 430 #define PINCC26XX_MUX_RFC_GPI0 IOC_PORT_RFC_GPI0 // RC Core Data In Pin 0 431 #define PINCC26XX_MUX_RFC_GPI1 IOC_PORT_RFC_GPI1 // RC Core Data In Pin 1 432 #define PINCC26XX_MUX_RFC_SMI_DL_OUT IOC_PORT_RFC_SMI_DL_OUT // RF Core SMI Data Link Out 433 #define PINCC26XX_MUX_RFC_SMI_DL_IN IOC_PORT_RFC_SMI_DL_IN // RF Core SMI Data Link in 434 #define PINCC26XX_MUX_RFC_SMI_CL_OUT IOC_PORT_RFC_SMI_CL_OUT // RF Core SMI Command Link Out 435 #define PINCC26XX_MUX_RFC_SMI_CL_IN IOC_PORT_RFC_SMI_CL_IN // RF Core SMI Command Link In uint8_t PIN_Id
Pin identifier data type.
Definition: PIN.h:577
__STATIC_INLINE uint32_t PINCC26XX_getOutputValue(PIN_Id pinId)
Fast/efficient version of PIN_getOutputValue()
Definition: PINCC26XX.h:227
__STATIC_INLINE uint32_t PINCC26XX_getInputValue(PIN_Id pinId)
Fast/efficient version of PIN_getInputValue()
Definition: PINCC26XX.h:200
__STATIC_INLINE void PINCC26XX_setOutputValue(PIN_Id pinId, uint32_t val)
Definition: PINCC26XX.h:221
int32_t PINCC26XX_getMux(PIN_Id pinId)
Get device-specific pin mapping to GPIO, HW peripheral or HW signal.
__STATIC_INLINE void PINCC26XX_setPortOutputValue(PIN_Handle handle, uint32_t outputValueMask)
Definition: PINCC26XX.h:255
PINCC26XX Hardware attributes.
Definition: PINCC26XX.h:362
uint8_t intPriority
SPI CC26XXDMA Peripheral's interrupt priority.
Definition: PINCC26XX.h:376
uint32_t portMask
Bitmask for pins allocated in port.
Definition: PIN.h:709
PIN_Status PINCC26XX_setMux(PIN_Handle handle, PIN_Id pinId, int32_t nMux)
Connect pin to HW peripheral, signal or to GPIO.
__STATIC_INLINE void PINCC26XX_setPortOutputEnable(PIN_Handle handle, uint32_t outputEnableMask)
Definition: PINCC26XX.h:266
uint32_t PINCC26XX_getPinCount()
Get device-specific count of how many pins are available on this device and package.
__STATIC_INLINE void PINCC26XX_clrPendInterrupt(PIN_Id pinId)
Definition: PINCC26XX.h:232
PIN_Config PINCC26XX_getConfig(PIN_Id pinId)
Returns CC26xx device-specific pin configuration.
__STATIC_INLINE uint32_t PIN_ctz(uint32_t x)
Definition: PINCC26XX.h:70
__STATIC_INLINE void PINCC26XX_setOutputEnable(PIN_Id pinId, bool outputEnable)
Definition: PINCC26XX.h:209
underlying data structure for type PIN_State
Definition: PIN.h:707
__STATIC_INLINE uint32_t PINCC26XX_getPortOutputValue(PIN_Handle handle)
Fast/efficient version of PIN_getPortOutputValue()
Definition: PINCC26XX.h:245
uint32_t swiPriority
SPI SWI priority. The higher the number, the higher the priority. The minimum is 0 and the maximum is...
Definition: PINCC26XX.h:382
__STATIC_INLINE uint32_t PINCC26XX_getPortInputValue(PIN_Handle handle)
Fast/efficient version of PIN_getPortInputValue()
Definition: PINCC26XX.h:238
PIN_Status
Return value for many functions in the PIN driver interface.
Definition: PIN.h:715
struct PINCC26XX_HWAttrs PINCC26XX_HWAttrs
PINCC26XX Hardware attributes.
PIN_Status PINCC26XX_setWakeup(const PIN_Config aPinCfg[])
Configure wakeup (from shutdown) on pins.
uint32_t PIN_Config
Pin configuration data type with embedded pin identifier.
Definition: PIN.h:597
Generic PIN & GPIO driver.