Functions and definitions specific to the breakout board.

Macros

#define PWRUP_CFG_SC1_TXD _GPIO_P_CFGL_Px0_OUT_ALT
Give GPIO SC1 TXD and nRTS configurations friendly names.
#define PWRDN_OUT_SC1_nRTS 1

Custom Baud Rate Definitions

Application Framework NCP Configuration Board Header

This board header (dev0680) is not supported in framework NCP applications. NCP applications must use either the dev0680spi or dev0680uart board headers when creating custom NCP applications through the framework.

The following define is used with defining a custom baud rate for the UART. This define provides a simple hook into the definition of the baud rates used with the UART. The baudSettings[] array in uart.c links the BAUD_* defines with the actual register values needed for operating the UART. The array baudSettings[] can be edited directly for a custom baud rate or another entry (the register settings) can be provided here with this define.

#define EMBER_SERIAL_BAUD_CUSTOM 13
This define is the register setting for generating a baud of.

LED Definitions

The following are used to aid in the abstraction with the LED connections. The microcontroller-specific sources use these definitions so they are able to work across a variety of boards which could have different connections. The names and ports/pins used below are intended to match with a schematic of the system to provide the abstraction.

The HalBoardLedPins enum values should always be used when manipulating the state of LEDs, as they directly refer to the GPIOs to which the LEDs are connected.

Note: LEDs 0 and 1 are on the RCM.

Note: LED 2 is on the breakout board (dev0680).

Note: LED 3 simply redirects to LED 2.

enum HalBoardLedPins {
BOARDLED0 = PORTA_PIN(6),
BOARDLED1 = PORTA_PIN(7),
BOARDLED2 = PORTC_PIN(5),
BOARDLED3 = BOARDLED2,
BOARD_ACTIVITY_LED = BOARDLED0,
BOARD_HEARTBEAT_LED = BOARDLED1,
BOARDLED0 = PORTA_PIN(6),
BOARDLED1 = PORTA_PIN(7),
BOARDLED2 = PORTC_PIN(5),
BOARDLED3 = BOARDLED2,
BOARD_ACTIVITY_LED = BOARDLED0,
BOARD_HEARTBEAT_LED = BOARDLED1
}
Assign each GPIO with an LED connected to a convenient name. BOARD_ACTIVITY_LED and BOARD_HEARTBEAT_LED provide a further layer of abstraction on top of the 3 LEDs for verbose coding.

Button Definitions

The following are used to aid in the abstraction with the Button connections. The microcontroller-specific sources use these definitions so they are able to work across a variety of boards which could have different connections. The names and ports/pins used below are intended to match with a schematic of the system to provide the abstraction.

The BUTTONn macros should always be used with manipulating the buttons as they directly refer to the GPIOs to which the buttons are connected.

Note
The GPIO number must match the IRQ letter
#define BUTTON0 PORTB_PIN(6)
The actual GPIO BUTTON0 is connected to. This define should be used whenever referencing BUTTON0.
#define BUTTON0_IN (GPIO->P[1].IN)
The GPIO input register for BUTTON0.
#define BUTTON0_SEL ()   do {} while (0)
Point the proper IRQ at the desired pin for BUTTON0.
#define BUTTON0_ISR halIrqBIsr
The interrupt service routine for BUTTON0.
#define BUTTON0_INTCFG (EVENT_GPIO->CFGB)
The interrupt configuration register for BUTTON0.
#define BUTTON0_INT_EN_IRQN IRQB_IRQn
The interrupt enable bit for BUTTON0.
#define BUTTON0_INT_EN_BIT BIT32 ( BUTTON0_INT_EN_IRQN )
The actual GPIO BUTTON0 is connected to. This define should be used whenever referencing BUTTON0.
#define BUTTON0_FLAG_BIT EVENT_GPIO_FLAG_IRQB
The interrupt flag bit for BUTTON0.
#define BUTTON0_MISS_BIT EVENT_MISS_MISS_IRQB
The missed interrupt bit for BUTTON0.
#define BUTTON1 PORTC_PIN(6)
The actual GPIO BUTTON1 is connected to. This define should be used whenever referencing BUTTON1, such as controlling if pieces are compiled in. Remember there may be other things that might want to use IRQC.
#define BUTTON1_IN (GPIO->P[2].IN)
The GPIO input register for BUTTON1.
#define BUTTON1_SEL ()   do { GPIO->IRQCSEL = PORTC_PIN(6); } while (0)
Point the proper IRQ at the desired pin for BUTTON1. Remember there may be other things that might want to use IRQC.
#define BUTTON1_ISR halIrqCIsr
The interrupt service routine for BUTTON1. Remember there may be other things that might want to use IRQC.
#define BUTTON1_INTCFG (EVENT_GPIO->CFGC)
The interrupt configuration register for BUTTON1.
#define BUTTON1_INT_EN_IRQN IRQC_IRQn
The interrupt enable bit for BUTTON1.
#define BUTTON1_INT_EN_BIT BIT32 ( BUTTON1_INT_EN_IRQN )
The actual GPIO BUTTON0 is connected to. This define should be used whenever referencing BUTTON0.
#define BUTTON1_FLAG_BIT EVENT_GPIO_FLAG_IRQC
The interrupt flag bit for BUTTON1.
#define BUTTON1_MISS_BIT EVENT_MISS_MISS_IRQC
The missed interrupt bit for BUTTON1.

USB Power State

Define if the USB is self powered or bus powered since the configuration descriptor needs to report to the host the powered state.

Note
VBUS Monitoring is required for USB to function when the EM358 device is configured as self-powered.
#define USB_SELFPWRD_STATE (1)
The USB power state.

USB Remote Wakeup Enable

If the USB device needs to awake the host from suspend, then it needs to have remote wakeup enable.

Note
The host can deny remote wakeup, keeping the device in suspend.

If the device has remote wakeup enabled the configuration descriptor needs to report this fact to the host. Additionally, the USB core in the chip needs to be directly told. Set the define USB_REMOTEWKUPEN_STATE to 0 if remote wake is disabled or 1 if enabled.

#define USB_REMOTEWKUPEN_STATE (1)
USB Remote Wakeup Enable.

USB Maximum Power Consumption

The USB device must report the maximum power it will draw from the bus. This is done via the bMaxPower parameter in the Configuration Descriptor reported to the host. The value used is in units of 2mA.

Self-powered devices are low power devices and must draw less than 100mA.

Systems that have components such as a FEM are likely to consume more than 100mA and are considered high power and therefore must be bus-powered.

#define USB_MAX_POWER (50)
USB Max Power parameter (bMaxPower) the driver will report to the host in the Configuration Descriptor.

USB Enumeration Control

The following are used to aid in the abstraction of which GPIO is used for controlloing the pull-up resistor for enumeation.

The hardware setup connects the D+ signal to a GPIO via a 1.5kOhm pull-up resistor. Any GPIO can be used since it just needs to be a simple push-pull output configuration.

#define ENUMCTRL PORTA_PIN(2)
The actual GPIO ENUMCTRL is connected to. The GPIO only needs to be a simple push-pull output or input.
#define ENUMCTRL_SETCFG (cfg)
Set the GPIO's configuration to the provided state. The two states used are GPIOCFG_OUT when the device is enumerated and GPIOCFG_IN when the device is not enumerated.
#define ENUMCTRL_SET ()   do { GPIO->P[0].SET = GPIO_P_SET_Px2; } while (0)
When the GPIO used for enumeration is configured as push-pull, this macro makes it easy to set the output state high.
#define ENUMCTRL_CLR ()   do { GPIO->P[0].CLR = GPIO_P_SET_Px2; } while (0)
When the GPIO used for enumeration is configured as push-pull, this macro makes it easy to clear the output state low.

USB VBUS Monitoring Support

Note
VBUS Monitoring is required for USB to function when the EM358 device is configured as self-powered.

The following are used to aid in the abstraction of which GPIO and IRQ is used for VBUS Monitoring.

Remember that IRQA and IRQB are fixed to GPIO PB0 and PB6 respectively while IRQC and IRQD can be assigned to any GPIO. Since USB's D- and D+ data pins are fixed to PA0 and PA1 respectively, SC2 can't be used so it makes sense to allocate PA2 for enumeration control and PA3 for VBUS monitoring. Therefore, using PA3 for VBUS monitoring requires IRQC or IRQD.

The driver will only try to use VBUSMON functionality if USB_SELFPWRD_STATE is set to 1.

#define VBUSMON GPIO_P_IN_Px3
The actual GPIO VBUSMON is connected to. Remember that other pieces might want to use PA3.
#define VBUSMON_IN (GPIO->P[0].IN)
The GPIO input register for VBUSMON.
#define VBUSMON_SETCFG ()
The GPIO configuration needed for VBUSMON. The configuration needs to be a simple input that will monitor for edge tansitions.
#define VBUSMON_SEL ()   do { GPIO->IRQDSEL = PORTA_PIN(3); } while (0)
Point the proper IRQ at the desired pin for VBUSMON. Remember that other pieces that might want to use IRQC.
#define VBUSMON_ISR halIrqDIsr
The interrupt service routine for VBUSMON. Remember that other pieces that might want to use IRQC.
#define VBUSMON_INTCFG (EVENT_GPIO->CFGD)
The interrupt configuration register for VBUSMON.
#define VBUSMON_INT_EN_IRQN IRQD_IRQn
The interrupt enable bit for VBUSMON.
#define VBUSMON_INT_EN_BIT BIT32 ( VBUSMON_INT_EN_IRQN )
The actual GPIO VBUSMON is connected to. Remember that other pieces might want to use PA3.
#define VBUSMON_FLAG_BIT EVENT_GPIO_FLAG_IRQD
The interrupt flag bit for VBUSMON.
#define VBUSMON_MISS_BIT EVENT_MISS_MISS_IRQD
The missed interrupt bit for VBUSMON.

Radio HoldOff Configuration Definitions

This define does not equate to anything. It is used as a trigger to enable Radio HoldOff support.

The following are used to aid in the abstraction with Radio HoldOff (RHO). The microcontroller-specific sources use these definitions so they are able to work across a variety of boards which could have different connections. The names and ports/pins used below are intended to match with a schematic of the system to provide the abstraction.

The Radio HoldOff input GPIO is abstracted like BUTTON0/1.

#define RHO_ASSERTED 1
The actual GPIO used to control Radio HoldOff.
#define RHO_CFG (GPIO->P[0].CFGH)
The GPIO configuration register for Radio HoldOff.
#define RHO_IN (GPIO->P[0].IN)
The GPIO input register for Radio HoldOff.
#define RHO_OUT (GPIO->P[0].OUT)
The GPIO output register for Radio HoldOff.
#define RHO_SEL ()   do { GPIO->IRQDSEL = RHO_GPIO ; } while (0)
Point the proper IRQ at the desired pin for Radio HoldOff. Remember there may be other things that might want to use this IRQ.
#define RHO_ISR halIrqDIsr
The interrupt service routine for Radio HoldOff. Remember there may be other things that might want to use this IRQ.
#define RHO_INTCFG (EVENT_GPIO->CFGD)
The interrupt configuration register for Radio HoldOff.
#define RHO_INT_EN_IRQN IRQD_IRQn
The interrupt enable bit for Radio HoldOff.
#define RHO_INT_EN_BIT BIT32 ( RHO_INT_EN_IRQN )
The actual GPIO used to control Radio HoldOff.
#define RHO_FLAG_BIT EVENT_GPIO_FLAG_IRQD
The interrupt flag bit for Radio HoldOff.
#define RHO_MISS_BIT EVENT_MISS_MISS_IRQD
The missed interrupt bit for Radio HoldOff.
#define PWRUP_CFG_DFL_RHO_FOR_RHO _GPIO_P_CFGL_Px0_IN_PUD
Configuration of GPIO for Radio HoldOff operation.
#define PWRUP_OUT_DFL_RHO_FOR_RHO 0 /* Deassert */
The actual GPIO used to control Radio HoldOff.
#define PWRDN_CFG_DFL_RHO_FOR_RHO _GPIO_P_CFGL_Px0_IN_PUD
The actual GPIO used to control Radio HoldOff.
#define PWRDN_OUT_DFL_RHO_FOR_RHO 0 /* Deassert */
The actual GPIO used to control Radio HoldOff.
#define PWRUP_CFG_DFL_RHO_FOR_DFL _GPIO_P_CFGL_Px0_OUT
Configuration of GPIO for default behavior.
#define PWRUP_OUT_DFL_RHO_FOR_DFL 1 /* LED default off */
The actual GPIO used to control Radio HoldOff.
#define PWRDN_CFG_DFL_RHO_FOR_DFL _GPIO_P_CFGL_Px0_OUT
The actual GPIO used to control Radio HoldOff.
#define PWRDN_OUT_DFL_RHO_FOR_DFL 1 /* LED off */
The actual GPIO used to control Radio HoldOff.
#define PWRUP_CFG_DFL_RHO PWRUP_CFG_DFL_RHO_FOR_DFL
The following definitions are helpers for managing Radio HoldOff and should not be modified.
#define PWRUP_OUT_DFL_RHO PWRUP_OUT_DFL_RHO_FOR_DFL
The actual GPIO used to control Radio HoldOff.
#define PWRDN_CFG_DFL_RHO PWRDN_CFG_DFL_RHO_FOR_DFL
The actual GPIO used to control Radio HoldOff.
#define PWRDN_OUT_DFL_RHO PWRDN_OUT_DFL_RHO_FOR_DFL
The actual GPIO used to control Radio HoldOff.
#define halInternalInitRadioHoldOff ()   /* no-op */
The actual GPIO used to control Radio HoldOff.

Temperature sensor ADC channel

Define the analog input channel connected to the LM-20 temperature sensor. The scale factor compensates for different platform input ranges. PB5/ADC0 must be an analog input. PC7 must be an output and set to a high level to power the sensor.

#define TEMP_SENSOR_ADC_CHANNEL ADC_SOURCE_ADC0_VREF2
The analog input channel to use for the temperature sensor.
#define TEMP_SENSOR_SCALE_FACTOR 1
The scale factor to compensate for different input ranges.

Packet Trace

When PACKET_TRACE is defined, ::GPIO_PACFGH will automatically be setup by halInit() to enable Packet Trace support on PA4 and PA5, in addition to the configuration specified below.

Note
This define will override any settings for PA4 and PA5.
#define PACKET_TRACE
This define does not equate to anything. It is used as a trigger to enable Packet Trace support on the breakout board (dev0680).

ENABLE_OSC32K

When ENABLE_OSC32K is defined, halInit() will configure system timekeeping to utilize the external 32.768 kHz crystal oscillator rather than the internal 1 kHz RC oscillator.

Note
ENABLE_OSC32K is mutually exclusive with ENABLE_ALT_FUNCTION_NTX_ACTIVE since they define conflicting usage of GPIO PC6.

On initial powerup the 32.768 kHz crystal oscillator will take a little while to start stable oscillation. This only happens on initial powerup, not on wake-from-sleep, since the crystal usually stays running in deep sleep mode.

When ENABLE_OSC32K is defined the crystal oscillator is started as part of halInit() . After the crystal is started we delay for OSC32K_STARTUP_DELAY_MS (time in milliseconds). This delay allows the crystal oscillator to stabilize before we start using it for system timing.

If you set OSC32K_STARTUP_DELAY_MS to less than the crystal's startup time:

  • The system timer won't produce a reliable one millisecond tick before the crystal is stable.
  • You may see some number of ticks of unknown period occur before the crystal is stable.
  • halInit() will complete and application code will begin running, but any events based on the system timer will not be accurate until the crystal is stable.
  • An unstable system timer will only affect the APIs in system-timer.h .

Typical 32.768 kHz crystals measured by Ember take about 400 milliseconds to stabilize. Be sure to characterize your particular crystal's stabilization time since crystal behavior can vary.

#define OSC32K_STARTUP_DELAY_MS (0)

Packet Trace Configuration Defines

Provide the proper set of pin configuration for when the Packet Trace is enabled (look above for the define which enables it). When Packet Trace is not enabled, leave the two PTI pins in their default configuration. If Packet Trace is not being used, feel free to set the pin configurations as desired. The config shown here is simply the Power On Reset defaults.

#define PWRUP_CFG_PTI_EN _GPIO_P_CFGL_Px0_OUT_ALT
Give the packet trace configuration a friendly name.
#define PWRUP_OUT_PTI_EN 0
Give the packet trace configuration a friendly name.
#define PWRDN_CFG_PTI_EN _GPIO_P_CFGL_Px0_IN_PUD
Give the packet trace configuration a friendly name.
#define PWRDN_OUT_PTI_EN 0
Give the packet trace configuration a friendly name.
#define PWRUP_CFG_PTI_DATA _GPIO_P_CFGL_Px0_OUT_ALT
Give the packet trace configuration a friendly name.
#define PWRUP_OUT_PTI_DATA 1
Give the packet trace configuration a friendly name.
#define PWRDN_CFG_PTI_DATA _GPIO_P_CFGL_Px0_IN_PUD
Give the packet trace configuration a friendly name.
#define PWRDN_OUT_PTI_DATA 1
Give the packet trace configuration a friendly name.

32kHz Oscillator and nTX_ACTIVE Configuration Defines

Since the 32kHz Oscillator and nTX_ACTIVE both share PC6, their configuration defines are linked and instantiated together. Look above for the defines that enable the 32kHz Oscillator and nTX_ACTIVE.

Note
ENABLE_OSC32K is mutually exclusive with ENABLE_ALT_FUNCTION_NTX_ACTIVE since they define conflicting usage of GPIO PC6.

When using the 32kHz, configure PC6 and PC7 for analog for the XTAL.

When using nTX_ACTIVE, configure PC6 for alternate output while awake and a low output when deepsleeping. Also, configure PC7 for TEMP_EN.

When not using the 32kHz or nTX_ACTIVE, configure PC6 and PC7 for Button1 and TEMP_EN.

#define PWRUP_CFG_BUTTON1 _GPIO_P_CFGL_Px0_IN_PUD
Give GPIO PC6 configuration a friendly name.
#define PWRUP_OUT_BUTTON1 1 /* Button needs a pullup */
Give GPIO PC6 configuration a friendly name.
#define PWRDN_CFG_BUTTON1 _GPIO_P_CFGL_Px0_IN_PUD
Give GPIO PC6 configuration a friendly name.
#define PWRDN_OUT_BUTTON1 1 /* Button needs a pullup */
Give GPIO PC6 configuration a friendly name.
#define CFG_TEMPEN _GPIO_P_CFGL_Px0_OUT
Give GPIO PC7 configuration a friendly name.

TX_ACTIVE Configuration Defines

Provide the proper set of pin (PC5) configurations for when TX_ACTIVE is enabled (look above for the define which enables it). When TX_ACTIVE is not enabled, configure the pin for LED2.

#define PWRUP_CFG_LED2 _GPIO_P_CFGL_Px0_OUT
Give the TX_ACTIVE configuration a friendly name.
#define PWRUP_OUT_LED2 1 /* LED default off */
Give the TX_ACTIVE configuration a friendly name.
#define PWRDN_CFG_LED2 _GPIO_P_CFGL_Px0_OUT
Give the TX_ACTIVE configuration a friendly name.
#define PWRDN_OUT_LED2 1 /* LED default off */
Give the TX_ACTIVE configuration a friendly name.

USB Configuration Defines

Provide the proper set of pin configuration for when USB is not enumerated. Not enumerated primarily refers to the driver not being configured or deep sleep. The configuration used here is only for keeping the USB off the bus. The GPIO configuration used when active is controlled by the USB driver since the driver needs to control the enumeration process (which affects GPIO state.)

Note
: Using USB requires Serial port 3 to be defined and is only possible on EM3582/EM3586/EM3588/EM359 chips.
#define PWRUP_CFG_USBDM _GPIO_P_CFGL_Px0_OUT_ALT
Give the USB configuration a friendly name.
#define PWRUP_OUT_USBDM 0
Give the USB configuration a friendly name.
#define PWRUP_CFG_USBDP _GPIO_P_CFGL_Px0_IN
Give the USB configuration a friendly name.
#define PWRUP_OUT_USBDP 0
Give the USB configuration a friendly name.
#define PWRUP_CFG_ENUMCTRL _GPIO_P_CFGL_Px0_OUT_ALT
Give the USB configuration a friendly name.
#define PWRUP_OUT_ENUMCTRL 0
Give the USB configuration a friendly name.
#define PWRUP_CFG_VBUSMON _GPIO_P_CFGL_Px0_OUT
Give the USB configuration a friendly name.
#define PWRUP_OUT_VBUSMON 1
Give the USB configuration a friendly name.
#define PWRDN_CFG_USBDM _GPIO_P_CFGL_Px0_IN_PUD
Give the USB configuration a friendly name.
#define PWRDN_OUT_USBDM 1
Give the USB configuration a friendly name.
#define PWRDN_CFG_USBDP _GPIO_P_CFGL_Px0_IN_PUD
Give the USB configuration a friendly name.
#define PWRDN_OUT_USBDP 1
Give the USB configuration a friendly name.
#define PWRDN_CFG_ENUMCTRL _GPIO_P_CFGL_Px0_IN_PUD
Give the USB configuration a friendly name.
#define PWRDN_OUT_ENUMCTRL 1
Give the USB configuration a friendly name.
#define PWRDN_CFG_VBUSMON _GPIO_P_CFGL_Px0_OUT
Give the USB configuration a friendly name.
#define PWRDN_OUT_VBUSMON 1
Give the USB configuration a friendly name.

GPIO Configuration Macros

These macros define the GPIO configuration and initial state of the output registers for all the GPIO in the powerup and powerdown modes.

uint16_t gpioCfgPowerUp [6]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .
uint16_t gpioCfgPowerDown [6]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .
uint8_t gpioOutPowerUp [3]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .
uint8_t gpioOutPowerDown [3]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .
GpioMaskType gpioRadioPowerBoardMask
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .
#define DEFINE_GPIO_RADIO_POWER_BOARD_MASK_VARIABLE ()   GpioMaskType gpioRadioPowerBoardMask = 0
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .
#define DEFINE_POWERUP_GPIO_CFG_VARIABLES ()
Initialize GPIO powerup configuration variables.
#define DEFINE_POWERUP_GPIO_OUTPUT_DATA_VARIABLES ()
Initialize GPIO powerup output variables.
#define DEFINE_POWERDOWN_GPIO_CFG_VARIABLES ()
Initialize powerdown GPIO configuration variables.
#define DEFINE_POWERDOWN_GPIO_OUTPUT_DATA_VARIABLES ()
Initialize powerdown GPIO output variables.
#define SET_POWERUP_GPIO_CFG_REGISTERS ()
Set powerup GPIO configuration registers.
#define SET_POWERUP_GPIO_OUTPUT_DATA_REGISTERS ()
Set powerup GPIO output registers.
#define SET_POWERDOWN_GPIO_CFG_REGISTERS ()
Set powerdown GPIO configuration registers.
#define SET_POWERDOWN_GPIO_OUTPUT_DATA_REGISTERS ()
Set powerdown GPIO output registers.
#define SET_RESUME_GPIO_CFG_REGISTERS ()
Set resume GPIO configuration registers. Identical to SET_POWERUP.
#define SET_RESUME_GPIO_OUTPUT_DATA_REGISTERS ()
Set resume GPIO output registers. Identical to SET_POWERUP.
#define SET_SUSPEND_GPIO_CFG_REGISTERS ()
Set suspend GPIO configuration registers. SET_POWERDOWN minus USB regs.
#define SET_SUSPEND_GPIO_OUTPUT_DATA_REGISTERS ()
Set suspend GPIO output registers. SET_POWERDOWN minus USB regs.
#define CONFIGURE_EXTERNAL_REGULATOR_ENABLE ()   GPIO->DBGCFG &= ~GPIO_DBGCFG_EXTREGEN;
External regulator enable/disable macro.

GPIO Wake Source Definitions

A convenient define that chooses if this external signal can be used as source to wake from deep sleep. Any change in the state of the signal will wake up the CPU.

#define WAKE_ON_PA0 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PA1 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PA2 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PA3 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PA4 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PA5 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PA6 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PA7 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB0 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB1 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB2 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB3 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB4 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB5 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB6 true
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB7 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC0 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC1 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC2 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC3 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC4 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC5 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC6 true
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC7 false
true if this GPIO can wake the chip from deep sleep, false if not.

Custom Baud Rate Definitions

The following define is used with defining a custom baud rate for the UART. This define provides a simple hook into the definition of the baud rates used with the UART. The baudSettings[] array in uart.c links the BAUD_* defines with the actual register values needed for operating the UART. The array baudSettings[] can be edited directly for a custom baud rate or another entry (the register settings) can be provided here with this define.

#define EMBER_SERIAL_BAUD_CUSTOM 13
This define is the register setting for generating a baud of.

LED Definitions

The following are used to aid in the abstraction with the LED connections. The microcontroller-specific sources use these definitions so they are able to work across a variety of boards which could have different connections. The names and ports/pins used below are intended to match with a schematic of the system to provide the abstraction.

The HalBoardLedPins enum values should always be used when manipulating the state of LEDs, as they directly refer to the GPIOs to which the LEDs are connected.

Note: LEDs 0 and 1 are on the RCM.

Note: LED 2 is on the breakout board (dev0680).

Note: LED 3 simply redirects to LED 2.

enum HalBoardLedPins {
BOARDLED0 = PORTA_PIN(6),
BOARDLED1 = PORTA_PIN(7),
BOARDLED2 = PORTC_PIN(5),
BOARDLED3 = BOARDLED2,
BOARD_ACTIVITY_LED = BOARDLED0,
BOARD_HEARTBEAT_LED = BOARDLED1,
BOARDLED0 = PORTA_PIN(6),
BOARDLED1 = PORTA_PIN(7),
BOARDLED2 = PORTC_PIN(5),
BOARDLED3 = BOARDLED2,
BOARD_ACTIVITY_LED = BOARDLED0,
BOARD_HEARTBEAT_LED = BOARDLED1
}
Assign each GPIO with an LED connected to a convenient name. BOARD_ACTIVITY_LED and BOARD_HEARTBEAT_LED provide a further layer of abstraction on top of the 3 LEDs for verbose coding.

Button Definitions

The following are used to aid in the abstraction with the Button connections. The microcontroller-specific sources use these definitions so they are able to work across a variety of boards which could have different connections. The names and ports/pins used below are intended to match with a schematic of the system to provide the abstraction.

The BUTTONn macros should always be used with manipulating the buttons as they directly refer to the GPIOs to which the buttons are connected.

Note
The GPIO number must match the IRQ letter
#define BUTTON0 PORTB_PIN(6)
The actual GPIO BUTTON0 is connected to. This define should be used whenever referencing BUTTON0.
#define BUTTON0_IN GPIO_PBIN
The GPIO input register for BUTTON0.
#define BUTTON0_SEL ()   do {} while (0)
Point the proper IRQ at the desired pin for BUTTON0.
#define BUTTON0_ISR halIrqBIsr
The interrupt service routine for BUTTON0.
#define BUTTON0_INTCFG GPIO_INTCFGB
The interrupt configuration register for BUTTON0.
#define BUTTON0_INT_EN_BIT INT_IRQB
The interrupt enable bit for BUTTON0.
#define BUTTON0_FLAG_BIT INT_IRQBFLAG
The interrupt flag bit for BUTTON0.
#define BUTTON0_MISS_BIT INT_MISSIRQB
The missed interrupt bit for BUTTON0.
#define BUTTON1 PORTC_PIN(6)
The actual GPIO BUTTON1 is connected to. This define should be used whenever referencing BUTTON1.
#define BUTTON1_IN GPIO_PCIN
The GPIO input register for BUTTON1.
#define BUTTON1_SEL ()   do { GPIO_IRQCSEL = PORTC_PIN(6); } while (0)
Point the proper IRQ at the desired pin for BUTTON1.
#define BUTTON1_ISR halIrqCIsr
The interrupt service routine for BUTTON1.
#define BUTTON1_INTCFG GPIO_INTCFGC
The interrupt configuration register for BUTTON1.
#define BUTTON1_INT_EN_BIT INT_IRQC
The interrupt enable bit for BUTTON1.
#define BUTTON1_FLAG_BIT INT_IRQCFLAG
The interrupt flag bit for BUTTON1.
#define BUTTON1_MISS_BIT INT_MISSIRQC
The missed interrupt bit for BUTTON1.

Radio HoldOff Configuration Definitions

This define does not equate to anything. It is used as a trigger to enable Radio HoldOff support.

The following are used to aid in the abstraction with Radio HoldOff (RHO). The microcontroller-specific sources use these definitions so they are able to work across a variety of boards which could have different connections. The names and ports/pins used below are intended to match with a schematic of the system to provide the abstraction.

The Radio HoldOff input GPIO is abstracted like BUTTON0/1.

#define RHO_GPIO PORTA_PIN(6)
The actual GPIO used to control Radio HoldOff.
#define RHO_ASSERTED 1
The GPIO signal level to assert Radio HoldOff (1=high, 0=low).
#define RHO_CFG GPIO_PACFGH
The GPIO configuration register for Radio HoldOff.
#define RHO_IN GPIO_PAIN
The GPIO input register for Radio HoldOff.
#define RHO_OUT GPIO_PAOUT
The GPIO output register for Radio HoldOff.
#define RHO_SEL ()   do { GPIO_IRQDSEL = RHO_GPIO ; } while (0)
Point the proper IRQ at the desired pin for Radio HoldOff. Remember there may be other things that might want to use this IRQ.
#define RHO_ISR halIrqDIsr
The interrupt service routine for Radio HoldOff. Remember there may be other things that might want to use this IRQ.
#define RHO_INTCFG GPIO_INTCFGD
The interrupt configuration register for Radio HoldOff.
#define RHO_INT_EN_BIT INT_IRQD
The interrupt enable bit for Radio HoldOff.
#define RHO_FLAG_BIT INT_IRQDFLAG
The interrupt flag bit for Radio HoldOff.
#define RHO_MISS_BIT INT_MISSIRQD
The missed interrupt bit for Radio HoldOff.
#define PWRUP_CFG_DFL_RHO_FOR_RHO GPIOCFG_IN_PUD
Configuration of GPIO for Radio HoldOff operation.
#define PWRUP_OUT_DFL_RHO_FOR_RHO GPIOOUT_PULLDOWN /* Deassert */
The actual GPIO used to control Radio HoldOff.
#define PWRDN_CFG_DFL_RHO_FOR_RHO GPIOCFG_IN_PUD
The actual GPIO used to control Radio HoldOff.
#define PWRDN_OUT_DFL_RHO_FOR_RHO GPIOOUT_PULLDOWN /* Deassert */
The actual GPIO used to control Radio HoldOff.
#define PWRUP_CFG_DFL_RHO_FOR_DFL GPIOCFG_OUT
Configuration of GPIO for default behavior.
#define PWRUP_OUT_DFL_RHO_FOR_DFL 1 /* LED default off */
The actual GPIO used to control Radio HoldOff.
#define PWRDN_CFG_DFL_RHO_FOR_DFL GPIOCFG_OUT
The actual GPIO used to control Radio HoldOff.
#define PWRDN_OUT_DFL_RHO_FOR_DFL 1 /* LED off */
The actual GPIO used to control Radio HoldOff.
#define PWRUP_CFG_DFL_RHO PWRUP_CFG_DFL_RHO_FOR_DFL
The following definitions are helpers for managing Radio HoldOff and should not be modified.
#define PWRUP_OUT_DFL_RHO PWRUP_OUT_DFL_RHO_FOR_DFL
The actual GPIO used to control Radio HoldOff.
#define PWRDN_CFG_DFL_RHO PWRDN_CFG_DFL_RHO_FOR_DFL
The actual GPIO used to control Radio HoldOff.
#define PWRDN_OUT_DFL_RHO PWRDN_OUT_DFL_RHO_FOR_DFL
The actual GPIO used to control Radio HoldOff.
#define halInternalInitRadioHoldOff ()   /* no-op */
The actual GPIO used to control Radio HoldOff.
#define ADJUST_GPIO_CONFIG_DFL_RHO (enableRadioHoldOff)
The actual GPIO used to control Radio HoldOff.

Temperature sensor ADC channel

Define the analog input channel connected to the LM-20 temperature sensor. The scale factor compensates for different platform input ranges. PB5/ADC0 must be an analog input. PC7 must be an output and set to a high level to power the sensor.

#define TEMP_SENSOR_ADC_CHANNEL ADC_SOURCE_ADC0_VREF2
The analog input channel to use for the temperature sensor.
#define TEMP_SENSOR_SCALE_FACTOR 1
The scale factor to compensate for different input ranges.

Packet Trace

When PACKET_TRACE is defined, ::GPIO_PACFGH will automatically be setup by halInit() to enable Packet Trace support on PA4 and PA5, in addition to the configuration specified below.

Note
This define will override any settings for PA4 and PA5.
#define PACKET_TRACE
This define does not equate to anything. It is used as a trigger to enable Packet Trace support on the breakout board (dev0680).

ENABLE_OSC32K

When ENABLE_OSC32K is defined, halInit() will configure system timekeeping to utilize the external 32.768 kHz crystal oscillator rather than the internal 1 kHz RC oscillator.

Note
ENABLE_OSC32K is mutually exclusive with ENABLE_ALT_FUNCTION_NTX_ACTIVE since they define conflicting usage of GPIO PC6.

On initial powerup the 32.768 kHz crystal oscillator will take a little while to start stable oscillation. This only happens on initial powerup, not on wake-from-sleep, since the crystal usually stays running in deep sleep mode.

When ENABLE_OSC32K is defined the crystal oscillator is started as part of halInit() . After the crystal is started we delay for OSC32K_STARTUP_DELAY_MS (time in milliseconds). This delay allows the crystal oscillator to stabilize before we start using it for system timing.

If you set OSC32K_STARTUP_DELAY_MS to less than the crystal's startup time:

  • The system timer won't produce a reliable one millisecond tick before the crystal is stable.
  • You may see some number of ticks of unknown period occur before the crystal is stable.
  • halInit() will complete and application code will begin running, but any events based on the system timer will not be accurate until the crystal is stable.
  • An unstable system timer will only affect the APIs in system-timer.h .

Typical 32.768 kHz crystals measured by Ember take about 400 milliseconds to stabilize. Be sure to characterize your particular crystal's stabilization time since crystal behavior can vary.

#define OSC32K_STARTUP_DELAY_MS (0)

ENABLE_ALT_FUNCTION_TX_ACTIVE

This define does not equate to anything. It is used as a trigger to enable the REG_EN alternate function on PA7. Default is to not enable REG_EN functionality on PA7.

When ENABLE_ALT_FUNCTION_TX_ACTIVE is defined, halInit() and halPowerUp() will enable the TX_ACTIVE alternate functionality of PC5. halPowerDown() will configure PC5 to be a low output. TX_ACTIVE can be used for external PA power management and RF switching logic. In transmit mode the Tx baseband drives TX_ACTIVE high. In receive mode the TX_ACTIVE signal is low. This define will override any settings for PC5.

#define ENABLE_ALT_FUNCTION_TX_ACTIVE
This define does not equate to anything. It is used as a trigger to enable the TX_ACTIVE alternate function on PC5. It is enabled by default in this board file because the SiGe SE2432L requires the TX_ACTIVE alternate function to operate properly.

EEPROM_USES_SHUTDOWN_CONTROL

This define does not equate to anything. It is used as a trigger to enable the nTX_ACTIVE alternate function on PC6. Default is to not enable nTX_ACTIVE functionality on PC6.

When EEPROM_USES_SHUTDOWN_CONTROL is defined, logic is enabled in the EEPROM driver which drives PB7 high upon EEPROM initialization. In Ember reference designs, PB7 acts as an EEPROM enable pin and therefore must be driven high in order to use the EEPROM. This option is intended to be enabled when running app-bootloader on designs based on current Ember reference designs.

#define EEPROM_USES_SHUTDOWN_CONTROL
This define does not equate to anything. It is used as a trigger to enable the logic that drives PB7 high in the EEPROM driver.

Packet Trace Configuration Defines

Provide the proper set of pin configuration for when the Packet Trace is enabled (look above for the define which enables it). When Packet Trace is not enabled, leave the two PTI pins in their default configuration. If Packet Trace is not being used, feel free to set the pin configurations as desired. The config shown here is simply the Power On Reset defaults.

#define PWRUP_CFG_PTI_EN GPIOCFG_OUT_ALT
Give the packet trace configuration a friendly name.
#define PWRUP_OUT_PTI_EN 0
Give the packet trace configuration a friendly name.
#define PWRDN_CFG_PTI_EN GPIOCFG_IN_PUD
Give the packet trace configuration a friendly name.
#define PWRDN_OUT_PTI_EN GPIOOUT_PULLDOWN
Give the packet trace configuration a friendly name.
#define PWRUP_CFG_PTI_DATA GPIOCFG_OUT_ALT
Give the packet trace configuration a friendly name.
#define PWRUP_OUT_PTI_DATA 1
Give the packet trace configuration a friendly name.
#define PWRDN_CFG_PTI_DATA GPIOCFG_IN_PUD
Give the packet trace configuration a friendly name.
#define PWRDN_OUT_PTI_DATA GPIOOUT_PULLUP
Give the packet trace configuration a friendly name.

32kHz Oscillator and nTX_ACTIVE Configuration Defines

Since the 32kHz Oscillator and nTX_ACTIVE both share PC6, their configuration defines are linked and instantiated together. Look above for the defines that enable the 32kHz Oscillator and nTX_ACTIVE.

Note
ENABLE_OSC32K is mutually exclusive with ENABLE_ALT_FUNCTION_NTX_ACTIVE since they define conflicting usage of GPIO PC6.

When using the 32kHz, configure PC6 and PC7 for analog for the XTAL.

When using nTX_ACTIVE, configure PC6 for alternate output while awake and a low output when deepsleeping. Also, configure PC7 for TEMP_EN.

When not using the 32kHz or nTX_ACTIVE, configure PC6 and PC7 for Button1 and TEMP_EN.

#define PWRUP_CFG_BUTTON1 GPIOCFG_IN_PUD
Give GPIO PC6 configuration a friendly name.
#define PWRUP_OUT_BUTTON1 GPIOOUT_PULLUP /* Button needs a pullup */
Give GPIO PC6 configuration a friendly name.
#define PWRDN_CFG_BUTTON1 GPIOCFG_IN_PUD
Give GPIO PC6 configuration a friendly name.
#define PWRDN_OUT_BUTTON1 GPIOOUT_PULLUP /* Button needs a pullup */
Give GPIO PC6 configuration a friendly name.
#define CFG_TEMPEN GPIOCFG_OUT
Give GPIO PC7 configuration a friendly name.

TX_ACTIVE Configuration Defines

Provide the proper set of pin (PC5) configurations for when TX_ACTIVE is enabled (look above for the define which enables it). When TX_ACTIVE is not enabled, configure the pin for LED2.

#define PWRUP_CFG_LED2 GPIOCFG_OUT_ALT
Give the TX_ACTIVE configuration a friendly name.
#define PWRUP_OUT_LED2 0
Give the TX_ACTIVE configuration a friendly name.
#define PWRDN_CFG_LED2 GPIOCFG_OUT
Give the TX_ACTIVE configuration a friendly name.
#define PWRDN_OUT_LED2 0
Give the TX_ACTIVE configuration a friendly name.

GPIO Configuration Macros

These macros define the GPIO configuration and initial state of the output registers for all the GPIO in the powerup and powerdown modes.

uint16_t gpioCfgPowerUp [6]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .
uint16_t gpioCfgPowerDown [6]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .
uint8_t gpioOutPowerUp [3]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .
uint8_t gpioOutPowerDown [3]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .
GpioMaskType gpioRadioPowerBoardMask
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .
#define FEM_CTX_BIT ( BIT32 (PORTC_PIN(5)))
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .
#define FEM_CRX_BIT (0)
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .
#define DEFINE_GPIO_RADIO_POWER_BOARD_MASK_VARIABLE ()
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .
#define DEFINE_POWERUP_GPIO_CFG_VARIABLES ()
Initialize GPIO powerup configuration variables.
#define DEFINE_POWERUP_GPIO_OUTPUT_DATA_VARIABLES ()
Initialize GPIO powerup output variables.
#define DEFINE_POWERDOWN_GPIO_CFG_VARIABLES ()
Initialize powerdown GPIO configuration variables.
#define DEFINE_POWERDOWN_GPIO_OUTPUT_DATA_VARIABLES ()
Initialize powerdown GPIO output variables.
#define SET_POWERUP_GPIO_CFG_REGISTERS ()
Set powerup GPIO configuration registers.
#define SET_POWERUP_GPIO_OUTPUT_DATA_REGISTERS ()
Set powerup GPIO output registers.
#define SET_POWERDOWN_GPIO_CFG_REGISTERS ()
Set powerdown GPIO configuration registers.
#define SET_POWERDOWN_GPIO_OUTPUT_DATA_REGISTERS ()
Set powerdown GPIO output registers.
#define CONFIGURE_EXTERNAL_REGULATOR_ENABLE ()   GPIO_DBGCFG &= ~GPIO_EXTREGEN;
External regulator enable/disable macro.

GPIO Wake Source Definitions

A convenient define that chooses if this external signal can be used as source to wake from deep sleep. Any change in the state of the signal will wake up the CPU.

#define WAKE_ON_PA0 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PA1 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PA2 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PA3 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PA4 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PA5 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PA6 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PA7 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB0 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB1 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB2 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB3 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB4 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB5 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB6 true
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PB7 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC0 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC1 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC2 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC3 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC4 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC5 false
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC6 true
true if this GPIO can wake the chip from deep sleep, false if not.
#define WAKE_ON_PC7 false
true if this GPIO can wake the chip from deep sleep, false if not.

Detailed Description

Functions and definitions specific to the breakout board.

Note
The file dev0680.h is intended to be copied, renamed, and customized for customer-specific hardware.

The file dev0680.h is the default BOARD_HEADER file used with the breakout board of the development kit.

The EM35x on a dev0680 BoB has the following example GPIO configuration. This board file and the default HAL setup reflects this configuration.

  • PA0 - SC2MOSI
  • PA1 - SC2MISO
  • PA2 - SC2SCLK
  • PA3 - SC2nSSEL
  • PA4 - PTI_EN
  • PA5 - PTI_DATA
  • PA6 - LED (on RCM), or Radio HoldOff
  • PA7 - LED (on RCM)
  • PB0 - Power Amplifier shutdown control / TRACEDATA2
  • PB1 - SC1TXD
  • PB2 - SC1RXD
  • PB3 - SC1nCTS
  • PB4 - SC1nRTS
  • PB5 - TEMP_SENSE
  • PB6 - Button (IRQB fixed to PB6)
  • PB7 - Buzzer (also used for DataFlash Enable)
  • PC0 - JTAG (JRST) / TRACEDATA1
  • PC1 - Power Amplifier antenna select control / TRACEDATA3
  • PC2 - JTAG (JTDO) / SWO / TRACEDATA0
  • PC3 - JTAG (JTDI) / TRACECLK
  • PC4 - JTAG (JTMS) / SWDIO
  • PC5 - LED (on BoB)
  • PC6 - Button (IRQC pointed to PC6)
  • PC7 - TEMP_EN
Note
The file ref0657.h is a special variant of dev0680.h intended only for use with the SiGe SE2432L reference design.

The file dev0680.h is the default BOARD_HEADER file used with the breakout board of the development kit.

The EM35x on a dev0680 BoB has the following example GPIO configuration. This board file and the default HAL setup reflects this configuration.

  • PA0 - SC2MOSI
  • PA1 - SC2MISO
  • PA2 - SC2SCLK
  • PA3 - SC2nSSEL
  • PA4 - PTI_EN
  • PA5 - PTI_DATA
  • PA6 - LED (on RCM), or Radio HoldOff
  • PA7 - LED (on RCM)
  • PB0 - Power Amplifier shutdown control
  • PB1 - SC1TXD
  • PB2 - SC1RXD
  • PB3 - SC1nCTS
  • PB4 - SC1nRTS
  • PB5 - TEMP_SENSE (also used for SiGe SE2432L CPS)
  • PB6 - Button (IRQB fixed to PB6)
  • PB7 - Buzzer (also used for DataFlash Enable)
  • PC0 - JTAG (JRST)
  • PC1 - Power Amplifier antenna select control
  • PC2 - JTAG (JTDO) / SWO
  • PC3 - JTAG (JTDI)
  • PC4 - JTAG (JTMS)
  • PC5 - TX_ACTIVE (FEM CTX)
  • PC6 - Button (IRQC pointed to PC6)
  • PC7 - TEMP_EN

Macro Definition Documentation

#define ADJUST_GPIO_CONFIG_DFL_RHO ( enableRadioHoldOff )

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use.
#define BUTTON0   PORTB_PIN(6)

The actual GPIO BUTTON0 is connected to. This define should be used whenever referencing BUTTON0.

#define BUTTON0   PORTB_PIN(6)

The actual GPIO BUTTON0 is connected to. This define should be used whenever referencing BUTTON0.

#define BUTTON0_FLAG_BIT   INT_IRQBFLAG

The interrupt flag bit for BUTTON0.

#define BUTTON0_FLAG_BIT   EVENT_GPIO_FLAG_IRQB

The interrupt flag bit for BUTTON0.

#define BUTTON0_IN   GPIO_PBIN

The GPIO input register for BUTTON0.

#define BUTTON0_IN   (GPIO->P[1].IN)

The GPIO input register for BUTTON0.

#define BUTTON0_INT_EN_BIT   INT_IRQB

The interrupt enable bit for BUTTON0.

#define BUTTON0_INT_EN_BIT BIT32 ( BUTTON0_INT_EN_IRQN )

The actual GPIO BUTTON0 is connected to. This define should be used whenever referencing BUTTON0.

#define BUTTON0_INT_EN_IRQN   IRQB_IRQn

The interrupt enable bit for BUTTON0.

#define BUTTON0_INTCFG   GPIO_INTCFGB

The interrupt configuration register for BUTTON0.

#define BUTTON0_INTCFG   (EVENT_GPIO->CFGB)

The interrupt configuration register for BUTTON0.

#define BUTTON0_ISR   halIrqBIsr

The interrupt service routine for BUTTON0.

#define BUTTON0_ISR   halIrqBIsr

The interrupt service routine for BUTTON0.

#define BUTTON0_MISS_BIT   INT_MISSIRQB

The missed interrupt bit for BUTTON0.

#define BUTTON0_MISS_BIT   EVENT_MISS_MISS_IRQB

The missed interrupt bit for BUTTON0.

#define BUTTON0_SEL ( ) do {} while (0)

Point the proper IRQ at the desired pin for BUTTON0.

Note
IRQB is fixed and as such does not need any selection operation.
#define BUTTON0_SEL ( ) do {} while (0)

Point the proper IRQ at the desired pin for BUTTON0.

Note
IRQB is fixed and as such does not need any selection operation.
#define BUTTON1   PORTC_PIN(6)

The actual GPIO BUTTON1 is connected to. This define should be used whenever referencing BUTTON1.

#define BUTTON1   PORTC_PIN(6)

The actual GPIO BUTTON1 is connected to. This define should be used whenever referencing BUTTON1, such as controlling if pieces are compiled in. Remember there may be other things that might want to use IRQC.

#define BUTTON1_FLAG_BIT   INT_IRQCFLAG

The interrupt flag bit for BUTTON1.

#define BUTTON1_FLAG_BIT   EVENT_GPIO_FLAG_IRQC

The interrupt flag bit for BUTTON1.

#define BUTTON1_IN   GPIO_PCIN

The GPIO input register for BUTTON1.

#define BUTTON1_IN   (GPIO->P[2].IN)

The GPIO input register for BUTTON1.

#define BUTTON1_INT_EN_BIT   INT_IRQC

The interrupt enable bit for BUTTON1.

#define BUTTON1_INT_EN_BIT BIT32 ( BUTTON1_INT_EN_IRQN )

The actual GPIO BUTTON0 is connected to. This define should be used whenever referencing BUTTON0.

#define BUTTON1_INT_EN_IRQN   IRQC_IRQn

The interrupt enable bit for BUTTON1.

#define BUTTON1_INTCFG   GPIO_INTCFGC

The interrupt configuration register for BUTTON1.

#define BUTTON1_INTCFG   (EVENT_GPIO->CFGC)

The interrupt configuration register for BUTTON1.

#define BUTTON1_ISR   halIrqCIsr

The interrupt service routine for BUTTON1.

#define BUTTON1_ISR   halIrqCIsr

The interrupt service routine for BUTTON1. Remember there may be other things that might want to use IRQC.

#define BUTTON1_MISS_BIT   INT_MISSIRQC

The missed interrupt bit for BUTTON1.

#define BUTTON1_MISS_BIT   EVENT_MISS_MISS_IRQC

The missed interrupt bit for BUTTON1.

#define BUTTON1_SEL ( ) do { GPIO_IRQCSEL = PORTC_PIN(6); } while (0)

Point the proper IRQ at the desired pin for BUTTON1.

Note
For this board, IRQC is pointed at PC6
#define BUTTON1_SEL ( ) do { GPIO->IRQCSEL = PORTC_PIN(6); } while (0)

Point the proper IRQ at the desired pin for BUTTON1. Remember there may be other things that might want to use IRQC.

Note
For this board, IRQC is pointed at PC6
#define CFG_TEMPEN   GPIOCFG_OUT

Give GPIO PC7 configuration a friendly name.

ENABLE_OSC32K

#define CFG_TEMPEN   _GPIO_P_CFGL_Px0_OUT

Give GPIO PC7 configuration a friendly name.

ENABLE_OSC32K

#define CONFIGURE_EXTERNAL_REGULATOR_ENABLE ( ) GPIO_DBGCFG &= ~GPIO_EXTREGEN;

External regulator enable/disable macro.

#define CONFIGURE_EXTERNAL_REGULATOR_ENABLE ( ) GPIO->DBGCFG &= ~GPIO_DBGCFG_EXTREGEN;

External regulator enable/disable macro.

#define DEFINE_GPIO_RADIO_POWER_BOARD_MASK_VARIABLE ( )
Value:
GpioMaskType gpioRadioPowerBoardMask = { ( BIT32 (PORTB_PIN(0)) /* FEM_CSD */ \
| BIT32 (PORTB_PIN(5)) /* FEM_CPS */ \
) }
GpioMaskType gpioRadioPowerBoardMask
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...
#define FEM_CTX_BIT
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...
Definition: ref0657.h:729
#define BIT32(x)
Useful to reference a single bit of an uint32_t type.
Definition: platform-common.h:239
#define FEM_CRX_BIT
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...
Definition: ref0657.h:737

Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .

#define DEFINE_GPIO_RADIO_POWER_BOARD_MASK_VARIABLE ( ) GpioMaskType gpioRadioPowerBoardMask = 0

Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .

#define DEFINE_POWERDOWN_GPIO_CFG_VARIABLES ( )
Value:
uint16_t gpioCfgPowerDown [6] = { \
((GPIOCFG_IN_PUD << PA0_CFG_BIT) \
| (GPIOCFG_IN_PUD << PA1_CFG_BIT) \
| (GPIOCFG_IN_PUD << PA2_CFG_BIT) \
| (GPIOCFG_OUT << PA3_CFG_BIT)), \
(( PWRDN_CFG_PTI_EN << PA4_CFG_BIT) \
| ( PWRDN_CFG_PTI_DATA << PA5_CFG_BIT) \
| ( PWRDN_CFG_DFL_RHO << PA6_CFG_BIT) \
| (GPIOCFG_OUT << PA7_CFG_BIT)), \
((GPIOCFG_OUT << PB0_CFG_BIT) \
| (GPIOCFG_OUT << PB1_CFG_BIT) /* SC1TXD */ \
| (GPIOCFG_IN_PUD << PB2_CFG_BIT) /* SC1RXD */ \
| (GPIOCFG_IN_PUD << PB3_CFG_BIT)), /* SC1nCTS */ \
((GPIOCFG_OUT << PB4_CFG_BIT) /* SC1nRTS */ \
| (GPIOCFG_OUT << PB5_CFG_BIT) \
| (GPIOCFG_IN_PUD << PB6_CFG_BIT) \
| /* need to use pulldown for sleep */ \
(GPIOCFG_IN_PUD << PB7_CFG_BIT)), \
((GPIOCFG_IN_PUD << PC0_CFG_BIT) \
| (GPIOCFG_OUT << PC1_CFG_BIT) \
| (GPIOCFG_OUT << PC2_CFG_BIT) \
| (GPIOCFG_IN_PUD << PC3_CFG_BIT)), \
((GPIOCFG_IN_PUD << PC4_CFG_BIT) \
| ( PWRDN_CFG_LED2 << PC5_CFG_BIT) \
| ( PWRDN_CFG_BUTTON1 << PC6_CFG_BIT) \
| ( CFG_TEMPEN << PC7_CFG_BIT)) \
}
uint16_t gpioCfgPowerDown[6]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...
#define PWRDN_CFG_PTI_DATA
Give the packet trace configuration a friendly name.
Definition: ref0657.h:607
#define PWRDN_CFG_PTI_EN
Give the packet trace configuration a friendly name.
Definition: ref0657.h:603
#define PWRDN_CFG_DFL_RHO
The actual GPIO used to control Radio HoldOff.
Definition: ref0657.h:341
#define PWRDN_CFG_BUTTON1
Give GPIO PC6 configuration a friendly name.
Definition: ref0657.h:667
#define CFG_TEMPEN
Give GPIO PC7 configuration a friendly name.
Definition: ref0657.h:678
#define PWRDN_CFG_LED2
Give the TX_ACTIVE configuration a friendly name.
Definition: ref0657.h:696

Initialize powerdown GPIO configuration variables.

#define DEFINE_POWERDOWN_GPIO_CFG_VARIABLES ( )
Value:
uint16_t gpioCfgPowerDown [6] = { \
(( PWRDN_CFG_USBDM << _GPIO_P_CFGL_Px0_SHIFT) \
| ( PWRDN_CFG_USBDP << _GPIO_P_CFGL_Px1_SHIFT) \
| ( PWRDN_CFG_ENUMCTRL << _GPIO_P_CFGL_Px2_SHIFT) \
| ( PWRDN_CFG_VBUSMON << _GPIO_P_CFGL_Px3_SHIFT)), \
(( PWRDN_CFG_PTI_EN << _GPIO_P_CFGH_Px4_SHIFT) \
| ( PWRDN_CFG_PTI_DATA << _GPIO_P_CFGH_Px5_SHIFT) \
| ( PWRDN_CFG_DFL_RHO << _GPIO_P_CFGH_Px6_SHIFT) \
| (_GPIO_P_CFGL_Px0_OUT << _GPIO_P_CFGH_Px7_SHIFT)), \
((_GPIO_P_CFGL_Px0_OUT << _GPIO_P_CFGL_Px0_SHIFT) \
| (_GPIO_P_CFGL_Px0_OUT << _GPIO_P_CFGL_Px1_SHIFT) /* SC1TXD */ \
| (_GPIO_P_CFGL_Px0_IN_PUD << _GPIO_P_CFGL_Px2_SHIFT) /* SC1RXD */ \
| (_GPIO_P_CFGL_Px0_IN_PUD << _GPIO_P_CFGL_Px3_SHIFT)), /* SC1nCTS */ \
((_GPIO_P_CFGL_Px0_OUT << _GPIO_P_CFGH_Px4_SHIFT) /* SC1nRTS */ \
| /* disable analog for sleep */ \
(_GPIO_P_CFGL_Px0_IN_PUD << _GPIO_P_CFGH_Px5_SHIFT) \
| (_GPIO_P_CFGL_Px0_IN_PUD << _GPIO_P_CFGH_Px6_SHIFT) \
| /* need to use pulldown for sleep */ \
(_GPIO_P_CFGL_Px0_IN_PUD << _GPIO_P_CFGH_Px7_SHIFT)), \
((_GPIO_P_CFGL_Px0_IN_PUD << _GPIO_P_CFGL_Px0_SHIFT) \
| (_GPIO_P_CFGL_Px0_OUT << _GPIO_P_CFGL_Px1_SHIFT) \
| (_GPIO_P_CFGL_Px0_OUT << _GPIO_P_CFGL_Px2_SHIFT) \
| (_GPIO_P_CFGL_Px0_IN_PUD << _GPIO_P_CFGL_Px3_SHIFT)), \
((_GPIO_P_CFGL_Px0_IN_PUD << _GPIO_P_CFGH_Px4_SHIFT) \
| ( PWRDN_CFG_LED2 << _GPIO_P_CFGH_Px5_SHIFT) \
| ( PWRDN_CFG_BUTTON1 << _GPIO_P_CFGH_Px6_SHIFT) \
| ( CFG_TEMPEN << _GPIO_P_CFGH_Px7_SHIFT)) \
}
uint16_t gpioCfgPowerDown[6]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...
#define PWRDN_CFG_VBUSMON
Give the USB configuration a friendly name.
Definition: dev0680.h:1006
#define PWRDN_CFG_PTI_DATA
Give the packet trace configuration a friendly name.
Definition: dev0680.h:856
#define PWRDN_CFG_PTI_EN
Give the packet trace configuration a friendly name.
Definition: dev0680.h:852
#define PWRDN_CFG_DFL_RHO
The actual GPIO used to control Radio HoldOff.
Definition: dev0680.h:559
#define PWRDN_CFG_USBDP
Give the USB configuration a friendly name.
Definition: dev0680.h:1002
#define PWRDN_CFG_BUTTON1
Give GPIO PC6 configuration a friendly name.
Definition: dev0680.h:916
#define CFG_TEMPEN
Give GPIO PC7 configuration a friendly name.
Definition: dev0680.h:927
#define PWRDN_CFG_ENUMCTRL
Give the USB configuration a friendly name.
Definition: dev0680.h:1004
#define PWRDN_CFG_USBDM
Give the USB configuration a friendly name.
Definition: dev0680.h:1000
#define PWRDN_CFG_LED2
Give the TX_ACTIVE configuration a friendly name.
Definition: dev0680.h:950

Initialize powerdown GPIO configuration variables.

#define DEFINE_POWERDOWN_GPIO_OUTPUT_DATA_VARIABLES ( )

Initialize powerdown GPIO output variables.

#define DEFINE_POWERDOWN_GPIO_OUTPUT_DATA_VARIABLES ( )

Initialize powerdown GPIO output variables.

#define DEFINE_POWERUP_GPIO_CFG_VARIABLES ( )
Value:
uint16_t gpioCfgPowerUp [6] = { \
((GPIOCFG_OUT_ALT << PA0_CFG_BIT) \
| (GPIOCFG_IN << PA1_CFG_BIT) \
| (GPIOCFG_OUT_ALT << PA2_CFG_BIT) \
| (GPIOCFG_OUT << PA3_CFG_BIT)), \
(( PWRUP_CFG_PTI_EN << PA4_CFG_BIT) \
| ( PWRUP_CFG_PTI_DATA << PA5_CFG_BIT) \
| ( PWRUP_CFG_DFL_RHO << PA6_CFG_BIT) \
| (GPIOCFG_OUT << PA7_CFG_BIT)), \
((GPIOCFG_OUT << PB0_CFG_BIT) \
| (GPIOCFG_OUT_ALT << PB1_CFG_BIT) /* SC1TXD */ \
| (GPIOCFG_IN_PUD << PB2_CFG_BIT) /* SC1RXD */ \
| (GPIOCFG_IN_PUD << PB3_CFG_BIT)), /* SC1nCTS */ \
((GPIOCFG_OUT_ALT << PB4_CFG_BIT) /* SC1nRTS */ \
| (GPIOCFG_OUT << PB5_CFG_BIT) \
| (GPIOCFG_IN_PUD << PB6_CFG_BIT) \
| (GPIOCFG_OUT_ALT << PB7_CFG_BIT)), \
((GPIOCFG_OUT_ALT << PC0_CFG_BIT) \
| (GPIOCFG_OUT << PC1_CFG_BIT) \
| (GPIOCFG_OUT_ALT << PC2_CFG_BIT) \
| (GPIOCFG_IN << PC3_CFG_BIT)), \
((GPIOCFG_IN << PC4_CFG_BIT) \
| ( PWRUP_CFG_LED2 << PC5_CFG_BIT) \
| ( PWRUP_CFG_BUTTON1 << PC6_CFG_BIT) \
| ( CFG_TEMPEN << PC7_CFG_BIT)) \
}
#define PWRUP_CFG_PTI_EN
Give the packet trace configuration a friendly name.
Definition: ref0657.h:601
#define PWRUP_CFG_DFL_RHO
The following definitions are helpers for managing Radio HoldOff and should not be modified...
Definition: ref0657.h:339
uint16_t gpioCfgPowerUp[6]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...
#define PWRUP_CFG_PTI_DATA
Give the packet trace configuration a friendly name.
Definition: ref0657.h:605
#define PWRUP_CFG_BUTTON1
Give GPIO PC6 configuration a friendly name.
Definition: ref0657.h:665
#define CFG_TEMPEN
Give GPIO PC7 configuration a friendly name.
Definition: ref0657.h:678
#define PWRUP_CFG_LED2
Give the TX_ACTIVE configuration a friendly name.
Definition: ref0657.h:694

Initialize GPIO powerup configuration variables.

#define DEFINE_POWERUP_GPIO_CFG_VARIABLES ( )
Value:
uint16_t gpioCfgPowerUp [6] = { \
(( PWRUP_CFG_USBDM << _GPIO_P_CFGL_Px0_SHIFT) \
| ( PWRUP_CFG_USBDP << _GPIO_P_CFGL_Px1_SHIFT) \
| ( PWRUP_CFG_ENUMCTRL << _GPIO_P_CFGL_Px2_SHIFT) \
| ( PWRUP_CFG_VBUSMON << _GPIO_P_CFGL_Px3_SHIFT)), \
(( PWRUP_CFG_PTI_EN << _GPIO_P_CFGH_Px4_SHIFT) \
| ( PWRUP_CFG_PTI_DATA << _GPIO_P_CFGH_Px5_SHIFT) \
| ( PWRUP_CFG_DFL_RHO << _GPIO_P_CFGH_Px6_SHIFT) \
| (_GPIO_P_CFGL_Px0_OUT << _GPIO_P_CFGH_Px7_SHIFT)), \
((_GPIO_P_CFGL_Px0_OUT << _GPIO_P_CFGL_Px0_SHIFT) \
| ( PWRUP_CFG_SC1_TXD << _GPIO_P_CFGL_Px1_SHIFT) /* SC1TXD */ \
| (_GPIO_P_CFGL_Px0_IN_PUD << _GPIO_P_CFGL_Px2_SHIFT) /* SC1RXD */ \
| (_GPIO_P_CFGL_Px0_IN_PUD << _GPIO_P_CFGL_Px3_SHIFT)), /* SC1nCTS */ \
((_GPIO_P_CFGL_Px0_OUT_ALT << _GPIO_P_CFGH_Px4_SHIFT) /* SC1nRTS */ \
| (_GPIO_P_CFGL_Px0_ANALOG << _GPIO_P_CFGH_Px5_SHIFT) \
| (_GPIO_P_CFGL_Px0_IN_PUD << _GPIO_P_CFGH_Px6_SHIFT) \
| (_GPIO_P_CFGL_Px0_OUT_ALT << _GPIO_P_CFGH_Px7_SHIFT)), \
((_GPIO_P_CFGL_Px0_IN << _GPIO_P_CFGL_Px0_SHIFT) \
| (_GPIO_P_CFGL_Px0_OUT << _GPIO_P_CFGL_Px1_SHIFT) \
| (_GPIO_P_CFGL_Px0_OUT_ALT << _GPIO_P_CFGL_Px2_SHIFT) \
| (_GPIO_P_CFGL_Px0_IN << _GPIO_P_CFGL_Px3_SHIFT)), \
((_GPIO_P_CFGL_Px0_IN << _GPIO_P_CFGH_Px4_SHIFT) \
| ( PWRUP_CFG_LED2 << _GPIO_P_CFGH_Px5_SHIFT) \
| ( PWRUP_CFG_BUTTON1 << _GPIO_P_CFGH_Px6_SHIFT) \
| ( CFG_TEMPEN << _GPIO_P_CFGH_Px7_SHIFT)) \
}
#define PWRUP_CFG_ENUMCTRL
Give the USB configuration a friendly name.
Definition: dev0680.h:996
#define PWRUP_CFG_PTI_EN
Give the packet trace configuration a friendly name.
Definition: dev0680.h:850
#define PWRUP_CFG_DFL_RHO
The following definitions are helpers for managing Radio HoldOff and should not be modified...
Definition: dev0680.h:557
uint16_t gpioCfgPowerUp[6]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...
#define PWRUP_CFG_VBUSMON
Give the USB configuration a friendly name.
Definition: dev0680.h:998
#define PWRUP_CFG_SC1_TXD
Give GPIO SC1 TXD and nRTS configurations friendly names.
Definition: dev0680.h:1018
#define PWRUP_CFG_PTI_DATA
Give the packet trace configuration a friendly name.
Definition: dev0680.h:854
#define PWRUP_CFG_USBDP
Give the USB configuration a friendly name.
Definition: dev0680.h:994
#define PWRUP_CFG_USBDM
Give the USB configuration a friendly name.
Definition: dev0680.h:992
#define PWRUP_CFG_BUTTON1
Give GPIO PC6 configuration a friendly name.
Definition: dev0680.h:914
#define CFG_TEMPEN
Give GPIO PC7 configuration a friendly name.
Definition: dev0680.h:927
#define PWRUP_CFG_LED2
Give the TX_ACTIVE configuration a friendly name.
Definition: dev0680.h:948

Initialize GPIO powerup configuration variables.

#define DEFINE_POWERUP_GPIO_OUTPUT_DATA_VARIABLES ( )

Initialize GPIO powerup output variables.

#define DEFINE_POWERUP_GPIO_OUTPUT_DATA_VARIABLES ( )
Value:
uint8_t gpioOutPowerUp [3] = { \
(( PWRUP_OUT_USBDM << _GPIO_P_OUT_Px0_SHIFT) \
| ( PWRUP_OUT_USBDP << _GPIO_P_OUT_Px1_SHIFT) \
| ( PWRUP_OUT_ENUMCTRL << _GPIO_P_OUT_Px2_SHIFT) \
| ( PWRUP_OUT_VBUSMON << _GPIO_P_OUT_Px3_SHIFT) \
| ( PWRUP_OUT_PTI_EN << _GPIO_P_OUT_Px4_SHIFT) \
| ( PWRUP_OUT_PTI_DATA << _GPIO_P_OUT_Px5_SHIFT) \
| ( PWRUP_OUT_DFL_RHO << _GPIO_P_OUT_Px6_SHIFT) \
| /* LED default off */ \
(1 << _GPIO_P_OUT_Px7_SHIFT)), \
((1 << _GPIO_P_OUT_Px0_SHIFT) \
| (1 << _GPIO_P_OUT_Px1_SHIFT) /* SC1TXD */ \
| (1 << _GPIO_P_OUT_Px2_SHIFT) /* SC1RXD */ \
| (1 << _GPIO_P_OUT_Px3_SHIFT) /* SC1nCTS */ \
| (0 << _GPIO_P_OUT_Px4_SHIFT) /* SC1nRTS */ \
| (0 << _GPIO_P_OUT_Px5_SHIFT) \
| /* PB6 has button needing a pullup */ \
(1 << _GPIO_P_OUT_Px6_SHIFT) \
| (0 << _GPIO_P_OUT_Px7_SHIFT)), \
((0 << _GPIO_P_OUT_Px0_SHIFT) \
| (0 << _GPIO_P_OUT_Px1_SHIFT) \
| (1 << _GPIO_P_OUT_Px2_SHIFT) \
| (0 << _GPIO_P_OUT_Px3_SHIFT) \
| (0 << _GPIO_P_OUT_Px4_SHIFT) \
| ( PWRUP_OUT_LED2 << _GPIO_P_OUT_Px5_SHIFT) \
| ( PWRUP_OUT_BUTTON1 << _GPIO_P_OUT_Px6_SHIFT) \
| /* Temp Sensor default on */ \
(1 << _GPIO_P_OUT_Px7_SHIFT)) \
}
#define PWRUP_OUT_PTI_DATA
Give the packet trace configuration a friendly name.
Definition: dev0680.h:855
#define PWRUP_OUT_DFL_RHO
The actual GPIO used to control Radio HoldOff.
Definition: dev0680.h:558
uint8_t gpioOutPowerUp[3]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...
#define PWRUP_OUT_ENUMCTRL
Give the USB configuration a friendly name.
Definition: dev0680.h:997
#define PWRUP_OUT_BUTTON1
Give GPIO PC6 configuration a friendly name.
Definition: dev0680.h:915
#define PWRUP_OUT_USBDP
Give the USB configuration a friendly name.
Definition: dev0680.h:995
#define PWRUP_OUT_LED2
Give the TX_ACTIVE configuration a friendly name.
Definition: dev0680.h:949
#define PWRUP_OUT_VBUSMON
Give the USB configuration a friendly name.
Definition: dev0680.h:999
#define PWRUP_OUT_PTI_EN
Give the packet trace configuration a friendly name.
Definition: dev0680.h:851
#define PWRUP_OUT_USBDM
Give the USB configuration a friendly name.
Definition: dev0680.h:993

Initialize GPIO powerup output variables.

#define EEPROM_USES_SHUTDOWN_CONTROL

This define does not equate to anything. It is used as a trigger to enable the logic that drives PB7 high in the EEPROM driver.

#define EMBER_SERIAL_BAUD_CUSTOM   13

This define is the register setting for generating a baud of.

  1. Refer to the EM35x datasheet's discussion on UART baud rates for the equation used to derive this value.
#define EMBER_SERIAL_BAUD_CUSTOM   13

This define is the register setting for generating a baud of.

  1. Refer to the EM35x datasheet's discussion on UART baud rates for the equation used to derive this value.
#define ENABLE_ALT_FUNCTION_TX_ACTIVE

This define does not equate to anything. It is used as a trigger to enable the TX_ACTIVE alternate function on PC5. It is enabled by default in this board file because the SiGe SE2432L requires the TX_ACTIVE alternate function to operate properly.

#define ENUMCTRL   PORTA_PIN(2)

The actual GPIO ENUMCTRL is connected to. The GPIO only needs to be a simple push-pull output or input.

#define ENUMCTRL_CLR ( ) do { GPIO->P[0].CLR = GPIO_P_SET_Px2; } while (0)

When the GPIO used for enumeration is configured as push-pull, this macro makes it easy to clear the output state low.

#define ENUMCTRL_SET ( ) do { GPIO->P[0].SET = GPIO_P_SET_Px2; } while (0)

When the GPIO used for enumeration is configured as push-pull, this macro makes it easy to set the output state high.

#define ENUMCTRL_SETCFG ( cfg )
Value:
do { SET_CMSIS_REG_FIELD (GPIO->P[0].CFGL, \
GPIO_P_CFGL_Px2, \
cfg); \
} while (0)
#define SET_CMSIS_REG_FIELD(reg, field, value)
A convenience macro that makes it easy to change the field of a register, as defined in CMSIS Device ...
Definition: iar.h:287

Set the GPIO's configuration to the provided state. The two states used are GPIOCFG_OUT when the device is enumerated and GPIOCFG_IN when the device is not enumerated.

#define FEM_CRX_BIT   (0)

Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .

#define FEM_CTX_BIT   ( BIT32 (PORTC_PIN(5)))

Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .

#define halInternalInitRadioHoldOff ( ) /* no-op */

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use.
#define halInternalInitRadioHoldOff ( ) /* no-op */

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use. The GPIO signal level to assert Radio HoldOff (1=high, 0=low).
#define OSC32K_STARTUP_DELAY_MS   (0)
#define OSC32K_STARTUP_DELAY_MS   (0)
#define PACKET_TRACE

This define does not equate to anything. It is used as a trigger to enable Packet Trace support on the breakout board (dev0680).

#define PACKET_TRACE

This define does not equate to anything. It is used as a trigger to enable Packet Trace support on the breakout board (dev0680).

#define PWRDN_CFG_BUTTON1   GPIOCFG_IN_PUD

Give GPIO PC6 configuration a friendly name.

#define PWRDN_CFG_BUTTON1   _GPIO_P_CFGL_Px0_IN_PUD

Give GPIO PC6 configuration a friendly name.

#define PWRDN_CFG_DFL_RHO PWRDN_CFG_DFL_RHO_FOR_DFL

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use.
#define PWRDN_CFG_DFL_RHO PWRDN_CFG_DFL_RHO_FOR_DFL

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use. The GPIO signal level to assert Radio HoldOff (1=high, 0=low).
#define PWRDN_CFG_DFL_RHO_FOR_DFL   GPIOCFG_OUT

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use.
#define PWRDN_CFG_DFL_RHO_FOR_DFL   _GPIO_P_CFGL_Px0_OUT

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use. The GPIO signal level to assert Radio HoldOff (1=high, 0=low).
#define PWRDN_CFG_DFL_RHO_FOR_RHO   GPIOCFG_IN_PUD

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use.
#define PWRDN_CFG_DFL_RHO_FOR_RHO   _GPIO_P_CFGL_Px0_IN_PUD

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use. The GPIO signal level to assert Radio HoldOff (1=high, 0=low).
#define PWRDN_CFG_ENUMCTRL   _GPIO_P_CFGL_Px0_IN_PUD

Give the USB configuration a friendly name.

#define PWRDN_CFG_LED2   GPIOCFG_OUT

Give the TX_ACTIVE configuration a friendly name.

#define PWRDN_CFG_LED2   _GPIO_P_CFGL_Px0_OUT

Give the TX_ACTIVE configuration a friendly name.

ENABLE_ALT_FUNCTION_TX_ACTIVE

#define PWRDN_CFG_PTI_DATA   GPIOCFG_IN_PUD

Give the packet trace configuration a friendly name.

#define PWRDN_CFG_PTI_DATA   _GPIO_P_CFGL_Px0_IN_PUD

Give the packet trace configuration a friendly name.

#define PWRDN_CFG_PTI_EN   GPIOCFG_IN_PUD

Give the packet trace configuration a friendly name.

#define PWRDN_CFG_PTI_EN   _GPIO_P_CFGL_Px0_IN_PUD

Give the packet trace configuration a friendly name.

#define PWRDN_CFG_USBDM   _GPIO_P_CFGL_Px0_IN_PUD

Give the USB configuration a friendly name.

#define PWRDN_CFG_USBDP   _GPIO_P_CFGL_Px0_IN_PUD

Give the USB configuration a friendly name.

#define PWRDN_CFG_VBUSMON   _GPIO_P_CFGL_Px0_OUT

Give the USB configuration a friendly name.

#define PWRDN_OUT_BUTTON1   GPIOOUT_PULLUP /* Button needs a pullup */

Give GPIO PC6 configuration a friendly name.

#define PWRDN_OUT_BUTTON1   1 /* Button needs a pullup */

Give GPIO PC6 configuration a friendly name.

#define PWRDN_OUT_DFL_RHO PWRDN_OUT_DFL_RHO_FOR_DFL

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use.
#define PWRDN_OUT_DFL_RHO PWRDN_OUT_DFL_RHO_FOR_DFL

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use. The GPIO signal level to assert Radio HoldOff (1=high, 0=low).
#define PWRDN_OUT_DFL_RHO_FOR_DFL   1 /* LED off */

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use.
#define PWRDN_OUT_DFL_RHO_FOR_DFL   1 /* LED off */

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use. The GPIO signal level to assert Radio HoldOff (1=high, 0=low).
#define PWRDN_OUT_DFL_RHO_FOR_RHO   GPIOOUT_PULLDOWN /* Deassert */

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use.
#define PWRDN_OUT_DFL_RHO_FOR_RHO   0 /* Deassert */

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use. The GPIO signal level to assert Radio HoldOff (1=high, 0=low).
#define PWRDN_OUT_ENUMCTRL   1

Give the USB configuration a friendly name.

#define PWRDN_OUT_LED2   0

Give the TX_ACTIVE configuration a friendly name.

#define PWRDN_OUT_LED2   1 /* LED default off */

Give the TX_ACTIVE configuration a friendly name.

ENABLE_ALT_FUNCTION_TX_ACTIVE

#define PWRDN_OUT_PTI_DATA   GPIOOUT_PULLUP

Give the packet trace configuration a friendly name.

#define PWRDN_OUT_PTI_DATA   1

Give the packet trace configuration a friendly name.

#define PWRDN_OUT_PTI_EN   GPIOOUT_PULLDOWN

Give the packet trace configuration a friendly name.

#define PWRDN_OUT_PTI_EN   0

Give the packet trace configuration a friendly name.

#define PWRDN_OUT_SC1_nRTS   1
#define PWRDN_OUT_USBDM   1

Give the USB configuration a friendly name.

#define PWRDN_OUT_USBDP   1

Give the USB configuration a friendly name.

#define PWRDN_OUT_VBUSMON   1

Give the USB configuration a friendly name.

#define PWRUP_CFG_BUTTON1   GPIOCFG_IN_PUD

Give GPIO PC6 configuration a friendly name.

#define PWRUP_CFG_BUTTON1   _GPIO_P_CFGL_Px0_IN_PUD

Give GPIO PC6 configuration a friendly name.

#define PWRUP_CFG_DFL_RHO PWRUP_CFG_DFL_RHO_FOR_DFL

The following definitions are helpers for managing Radio HoldOff and should not be modified.

(defined(RADIO_HOLDOFF) && defined(RHO_GPIO))

#define PWRUP_CFG_DFL_RHO PWRUP_CFG_DFL_RHO_FOR_DFL

The following definitions are helpers for managing Radio HoldOff and should not be modified.

(defined(RADIO_HOLDOFF) && defined(RHO_GPIO))

#define PWRUP_CFG_DFL_RHO_FOR_DFL   GPIOCFG_OUT

Configuration of GPIO for default behavior.

#define PWRUP_CFG_DFL_RHO_FOR_DFL   _GPIO_P_CFGL_Px0_OUT

Configuration of GPIO for default behavior.

#define PWRUP_CFG_DFL_RHO_FOR_RHO   GPIOCFG_IN_PUD

Configuration of GPIO for Radio HoldOff operation.

#define PWRUP_CFG_DFL_RHO_FOR_RHO   _GPIO_P_CFGL_Px0_IN_PUD

Configuration of GPIO for Radio HoldOff operation.

#define PWRUP_CFG_ENUMCTRL   _GPIO_P_CFGL_Px0_OUT_ALT

Give the USB configuration a friendly name.

#define PWRUP_CFG_LED2   GPIOCFG_OUT_ALT

Give the TX_ACTIVE configuration a friendly name.

#define PWRUP_CFG_LED2   _GPIO_P_CFGL_Px0_OUT

Give the TX_ACTIVE configuration a friendly name.

ENABLE_ALT_FUNCTION_TX_ACTIVE

#define PWRUP_CFG_PTI_DATA   GPIOCFG_OUT_ALT

Give the packet trace configuration a friendly name.

#define PWRUP_CFG_PTI_DATA   _GPIO_P_CFGL_Px0_OUT_ALT

Give the packet trace configuration a friendly name.

#define PWRUP_CFG_PTI_EN   GPIOCFG_OUT_ALT

Give the packet trace configuration a friendly name.

#define PWRUP_CFG_PTI_EN   _GPIO_P_CFGL_Px0_OUT_ALT

Give the packet trace configuration a friendly name.

#define PWRUP_CFG_SC1_TXD   _GPIO_P_CFGL_Px0_OUT_ALT

Give GPIO SC1 TXD and nRTS configurations friendly names.

SLEEPY_IP_MODEM_UART

#define PWRUP_CFG_USBDM   _GPIO_P_CFGL_Px0_OUT_ALT

Give the USB configuration a friendly name.

#define PWRUP_CFG_USBDP   _GPIO_P_CFGL_Px0_IN

Give the USB configuration a friendly name.

#define PWRUP_CFG_VBUSMON   _GPIO_P_CFGL_Px0_OUT

Give the USB configuration a friendly name.

#define PWRUP_OUT_BUTTON1   GPIOOUT_PULLUP /* Button needs a pullup */

Give GPIO PC6 configuration a friendly name.

#define PWRUP_OUT_BUTTON1   1 /* Button needs a pullup */

Give GPIO PC6 configuration a friendly name.

#define PWRUP_OUT_DFL_RHO PWRUP_OUT_DFL_RHO_FOR_DFL

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use.
#define PWRUP_OUT_DFL_RHO PWRUP_OUT_DFL_RHO_FOR_DFL

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use. The GPIO signal level to assert Radio HoldOff (1=high, 0=low).
#define PWRUP_OUT_DFL_RHO_FOR_DFL   1 /* LED default off */

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use.
#define PWRUP_OUT_DFL_RHO_FOR_DFL   1 /* LED default off */

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use. The GPIO signal level to assert Radio HoldOff (1=high, 0=low).
#define PWRUP_OUT_DFL_RHO_FOR_RHO   GPIOOUT_PULLDOWN /* Deassert */

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use.
#define PWRUP_OUT_DFL_RHO_FOR_RHO   0 /* Deassert */

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use. The GPIO signal level to assert Radio HoldOff (1=high, 0=low).
#define PWRUP_OUT_ENUMCTRL   0

Give the USB configuration a friendly name.

#define PWRUP_OUT_LED2   0

Give the TX_ACTIVE configuration a friendly name.

#define PWRUP_OUT_LED2   1 /* LED default off */

Give the TX_ACTIVE configuration a friendly name.

ENABLE_ALT_FUNCTION_TX_ACTIVE

#define PWRUP_OUT_PTI_DATA   1

Give the packet trace configuration a friendly name.

#define PWRUP_OUT_PTI_DATA   1

Give the packet trace configuration a friendly name.

#define PWRUP_OUT_PTI_EN   0

Give the packet trace configuration a friendly name.

#define PWRUP_OUT_PTI_EN   0

Give the packet trace configuration a friendly name.

#define PWRUP_OUT_USBDM   0

Give the USB configuration a friendly name.

#define PWRUP_OUT_USBDP   0

Give the USB configuration a friendly name.

#define PWRUP_OUT_VBUSMON   1

Give the USB configuration a friendly name.

#define RHO_ASSERTED   1

The GPIO signal level to assert Radio HoldOff (1=high, 0=low).

#define RHO_ASSERTED   1

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use. The GPIO signal level to assert Radio HoldOff (1=high, 0=low).
#define RHO_CFG   GPIO_PACFGH

The GPIO configuration register for Radio HoldOff.

#define RHO_CFG   (GPIO->P[0].CFGH)

The GPIO configuration register for Radio HoldOff.

#define RHO_FLAG_BIT   INT_IRQDFLAG

The interrupt flag bit for Radio HoldOff.

#define RHO_FLAG_BIT   EVENT_GPIO_FLAG_IRQD

The interrupt flag bit for Radio HoldOff.

#define RHO_GPIO   PORTA_PIN(6)

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use.
#define RHO_IN   GPIO_PAIN

The GPIO input register for Radio HoldOff.

#define RHO_IN   (GPIO->P[0].IN)

The GPIO input register for Radio HoldOff.

#define RHO_INT_EN_BIT   INT_IRQD

The interrupt enable bit for Radio HoldOff.

#define RHO_INT_EN_BIT BIT32 ( RHO_INT_EN_IRQN )

The actual GPIO used to control Radio HoldOff.

Note
If RHO_GPIO is not defined, then Radio HoldOff support will not be built in even for runtime use. The GPIO signal level to assert Radio HoldOff (1=high, 0=low).
#define RHO_INT_EN_IRQN   IRQD_IRQn

The interrupt enable bit for Radio HoldOff.

#define RHO_INTCFG   GPIO_INTCFGD

The interrupt configuration register for Radio HoldOff.

#define RHO_INTCFG   (EVENT_GPIO->CFGD)

The interrupt configuration register for Radio HoldOff.

#define RHO_ISR   halIrqDIsr

The interrupt service routine for Radio HoldOff. Remember there may be other things that might want to use this IRQ.

#define RHO_ISR   halIrqDIsr

The interrupt service routine for Radio HoldOff. Remember there may be other things that might want to use this IRQ.

#define RHO_MISS_BIT   INT_MISSIRQD

The missed interrupt bit for Radio HoldOff.

#define RHO_MISS_BIT   EVENT_MISS_MISS_IRQD

The missed interrupt bit for Radio HoldOff.

#define RHO_OUT   GPIO_PAOUT

The GPIO output register for Radio HoldOff.

#define RHO_OUT   (GPIO->P[0].OUT)

The GPIO output register for Radio HoldOff.

#define RHO_SEL ( ) do { GPIO_IRQDSEL = RHO_GPIO ; } while (0)

Point the proper IRQ at the desired pin for Radio HoldOff. Remember there may be other things that might want to use this IRQ.

#define RHO_SEL ( ) do { GPIO->IRQDSEL = RHO_GPIO ; } while (0)

Point the proper IRQ at the desired pin for Radio HoldOff. Remember there may be other things that might want to use this IRQ.

#define SET_POWERDOWN_GPIO_CFG_REGISTERS ( )
Value:
GPIO_PACFGL = gpioCfgPowerDown [0]; \
GPIO_PACFGH = gpioCfgPowerDown [1]; \
GPIO_PBCFGL = gpioCfgPowerDown [2]; \
GPIO_PBCFGH = gpioCfgPowerDown [3]; \
GPIO_PCCFGL = gpioCfgPowerDown [4]; \
GPIO_PCCFGH = gpioCfgPowerDown [5];
uint16_t gpioCfgPowerDown[6]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...

Set powerdown GPIO configuration registers.

#define SET_POWERDOWN_GPIO_CFG_REGISTERS ( )
Value:
GPIO->P[0].CFGL = gpioCfgPowerDown [0]; \
GPIO->P[0].CFGH = gpioCfgPowerDown [1]; \
GPIO->P[1].CFGL = gpioCfgPowerDown [2]; \
GPIO->P[1].CFGH = gpioCfgPowerDown [3]; \
GPIO->P[2].CFGL = gpioCfgPowerDown [4]; \
GPIO->P[2].CFGH = gpioCfgPowerDown [5];
uint16_t gpioCfgPowerDown[6]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...

Set powerdown GPIO configuration registers.

#define SET_POWERDOWN_GPIO_OUTPUT_DATA_REGISTERS ( )
Value:
GPIO_PAOUT = gpioOutPowerDown [0]; \
GPIO_PBOUT = gpioOutPowerDown [1]; \
GPIO_PCOUT = gpioOutPowerDown [2];
uint8_t gpioOutPowerDown[3]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...

Set powerdown GPIO output registers.

#define SET_POWERDOWN_GPIO_OUTPUT_DATA_REGISTERS ( )
Value:
GPIO->P[0].OUT = gpioOutPowerDown [0]; \
GPIO->P[1].OUT = gpioOutPowerDown [1]; \
GPIO->P[2].OUT = gpioOutPowerDown [2];
uint8_t gpioOutPowerDown[3]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...

Set powerdown GPIO output registers.

#define SET_POWERUP_GPIO_CFG_REGISTERS ( )
Value:
GPIO_PACFGL = gpioCfgPowerUp [0]; \
GPIO_PACFGH = gpioCfgPowerUp [1]; \
GPIO_PBCFGL = gpioCfgPowerUp [2]; \
GPIO_PBCFGH = gpioCfgPowerUp [3]; \
GPIO_PCCFGL = gpioCfgPowerUp [4]; \
GPIO_PCCFGH = gpioCfgPowerUp [5];
uint16_t gpioCfgPowerUp[6]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...

Set powerup GPIO configuration registers.

#define SET_POWERUP_GPIO_CFG_REGISTERS ( )
Value:
GPIO->P[0].CFGL = gpioCfgPowerUp [0]; \
GPIO->P[0].CFGH = gpioCfgPowerUp [1]; \
GPIO->P[1].CFGL = gpioCfgPowerUp [2]; \
GPIO->P[1].CFGH = gpioCfgPowerUp [3]; \
GPIO->P[2].CFGL = gpioCfgPowerUp [4]; \
GPIO->P[2].CFGH = gpioCfgPowerUp [5];
uint16_t gpioCfgPowerUp[6]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...

Set powerup GPIO configuration registers.

#define SET_POWERUP_GPIO_OUTPUT_DATA_REGISTERS ( )
Value:
GPIO_PAOUT = gpioOutPowerUp [0]; \
GPIO_PBOUT = gpioOutPowerUp [1]; \
GPIO_PCOUT = gpioOutPowerUp [2];
uint8_t gpioOutPowerUp[3]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...

Set powerup GPIO output registers.

#define SET_POWERUP_GPIO_OUTPUT_DATA_REGISTERS ( )
Value:
GPIO->P[0].OUT = gpioOutPowerUp [0]; \
GPIO->P[1].OUT = gpioOutPowerUp [1]; \
GPIO->P[2].OUT = gpioOutPowerUp [2];
uint8_t gpioOutPowerUp[3]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...

Set powerup GPIO output registers.

#define SET_RESUME_GPIO_CFG_REGISTERS ( )
Value:
/* GPIO->P[0].CFGL USB untouched! */ \
GPIO->P[0].CFGH = gpioCfgPowerUp [1]; \
GPIO->P[1].CFGL = gpioCfgPowerUp [2]; \
GPIO->P[1].CFGH = gpioCfgPowerUp [3]; \
GPIO->P[2].CFGL = gpioCfgPowerUp [4]; \
GPIO->P[2].CFGH = gpioCfgPowerUp [5];
uint16_t gpioCfgPowerUp[6]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...

Set resume GPIO configuration registers. Identical to SET_POWERUP.

#define SET_RESUME_GPIO_OUTPUT_DATA_REGISTERS ( )
Value:
GPIO->P[0].OUT = (GPIO->P[0].OUT & 0x0F) /*USB untouched*/ \
| ( gpioOutPowerUp [0] & 0xF0); \
GPIO->P[1].OUT = gpioOutPowerUp [1]; \
GPIO->P[2].OUT = gpioOutPowerUp [2];
uint8_t gpioOutPowerUp[3]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...

Set resume GPIO output registers. Identical to SET_POWERUP.

#define SET_SUSPEND_GPIO_CFG_REGISTERS ( )
Value:
/* GPIO->P[0].CFGL USB untouched! */ \
GPIO->P[0].CFGH = gpioCfgPowerDown [1]; \
GPIO->P[1].CFGL = gpioCfgPowerDown [2]; \
GPIO->P[1].CFGH = gpioCfgPowerDown [3]; \
GPIO->P[2].CFGL = gpioCfgPowerDown [4]; \
GPIO->P[2].CFGH = gpioCfgPowerDown [5];
uint16_t gpioCfgPowerDown[6]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...

Set suspend GPIO configuration registers. SET_POWERDOWN minus USB regs.

#define SET_SUSPEND_GPIO_OUTPUT_DATA_REGISTERS ( )
Value:
GPIO->P[0].OUT = (GPIO->P[0].OUT & 0x0F) /*USB untouched*/ \
| ( gpioOutPowerDown [0] & 0xF0); \
GPIO->P[1].OUT = gpioOutPowerDown [1]; \
GPIO->P[2].OUT = gpioOutPowerDown [2];
uint8_t gpioOutPowerDown[3]
Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask in...

Set suspend GPIO output registers. SET_POWERDOWN minus USB regs.

#define TEMP_SENSOR_ADC_CHANNEL ADC_SOURCE_ADC0_VREF2

The analog input channel to use for the temperature sensor.

#define TEMP_SENSOR_ADC_CHANNEL ADC_SOURCE_ADC0_VREF2

The analog input channel to use for the temperature sensor.

#define TEMP_SENSOR_SCALE_FACTOR   1

The scale factor to compensate for different input ranges.

#define TEMP_SENSOR_SCALE_FACTOR   1

The scale factor to compensate for different input ranges.

#define USB_MAX_POWER   (50)

USB Max Power parameter (bMaxPower) the driver will report to the host in the Configuration Descriptor.

#define USB_REMOTEWKUPEN_STATE   (1)

USB Remote Wakeup Enable.

Set the define USB_REMOTEWKUPEN_STATE: 0 remote wakeup is disabled. 1 remote wakeup is enabled.

#define USB_SELFPWRD_STATE   (1)

The USB power state.

Set the define USB_SELFPWRD_STATE: 0 if the device is bus powered. 1 if the device self powered.

#define VBUSMON   GPIO_P_IN_Px3

The actual GPIO VBUSMON is connected to. Remember that other pieces might want to use PA3.

Leaving VBUSMON undefined will keep VBUS Monitoring functionality from being compiled in and not conflict with other pieces that might want to use the GPIO or IRQ that VBUS Monitoring needs.

#define VBUSMON_FLAG_BIT   EVENT_GPIO_FLAG_IRQD

The interrupt flag bit for VBUSMON.

#define VBUSMON_IN   (GPIO->P[0].IN)

The GPIO input register for VBUSMON.

#define VBUSMON_INT_EN_BIT BIT32 ( VBUSMON_INT_EN_IRQN )

The actual GPIO VBUSMON is connected to. Remember that other pieces might want to use PA3.

Leaving VBUSMON undefined will keep VBUS Monitoring functionality from being compiled in and not conflict with other pieces that might want to use the GPIO or IRQ that VBUS Monitoring needs.

#define VBUSMON_INT_EN_IRQN   IRQD_IRQn

The interrupt enable bit for VBUSMON.

#define VBUSMON_INTCFG   (EVENT_GPIO->CFGD)

The interrupt configuration register for VBUSMON.

#define VBUSMON_ISR   halIrqDIsr

The interrupt service routine for VBUSMON. Remember that other pieces that might want to use IRQC.

#define VBUSMON_MISS_BIT   EVENT_MISS_MISS_IRQD

The missed interrupt bit for VBUSMON.

#define VBUSMON_SEL ( ) do { GPIO->IRQDSEL = PORTA_PIN(3); } while (0)

Point the proper IRQ at the desired pin for VBUSMON. Remember that other pieces that might want to use IRQC.

Note
For this board, IRQC is pointed at PA3.
#define VBUSMON_SETCFG ( )
Value:
do { SET_CMSIS_REG_FIELD (GPIO->P[0].CFGL, \
GPIO_P_CFGL_Px3, \
_GPIO_P_CFGL_Px3_IN); \
} while (0)
#define SET_CMSIS_REG_FIELD(reg, field, value)
A convenience macro that makes it easy to change the field of a register, as defined in CMSIS Device ...
Definition: iar.h:287

The GPIO configuration needed for VBUSMON. The configuration needs to be a simple input that will monitor for edge tansitions.

#define WAKE_ON_PA0   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA0   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA1   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA1   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA2   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA2   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA3   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA3   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA4   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA4   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA5   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA5   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA6   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA6   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA7   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PA7   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB0   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB0   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB1   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB1   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB2   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB2   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB3   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB3   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB4   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB4   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB5   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB5   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB6   true

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB6   true

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB7   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PB7   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC0   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC0   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC1   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC1   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC2   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC2   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC3   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC3   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC4   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC4   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC5   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC5   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC6   true

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC6   true

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC7   false

true if this GPIO can wake the chip from deep sleep, false if not.

#define WAKE_ON_PC7   false

true if this GPIO can wake the chip from deep sleep, false if not.

Enumeration Type Documentation

Assign each GPIO with an LED connected to a convenient name. BOARD_ACTIVITY_LED and BOARD_HEARTBEAT_LED provide a further layer of abstraction on top of the 3 LEDs for verbose coding.

Enumerator
BOARDLED0
BOARDLED1
BOARDLED2
BOARDLED3
BOARD_ACTIVITY_LED
BOARD_HEARTBEAT_LED
BOARDLED0
BOARDLED1
BOARDLED2
BOARDLED3
BOARD_ACTIVITY_LED
BOARD_HEARTBEAT_LED

Assign each GPIO with an LED connected to a convenient name. BOARD_ACTIVITY_LED and BOARD_HEARTBEAT_LED provide a further layer of abstraction on top of the 3 LEDs for verbose coding.

Enumerator
BOARDLED0
BOARDLED1
BOARDLED2
BOARDLED3
BOARD_ACTIVITY_LED
BOARD_HEARTBEAT_LED
BOARDLED0
BOARDLED1
BOARDLED2
BOARDLED3
BOARD_ACTIVITY_LED
BOARD_HEARTBEAT_LED

Variable Documentation

uint16_t gpioCfgPowerDown[6]

Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .

uint16_t gpioCfgPowerDown[6]

Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .

uint16_t gpioCfgPowerUp[6]

Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .

uint16_t gpioCfgPowerUp[6]

Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .

uint8_t gpioOutPowerDown[3]

Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .

uint8_t gpioOutPowerDown[3]

Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .

uint8_t gpioOutPowerUp[3]

Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .

uint8_t gpioOutPowerUp[3]

Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .

GpioMaskType gpioRadioPowerBoardMask

Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .

GpioMaskType gpioRadioPowerBoardMask

Define the mask for GPIO relevant to the radio in the context of power state. Each bit in the mask indicates the corresponding GPIO which should be affected when invoking halStackRadioPowerUpBoard() or halStackRadioPowerDownBoard() .