MCUXpresso SDK API Reference Manual  Rev 2.16.000
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
Ksdk_common

Overview

Macros

#define FSL_DRIVER_TRANSFER_DOUBLE_WEAK_IRQ   1
 Macro to use the default weak IRQ handler in drivers. More...
 
#define MAKE_STATUS(group, code)   ((((group)*100L) + (code)))
 Construct a status code value from a group and code number. More...
 
#define MAKE_VERSION(major, minor, bugfix)   (((major)*65536L) + ((minor)*256L) + (bugfix))
 Construct the version number for drivers. More...
 
#define ARRAY_SIZE(x)   (sizeof(x) / sizeof((x)[0]))
 Computes the number of elements in an array. More...
 
#define UINT64_H(X)   ((uint32_t)((((uint64_t) (X)) >> 32U) & 0x0FFFFFFFFULL))
 Macro to get upper 32 bits of a 64-bit value.
 
#define UINT64_L(X)   ((uint32_t)(((uint64_t) (X)) & 0x0FFFFFFFFULL))
 Macro to get lower 32 bits of a 64-bit value.
 
#define SUPPRESS_FALL_THROUGH_WARNING()
 For switch case code block, if case section ends without "break;" statement, there wil be fallthrough warning with compiler flag -Wextra or -Wimplicit-fallthrough=n when using armgcc. More...
 
#define SDK_DSC_DEFAULT_INT_PRIO   1U
 Default DSC interrupt priority number. More...
 
#define SetIRQBasePriority(x)   __EI##x()
 Set base core IRQ priority, that core will response the interrupt request with priority >= base IRQ priority.
 
#define PeriphReadReg(reg)   (reg)
 Read register value. More...
 
#define PeriphWriteReg(reg, data)   (reg) = (data)
 Write data to register. More...
 
#define PeriphSetBits(reg, bitMask)   (reg) |= (bitMask)
 Set specified bits in register. More...
 
#define PeriphClearBits(reg, bitMask)   (reg) &= (~(bitMask))
 Clear specified bits in register. More...
 
#define PeriphInvertBits(reg, bitMask)   (reg) ^= (bitMask)
 Invert specified bits in register. More...
 
#define PeriphGetBits(reg, bitMask)   ((reg) & (bitMask))
 Get specified bits in register. More...
 
#define PeriphWriteBitGroup(reg, bitMask, bitValue)   (reg) = ((reg) & ~(bitMask)) | ((bitValue) & (bitMask))
 Write group of bits to register. More...
 
#define PeriphSafeClearFlags(reg, allFlagsMask, flagMask)   (reg) = ((reg) & (~(allFlagsMask))) | ((flagMask) & (allFlagsMask))
 Clear (acknowledge) flags which are active-high and are cleared-by-write-one. More...
 
#define PeriphSafeClearBits(reg, allFlagsMask, bitMask)   (reg) = ((reg) & (~((allFlagsMask) | (bitMask))))
 Clear selected bits without modifying (acknowledge) bit flags which are active-high and are cleared-by-write-one. More...
 
#define PeriphSafeSetBits(reg, allFlagsMask, bitMask)   (reg) = ((reg) & (~(allFlagsMask))) | ((bitMask) & (~(allFlagsMask)))
 Set selected bits without modifying (acknowledge) bit flags which are active-high and are cleared-by-write-one. More...
 
#define PeriphSafeWriteBitGroup(reg, allFlagsMask, bitMask, bitValue)   (reg) = ((reg) & (~((allFlagsMask) | (bitMask)))) | ((bitValue) & (bitMask) & (~(allFlagsMask)))
 Write group of bits without modifying (acknowledge) bit flags which are active-high and are cleared-by-write-one. More...
 
#define SDK_GET_REGISTER_BYTE_ADDR(ipType, ipBase, regName)   ((2UL * ((uint32_t)(ipBase))) + ((uint32_t)(uint8_t *)&(((ipType *)0)->regName)))
 Get IP register byte address with uint32_t type. More...
 

Typedefs

typedef int32_t status_t
 Type used for all status and error return values. More...
 

Enumerations

enum  _status_groups {
  kStatusGroup_Generic = 0,
  kStatusGroup_FLASH = 1,
  kStatusGroup_LPSPI = 4,
  kStatusGroup_FLEXIO_SPI = 5,
  kStatusGroup_DSPI = 6,
  kStatusGroup_FLEXIO_UART = 7,
  kStatusGroup_FLEXIO_I2C = 8,
  kStatusGroup_LPI2C = 9,
  kStatusGroup_UART = 10,
  kStatusGroup_I2C = 11,
  kStatusGroup_LPSCI = 12,
  kStatusGroup_LPUART = 13,
  kStatusGroup_SPI = 14,
  kStatusGroup_XRDC = 15,
  kStatusGroup_SEMA42 = 16,
  kStatusGroup_SDHC = 17,
  kStatusGroup_SDMMC = 18,
  kStatusGroup_SAI = 19,
  kStatusGroup_MCG = 20,
  kStatusGroup_SCG = 21,
  kStatusGroup_SDSPI = 22,
  kStatusGroup_FLEXIO_I2S = 23,
  kStatusGroup_FLEXIO_MCULCD = 24,
  kStatusGroup_FLASHIAP = 25,
  kStatusGroup_FLEXCOMM_I2C = 26,
  kStatusGroup_I2S = 27,
  kStatusGroup_IUART = 28,
  kStatusGroup_CSI = 29,
  kStatusGroup_MIPI_DSI = 30,
  kStatusGroup_SDRAMC = 35,
  kStatusGroup_POWER = 39,
  kStatusGroup_ENET = 40,
  kStatusGroup_PHY = 41,
  kStatusGroup_TRGMUX = 42,
  kStatusGroup_SMARTCARD = 43,
  kStatusGroup_LMEM = 44,
  kStatusGroup_QSPI = 45,
  kStatusGroup_DMA = 50,
  kStatusGroup_EDMA = 51,
  kStatusGroup_DMAMGR = 52,
  kStatusGroup_FLEXCAN = 53,
  kStatusGroup_LTC = 54,
  kStatusGroup_FLEXIO_CAMERA = 55,
  kStatusGroup_LPC_SPI = 56,
  kStatusGroup_LPC_USART = 57,
  kStatusGroup_DMIC = 58,
  kStatusGroup_SDIF = 59,
  kStatusGroup_SPIFI = 60,
  kStatusGroup_OTP = 61,
  kStatusGroup_MCAN = 62,
  kStatusGroup_CAAM = 63,
  kStatusGroup_ECSPI = 64,
  kStatusGroup_USDHC = 65,
  kStatusGroup_LPC_I2C = 66,
  kStatusGroup_DCP = 67,
  kStatusGroup_MSCAN = 68,
  kStatusGroup_ESAI = 69,
  kStatusGroup_FLEXSPI = 70,
  kStatusGroup_MMDC = 71,
  kStatusGroup_PDM = 72,
  kStatusGroup_SDMA = 73,
  kStatusGroup_ICS = 74,
  kStatusGroup_SPDIF = 75,
  kStatusGroup_LPC_MINISPI = 76,
  kStatusGroup_HASHCRYPT = 77,
  kStatusGroup_LPC_SPI_SSP = 78,
  kStatusGroup_I3C = 79,
  kStatusGroup_LPC_I2C_1 = 97,
  kStatusGroup_NOTIFIER = 98,
  kStatusGroup_DebugConsole = 99,
  kStatusGroup_SEMC = 100,
  kStatusGroup_ApplicationRangeStart = 101,
  kStatusGroup_IAP = 102,
  kStatusGroup_SFA = 103,
  kStatusGroup_SPC = 104,
  kStatusGroup_PUF = 105,
  kStatusGroup_TOUCH_PANEL = 106,
  kStatusGroup_VBAT = 107,
  kStatusGroup_XSPI = 108,
  kStatusGroup_PNGDEC = 109,
  kStatusGroup_JPEGDEC = 110,
  kStatusGroup_HAL_GPIO = 121,
  kStatusGroup_HAL_UART = 122,
  kStatusGroup_HAL_TIMER = 123,
  kStatusGroup_HAL_SPI = 124,
  kStatusGroup_HAL_I2C = 125,
  kStatusGroup_HAL_FLASH = 126,
  kStatusGroup_HAL_PWM = 127,
  kStatusGroup_HAL_RNG = 128,
  kStatusGroup_HAL_I2S = 129,
  kStatusGroup_HAL_ADC_SENSOR = 130,
  kStatusGroup_TIMERMANAGER = 135,
  kStatusGroup_SERIALMANAGER = 136,
  kStatusGroup_LED = 137,
  kStatusGroup_BUTTON = 138,
  kStatusGroup_EXTERN_EEPROM = 139,
  kStatusGroup_SHELL = 140,
  kStatusGroup_MEM_MANAGER = 141,
  kStatusGroup_LIST = 142,
  kStatusGroup_OSA = 143,
  kStatusGroup_COMMON_TASK = 144,
  kStatusGroup_MSG = 145,
  kStatusGroup_SDK_OCOTP = 146,
  kStatusGroup_SDK_FLEXSPINOR = 147,
  kStatusGroup_CODEC = 148,
  kStatusGroup_ASRC = 149,
  kStatusGroup_OTFAD = 150,
  kStatusGroup_SDIOSLV = 151,
  kStatusGroup_MECC = 152,
  kStatusGroup_ENET_QOS = 153,
  kStatusGroup_LOG = 154,
  kStatusGroup_I3CBUS = 155,
  kStatusGroup_QSCI = 156,
  kStatusGroup_ELEMU = 157,
  kStatusGroup_QUEUEDSPI = 158,
  kStatusGroup_POWER_MANAGER = 159,
  kStatusGroup_IPED = 160,
  kStatusGroup_ELS_PKC = 161,
  kStatusGroup_CSS_PKC = 162,
  kStatusGroup_HOSTIF = 163,
  kStatusGroup_CLIF = 164,
  kStatusGroup_BMA = 165,
  kStatusGroup_NETC = 166,
  kStatusGroup_ELE = 167,
  kStatusGroup_GLIKEY = 168
}
 Status group numbers. More...
 
enum  {
  kStatus_Success = MAKE_STATUS(kStatusGroup_Generic, 0),
  kStatus_Fail = MAKE_STATUS(kStatusGroup_Generic, 1),
  kStatus_ReadOnly = MAKE_STATUS(kStatusGroup_Generic, 2),
  kStatus_OutOfRange = MAKE_STATUS(kStatusGroup_Generic, 3),
  kStatus_InvalidArgument = MAKE_STATUS(kStatusGroup_Generic, 4),
  kStatus_Timeout = MAKE_STATUS(kStatusGroup_Generic, 5),
  kStatus_NoTransferInProgress,
  kStatus_Busy = MAKE_STATUS(kStatusGroup_Generic, 7),
  kStatus_NoData
}
 Generic status return codes. More...
 

Functions

void SDK_DelayAtLeastUs (uint32_t delayTime_us, uint32_t coreClock_Hz)
 Delay at least for some time. More...
 
static uint32_t DisableGlobalIRQ (void)
 Disable the global IRQ.
 
static void EnableGlobalIRQ (uint32_t irqSts)
 Enable the global IRQ.
 
static bool isIRQAllowed (void)
 Check if currently core is able to response IRQ.
 
void SDK_DelayCoreCycles (uint32_t u32Num)
 Delay core cycles. More...
 
uint32_t SDK_CovertUsToCount (uint32_t u32Us, uint32_t u32Hz)
 Covert us to count with fixed-point calculation. More...
 
uint32_t SDK_CovertCountToUs (uint32_t u32Count, uint32_t u32Hz)
 Covert count to us with fixed-point calculation. More...
 
uint32_t SDK_CovertMsToCount (uint32_t u32Ms, uint32_t u32Hz)
 Covert ms to count with fixed-point calculation. More...
 
uint32_t SDK_CovertCountToMs (uint32_t u32Count, uint32_t u32Hz)
 Covert count to ms with fixed-point calculation. More...
 
void SDK_DelayAtLeastMs (uint32_t delayTime_ms, uint32_t coreClock_Hz)
 Delay at least for some time in millisecond unit. More...
 

Driver version

#define FSL_COMMON_DRIVER_VERSION   (MAKE_VERSION(2, 4, 1))
 common driver version. More...
 

Debug console type definition.

#define DEBUG_CONSOLE_DEVICE_TYPE_NONE   0U
 No debug console. More...
 
#define DEBUG_CONSOLE_DEVICE_TYPE_UART   1U
 Debug console based on UART. More...
 
#define DEBUG_CONSOLE_DEVICE_TYPE_LPUART   2U
 Debug console based on LPUART. More...
 
#define DEBUG_CONSOLE_DEVICE_TYPE_LPSCI   3U
 Debug console based on LPSCI. More...
 
#define DEBUG_CONSOLE_DEVICE_TYPE_USBCDC   4U
 Debug console based on USBCDC. More...
 
#define DEBUG_CONSOLE_DEVICE_TYPE_FLEXCOMM   5U
 Debug console based on FLEXCOMM. More...
 
#define DEBUG_CONSOLE_DEVICE_TYPE_IUART   6U
 Debug console based on i.MX UART. More...
 
#define DEBUG_CONSOLE_DEVICE_TYPE_VUSART   7U
 Debug console based on LPC_VUSART. More...
 
#define DEBUG_CONSOLE_DEVICE_TYPE_MINI_USART   8U
 Debug console based on LPC_USART. More...
 
#define DEBUG_CONSOLE_DEVICE_TYPE_SWO   9U
 Debug console based on SWO. More...
 
#define DEBUG_CONSOLE_DEVICE_TYPE_QSCI   10U
 Debug console based on QSCI. More...
 

Min/max macros

#define MIN(a, b)   (((a) < (b)) ? (a) : (b))
 Computes the minimum of a and b. More...
 
#define MAX(a, b)   (((a) > (b)) ? (a) : (b))
 Computes the maximum of a and b. More...
 

UINT16_MAX/UINT32_MAX value

#define UINT16_MAX   ((uint16_t)-1)
 Max value of uint16_t type. More...
 
#define UINT32_MAX   ((uint32_t)-1)
 Max value of uint32_t type. More...
 

Timer utilities

#define USEC_TO_COUNT(us, clockFreqInHz)   SDK_CovertUsToCount(us, clockFreqInHz)
 Macro to convert a microsecond period to raw count value.
 
#define COUNT_TO_USEC(count, clockFreqInHz)   SDK_CovertCountToUs(count, clockFreqInHz)
 Macro to convert a raw count value to microsecond.
 
#define MSEC_TO_COUNT(ms, clockFreqInHz)   SDK_CovertMsToCount(ms, clockFreqInHz)
 Macro to convert a millisecond period to raw count value.
 
#define COUNT_TO_MSEC(count, clockFreqInHz)   SDK_CovertCountToMs(count, clockFreqInHz)
 Macro to convert a raw count value to millisecond.
 

Alignment variable definition macros

#define SDK_ALIGN(var, alignbytes)   var __attribute__((aligned(alignbytes)))
 Macro to define a variable with alignbytes alignment.
 
#define AT_NONCACHEABLE_SECTION(var)   var
 
#define AT_NONCACHEABLE_SECTION_ALIGN(var, alignbytes)   var __attribute__((aligned(alignbytes)))
 
#define AT_NONCACHEABLE_SECTION_INIT(var)   var
 
#define AT_NONCACHEABLE_SECTION_ALIGN_INIT(var, alignbytes)   var __attribute__((aligned(alignbytes)))
 

Interrupt

DSC interrupt controller uses the same bit-filed to control interrupt enable status and priority, to provide compatible APIs, SDK uses a interrupt priority table, thus application could control the interrupt enable/disable, and interrupt priority independently.

Also, the API EnableIRQWithPriority could be used to enable the interrupt and set the priority at the same time.

API implementation:

  1. When calling EnableIRQ, if the interrupt priority in priority table is valid, then set the interrupt priority level to the value in priority table If interrupt priority in priority table is invalid, then set the interrupt priority level to SDK_DSC_DEFAULT_INT_PRIO.
  2. When calling IRQ_SetPriority, if the interrupt is already enabled, new priority is set to interrupt controller, meanwhile the priority table is updated accordingly. If the interrupt is not enabled, new priority value is saved to priority table , and takes effect when calling EnableIRQ.

The interrupt functions configure INTC module, application could call the INTC driver directly for the same purpose.

status_t EnableIRQWithPriority (IRQn_Type irq, uint8_t priNum)
 Enable the IRQ, and also set the interrupt priority. More...
 
status_t DisableIRQ (IRQn_Type irq)
 Disable specific interrupt. More...
 
status_t EnableIRQ (IRQn_Type irq)
 Enable specific interrupt. More...
 
status_t IRQ_SetPriority (IRQn_Type irq, uint8_t priNum)
 Set the IRQ priority. More...
 

Macro Definition Documentation

#define FSL_DRIVER_TRANSFER_DOUBLE_WEAK_IRQ   1
#define MAKE_STATUS (   group,
  code 
)    ((((group)*100L) + (code)))
#define MAKE_VERSION (   major,
  minor,
  bugfix 
)    (((major)*65536L) + ((minor)*256L) + (bugfix))

The driver version is a 32-bit number, for both 32-bit platforms(such as Cortex M) and 16-bit platforms(such as DSC).

| Unused    || Major Version || Minor Version ||  Bug Fix    |
31        25  24           17  16            9  8            0
#define FSL_COMMON_DRIVER_VERSION   (MAKE_VERSION(2, 4, 1))
#define DEBUG_CONSOLE_DEVICE_TYPE_NONE   0U
#define DEBUG_CONSOLE_DEVICE_TYPE_UART   1U
#define DEBUG_CONSOLE_DEVICE_TYPE_LPUART   2U
#define DEBUG_CONSOLE_DEVICE_TYPE_LPSCI   3U
#define DEBUG_CONSOLE_DEVICE_TYPE_USBCDC   4U
#define DEBUG_CONSOLE_DEVICE_TYPE_FLEXCOMM   5U
#define DEBUG_CONSOLE_DEVICE_TYPE_IUART   6U
#define DEBUG_CONSOLE_DEVICE_TYPE_VUSART   7U
#define DEBUG_CONSOLE_DEVICE_TYPE_MINI_USART   8U
#define DEBUG_CONSOLE_DEVICE_TYPE_SWO   9U
#define DEBUG_CONSOLE_DEVICE_TYPE_QSCI   10U
#define MIN (   a,
 
)    (((a) < (b)) ? (a) : (b))
#define MAX (   a,
 
)    (((a) > (b)) ? (a) : (b))
#define ARRAY_SIZE (   x)    (sizeof(x) / sizeof((x)[0]))
#define UINT16_MAX   ((uint16_t)-1)
#define UINT32_MAX   ((uint32_t)-1)
#define SUPPRESS_FALL_THROUGH_WARNING ( )

To suppress this warning, "SUPPRESS_FALL_THROUGH_WARNING();" need to be added at the end of each case section which misses "break;"statement.

#define SDK_DSC_DEFAULT_INT_PRIO   1U
#define PeriphReadReg (   reg)    (reg)

Example: val = PeriphReadReg(OCCS->OSCTL2);

Parameters
regRegister name.
Returns
The value of register.
#define PeriphWriteReg (   reg,
  data 
)    (reg) = (data)

Example: PeriphWriteReg(OCCS->OSCTL2, 0x278U);

Parameters
regRegister name.
dataData wrote to register.
#define PeriphSetBits (   reg,
  bitMask 
)    (reg) |= (bitMask)

Example: PeriphSetBits(OCCS->OSCTL2, 0x12U);

Parameters
regRegister name.
bitMaskBits mask, set bits will be set in the register.
#define PeriphClearBits (   reg,
  bitMask 
)    (reg) &= (~(bitMask))

Example: PeriphClearBits(OCCS->OSCTL2, 0x12U);

Parameters
regRegister name.
bitMaskBits mask, set bits will be cleared in the register.
#define PeriphInvertBits (   reg,
  bitMask 
)    (reg) ^= (bitMask)

Example: PeriphInvertBits(OCCS->OSCTL2, 0x12U);

Parameters
regRegister name.
bitMaskBits mask, set bits will be inverted in the register.
#define PeriphGetBits (   reg,
  bitMask 
)    ((reg) & (bitMask))

Example: val = PeriphGetBits(OCCS->OSCTL2, 0x23U);

Parameters
regRegister name.
bitMaskBits mask, specify the getting bits.
Returns
The value of specified bits.
#define PeriphWriteBitGroup (   reg,
  bitMask,
  bitValue 
)    (reg) = ((reg) & ~(bitMask)) | ((bitValue) & (bitMask))

Example: PeriphWriteBitGroup(OCCS->DIVBY, OCCS_DIVBY_COD_MASK, OCCS_DIVBY_COD(23U)); PeriphWriteBitGroup(OCCS->DIVBY, OCCS_DIVBY_COD_MASK | OCCS_DIVBY_PLLDB_MASK, \ OCCS_DIVBY_COD(23U) | OCCS_DIVBY_PLLDB(49U));

Parameters
regRegister name.
bitMaskBits mask, mask of the group of bits.
bitValueThis value will be written into the bit group specified by parameter bitMask.
#define PeriphSafeClearFlags (   reg,
  allFlagsMask,
  flagMask 
)    (reg) = ((reg) & (~(allFlagsMask))) | ((flagMask) & (allFlagsMask))

This macro is useful when a register is comprised by normal read-write bits and cleared-by-write-one bits. Example: PeriphSafeClearFlags(PWMA->FAULT[0].FSTS, PWM_FSTS_FFLAG_MASK, PWM_FSTS_FFLAG(2));

Parameters
regRegister name.
allFlagsMaskMask for all flags which are active-high and are cleared-by-write-one.
flagMaskThe selected flags(cleared-by-write-one) which are supposed to be cleared.
#define PeriphSafeClearBits (   reg,
  allFlagsMask,
  bitMask 
)    (reg) = ((reg) & (~((allFlagsMask) | (bitMask))))

This macro is useful when a register is comprised by normal read-write bits and cleared-by-write-one bits. Example: PeriphSafeClearBits(PWMA->FAULT[0].FSTS, PWM_FSTS_FFLAG_MASK, PWM_FSTS_FHALF(2));

Parameters
regRegister name.
allFlagsMaskMask for all flags which are active-high and are cleared-by-write-one.
bitMaskThe selected bits which are supposed to be cleared.
#define PeriphSafeSetBits (   reg,
  allFlagsMask,
  bitMask 
)    (reg) = ((reg) & (~(allFlagsMask))) | ((bitMask) & (~(allFlagsMask)))

This macro is useful when a register is comprised by normal read-write bits and cleared-by-write-one bits. Example: PeriphSafeSetBits(PWMA->FAULT[0].FSTS, PWM_FSTS_FFLAG_MASK, PWM_FSTS_FHALF(2));

Parameters
regRegister name.
allFlagsMaskMask for all flags which are active-high and are cleared-by-write-one.
bitMaskThe selected bits which are supposed to be set.
#define PeriphSafeWriteBitGroup (   reg,
  allFlagsMask,
  bitMask,
  bitValue 
)    (reg) = ((reg) & (~((allFlagsMask) | (bitMask)))) | ((bitValue) & (bitMask) & (~(allFlagsMask)))

This macro is useful when a register is comprised by normal read-write bits and cleared-by-write-one bits. Example: PeriphSafeWriteBitGroup(PWMA->FAULT[0].FSTS, PWM_FSTS_FFLAG_MASK, PWM_FSTS_FHALF_MASK, PWM_FSTS_FHALF(3U)); PeriphSafeWriteBitGroup(PWMA->FAULT[0].FSTS, PWM_FSTS_FFLAG_MASK, PWM_FSTS_FHALF_MASK | PWM_FSTS_FFULL_MASK, \ PWM_FSTS_FHALF(3U) | PWM_FSTS_FFULL(2U));

Parameters
regRegister name.
allFlagsMaskMask for all flags which are active-high and are cleared-by-write-one.
bitMaskBits mask, mask of the group of bits.
bitValueThis value will be written into the bit group specified by parameter bitMask.
#define SDK_GET_REGISTER_BYTE_ADDR (   ipType,
  ipBase,
  regName 
)    ((2UL * ((uint32_t)(ipBase))) + ((uint32_t)(uint8_t *)&(((ipType *)0)->regName)))

This macro is useful when a register byte address is required, especially in SDM mode. Example: SDK_GET_REGISTER_BYTE_ADDR(ADC_Type, ADC, RSLT[0]);

Parameters
ipTypeIP register mapping struct type.
ipBaseIP instance base pointer, WORD address.
regNameMember register name of IP register mapping struct.

Typedef Documentation

typedef int32_t status_t

Enumeration Type Documentation

Enumerator
kStatusGroup_Generic 

Group number for generic status codes.

kStatusGroup_FLASH 

Group number for FLASH status codes.

kStatusGroup_LPSPI 

Group number for LPSPI status codes.

kStatusGroup_FLEXIO_SPI 

Group number for FLEXIO SPI status codes.

kStatusGroup_DSPI 

Group number for DSPI status codes.

kStatusGroup_FLEXIO_UART 

Group number for FLEXIO UART status codes.

kStatusGroup_FLEXIO_I2C 

Group number for FLEXIO I2C status codes.

kStatusGroup_LPI2C 

Group number for LPI2C status codes.

kStatusGroup_UART 

Group number for UART status codes.

kStatusGroup_I2C 

Group number for UART status codes.

kStatusGroup_LPSCI 

Group number for LPSCI status codes.

kStatusGroup_LPUART 

Group number for LPUART status codes.

kStatusGroup_SPI 

Group number for SPI status code.

kStatusGroup_XRDC 

Group number for XRDC status code.

kStatusGroup_SEMA42 

Group number for SEMA42 status code.

kStatusGroup_SDHC 

Group number for SDHC status code.

kStatusGroup_SDMMC 

Group number for SDMMC status code.

kStatusGroup_SAI 

Group number for SAI status code.

kStatusGroup_MCG 

Group number for MCG status codes.

kStatusGroup_SCG 

Group number for SCG status codes.

kStatusGroup_SDSPI 

Group number for SDSPI status codes.

kStatusGroup_FLEXIO_I2S 

Group number for FLEXIO I2S status codes.

kStatusGroup_FLEXIO_MCULCD 

Group number for FLEXIO LCD status codes.

kStatusGroup_FLASHIAP 

Group number for FLASHIAP status codes.

kStatusGroup_FLEXCOMM_I2C 

Group number for FLEXCOMM I2C status codes.

kStatusGroup_I2S 

Group number for I2S status codes.

kStatusGroup_IUART 

Group number for IUART status codes.

kStatusGroup_CSI 

Group number for CSI status codes.

kStatusGroup_MIPI_DSI 

Group number for MIPI DSI status codes.

kStatusGroup_SDRAMC 

Group number for SDRAMC status codes.

kStatusGroup_POWER 

Group number for POWER status codes.

kStatusGroup_ENET 

Group number for ENET status codes.

kStatusGroup_PHY 

Group number for PHY status codes.

kStatusGroup_TRGMUX 

Group number for TRGMUX status codes.

kStatusGroup_SMARTCARD 

Group number for SMARTCARD status codes.

kStatusGroup_LMEM 

Group number for LMEM status codes.

kStatusGroup_QSPI 

Group number for QSPI status codes.

kStatusGroup_DMA 

Group number for DMA status codes.

kStatusGroup_EDMA 

Group number for EDMA status codes.

kStatusGroup_DMAMGR 

Group number for DMAMGR status codes.

kStatusGroup_FLEXCAN 

Group number for FlexCAN status codes.

kStatusGroup_LTC 

Group number for LTC status codes.

kStatusGroup_FLEXIO_CAMERA 

Group number for FLEXIO CAMERA status codes.

kStatusGroup_LPC_SPI 

Group number for LPC_SPI status codes.

kStatusGroup_LPC_USART 

Group number for LPC_USART status codes.

kStatusGroup_DMIC 

Group number for DMIC status codes.

kStatusGroup_SDIF 

Group number for SDIF status codes.

kStatusGroup_SPIFI 

Group number for SPIFI status codes.

kStatusGroup_OTP 

Group number for OTP status codes.

kStatusGroup_MCAN 

Group number for MCAN status codes.

kStatusGroup_CAAM 

Group number for CAAM status codes.

kStatusGroup_ECSPI 

Group number for ECSPI status codes.

kStatusGroup_USDHC 

Group number for USDHC status codes.

kStatusGroup_LPC_I2C 

Group number for LPC_I2C status codes.

kStatusGroup_DCP 

Group number for DCP status codes.

kStatusGroup_MSCAN 

Group number for MSCAN status codes.

kStatusGroup_ESAI 

Group number for ESAI status codes.

kStatusGroup_FLEXSPI 

Group number for FLEXSPI status codes.

kStatusGroup_MMDC 

Group number for MMDC status codes.

kStatusGroup_PDM 

Group number for MIC status codes.

kStatusGroup_SDMA 

Group number for SDMA status codes.

kStatusGroup_ICS 

Group number for ICS status codes.

kStatusGroup_SPDIF 

Group number for SPDIF status codes.

kStatusGroup_LPC_MINISPI 

Group number for LPC_MINISPI status codes.

kStatusGroup_HASHCRYPT 

Group number for Hashcrypt status codes.

kStatusGroup_LPC_SPI_SSP 

Group number for LPC_SPI_SSP status codes.

kStatusGroup_I3C 

Group number for I3C status codes.

kStatusGroup_LPC_I2C_1 

Group number for LPC_I2C_1 status codes.

kStatusGroup_NOTIFIER 

Group number for NOTIFIER status codes.

kStatusGroup_DebugConsole 

Group number for debug console status codes.

kStatusGroup_SEMC 

Group number for SEMC status codes.

kStatusGroup_ApplicationRangeStart 

Starting number for application groups.

kStatusGroup_IAP 

Group number for IAP status codes.

kStatusGroup_SFA 

Group number for SFA status codes.

kStatusGroup_SPC 

Group number for SPC status codes.

kStatusGroup_PUF 

Group number for PUF status codes.

kStatusGroup_TOUCH_PANEL 

Group number for touch panel status codes.

kStatusGroup_VBAT 

Group number for VBAT status codes.

kStatusGroup_XSPI 

Group number for XSPI status codes.

kStatusGroup_PNGDEC 

Group number for PNGDEC status codes.

kStatusGroup_JPEGDEC 

Group number for JPEGDEC status codes.

kStatusGroup_HAL_GPIO 

Group number for HAL GPIO status codes.

kStatusGroup_HAL_UART 

Group number for HAL UART status codes.

kStatusGroup_HAL_TIMER 

Group number for HAL TIMER status codes.

kStatusGroup_HAL_SPI 

Group number for HAL SPI status codes.

kStatusGroup_HAL_I2C 

Group number for HAL I2C status codes.

kStatusGroup_HAL_FLASH 

Group number for HAL FLASH status codes.

kStatusGroup_HAL_PWM 

Group number for HAL PWM status codes.

kStatusGroup_HAL_RNG 

Group number for HAL RNG status codes.

kStatusGroup_HAL_I2S 

Group number for HAL I2S status codes.

kStatusGroup_HAL_ADC_SENSOR 

Group number for HAL ADC SENSOR status codes.

kStatusGroup_TIMERMANAGER 

Group number for TiMER MANAGER status codes.

kStatusGroup_SERIALMANAGER 

Group number for SERIAL MANAGER status codes.

kStatusGroup_LED 

Group number for LED status codes.

kStatusGroup_BUTTON 

Group number for BUTTON status codes.

kStatusGroup_EXTERN_EEPROM 

Group number for EXTERN EEPROM status codes.

kStatusGroup_SHELL 

Group number for SHELL status codes.

kStatusGroup_MEM_MANAGER 

Group number for MEM MANAGER status codes.

kStatusGroup_LIST 

Group number for List status codes.

kStatusGroup_OSA 

Group number for OSA status codes.

kStatusGroup_COMMON_TASK 

Group number for Common task status codes.

kStatusGroup_MSG 

Group number for messaging status codes.

kStatusGroup_SDK_OCOTP 

Group number for OCOTP status codes.

kStatusGroup_SDK_FLEXSPINOR 

Group number for FLEXSPINOR status codes.

kStatusGroup_CODEC 

Group number for codec status codes.

kStatusGroup_ASRC 

Group number for codec status ASRC.

kStatusGroup_OTFAD 

Group number for codec status codes.

kStatusGroup_SDIOSLV 

Group number for SDIOSLV status codes.

kStatusGroup_MECC 

Group number for MECC status codes.

kStatusGroup_ENET_QOS 

Group number for ENET_QOS status codes.

kStatusGroup_LOG 

Group number for LOG status codes.

kStatusGroup_I3CBUS 

Group number for I3CBUS status codes.

kStatusGroup_QSCI 

Group number for QSCI status codes.

kStatusGroup_ELEMU 

Group number for ELEMU status codes.

kStatusGroup_QUEUEDSPI 

Group number for QSPI status codes.

kStatusGroup_POWER_MANAGER 

Group number for POWER_MANAGER status codes.

kStatusGroup_IPED 

Group number for IPED status codes.

kStatusGroup_ELS_PKC 

Group number for ELS PKC status codes.

kStatusGroup_CSS_PKC 

Group number for CSS PKC status codes.

kStatusGroup_HOSTIF 

Group number for HOSTIF status codes.

kStatusGroup_CLIF 

Group number for CLIF status codes.

kStatusGroup_BMA 

Group number for BMA status codes.

kStatusGroup_NETC 

Group number for NETC status codes.

kStatusGroup_ELE 

Group number for ELE status codes.

kStatusGroup_GLIKEY 

Group number for GLIKEY status codes.

anonymous enum
Enumerator
kStatus_Success 

Generic status for Success.

kStatus_Fail 

Generic status for Fail.

kStatus_ReadOnly 

Generic status for read only failure.

kStatus_OutOfRange 

Generic status for out of range access.

kStatus_InvalidArgument 

Generic status for invalid argument check.

kStatus_Timeout 

Generic status for timeout.

kStatus_NoTransferInProgress 

Generic status for no transfer in progress.

kStatus_Busy 

Generic status for module is busy.

kStatus_NoData 

Generic status for no data is found for the operation.

Function Documentation

void SDK_DelayAtLeastUs ( uint32_t  delayTime_us,
uint32_t  coreClock_Hz 
)

Please note that, this API uses while loop for delay, different run-time environments make the time not precise, if precise delay count was needed, please implement a new delay function with hardware timer.

Parameters
delayTime_usDelay time in unit of microsecond.
coreClock_HzCore clock frequency with Hz.
status_t EnableIRQWithPriority ( IRQn_Type  irq,
uint8_t  priNum 
)
Note
The parameter priNum is range in 1~3, and its value is NOT directly map to interrupt priority.
  • Some IPs maps 1 to priority 1, 2 to priority 2, 3 to priority 3
  • Some IPs maps 1 to priority 0, 2 to priority 1, 3 to priority 2

User should check chip's RM to get its corresponding interrupt priority.

When priNum set as 0, then SDK_DSC_DEFAULT_INT_PRIO is set instead. When priNum set as number larger than 3, then only the 2 LSB take effect, for example, setting priNum to 5 is the same with setting it to 1.

This function configures INTC module, application could call the INTC driver directly for the same purpose.

Parameters
irqThe IRQ to enable.
priNumPriority number set to interrupt controller register. Larger number means higher priority. The allowed range is 1~3, and its value is NOT directly map to interrupt priority. In other words, the same priority number means different interrupt priority levels for different IRQ, please check reference manual for the relationship. When pass in 0, then SDK_DSC_DEFAULT_INT_PRIO is set to priority register.
Returns
Currently only returns kStatus_Success, will enhance in the future.
status_t DisableIRQ ( IRQn_Type  irq)

This function configures INTC module, application could call the INTC driver directly for the same purpose.

Parameters
irqThe IRQ to disable.
Returns
Currently only returns kStatus_Success, will enhance in the future.
status_t EnableIRQ ( IRQn_Type  irq)

The recommended workflow is calling IRQ_SetPriority first, then call EnableIRQ. If IRQ_SetPriority is not called first, then the interrupt is enabled with default priority value SDK_DSC_DEFAULT_INT_PRIO.

Another recommended workflow is calling EnableIRQWithPriority directly, it is the same with calling IRQ_SetPriority + EnableIRQ.

This function configures INTC module, application could call the INTC driver directly for the same purpose.

Parameters
irqThe IRQ to enable.
Returns
Currently only returns kStatus_Success, will enhance in the future.
status_t IRQ_SetPriority ( IRQn_Type  irq,
uint8_t  priNum 
)
Note
The parameter priNum is range in 1~3, and its value is NOT directly map to interrupt priority.
  • Some IPs maps 1 to priority 1, 2 to priority 2, 3 to priority 3
  • Some IPs maps 1 to priority 0, 2 to priority 1, 3 to priority 2

User should check chip's RM to get its corresponding interrupt priority

When priNum set as 0, then SDK_DSC_DEFAULT_INT_PRIO is set instead. When priNum set as number larger than 3, then only the 2 LSB take effect, for example, setting priNum to 5 is the same with setting it to 1.

This function configures INTC module, application could call the INTC driver directly for the same purpose.

Parameters
irqThe IRQ to set.
priNumPriority number set to interrupt controller register. Larger number means higher priority, 0 means disable the interrupt. The allowed range is 0~3, and its value is NOT directly map to interrupt priority. In other words, the same priority number means different interrupt priority levels for different IRQ, please check reference manual for the relationship.
Returns
Currently only returns kStatus_Success, will enhance in the future.
void SDK_DelayCoreCycles ( uint32_t  u32Num)

Please note that, this API uses software loop for delay, the actual delayed time depends on core clock frequency, where the function is located (ram or flash), flash clock, possible interrupt.

Parameters
u32NumNumber of core clock cycle which needs to be delayed.
uint32_t SDK_CovertUsToCount ( uint32_t  u32Us,
uint32_t  u32Hz 
)
Note
u32Us must not be greater than 4294
Parameters
u32UsTime in us
u32HzClock frequency in Hz
Returns
The count value
uint32_t SDK_CovertCountToUs ( uint32_t  u32Count,
uint32_t  u32Hz 
)
Note
u32Hz must not be greater than 429496729UL(0xFFFFFFFFUL/10UL)
Parameters
u32CountCount value
u32HzClock frequency in Hz
Returns
The us value
uint32_t SDK_CovertMsToCount ( uint32_t  u32Ms,
uint32_t  u32Hz 
)
Note
u32Ms must not be greater than 42949UL @ u32Hz = 100M
Parameters
u32MsTime in us
u32HzClock frequency in Hz
Returns
The count value
uint32_t SDK_CovertCountToMs ( uint32_t  u32Count,
uint32_t  u32Hz 
)
Note
u32Hz must not be greater than 429496729UL(0xFFFFFFFFUL/10UL)
Parameters
u32CountCount value
u32HzClock frequency in Hz
Returns
The us value
void SDK_DelayAtLeastMs ( uint32_t  delayTime_ms,
uint32_t  coreClock_Hz 
)

Please note that, this API uses while loop for delay, different run-time environments make the time not precise, if precise delay count was needed, please implement a new delay function with hardware timer.

Parameters
delayTime_msDelay time in unit of millisecond.
coreClock_HzCore clock frequency with Hz.