MCUXpresso SDK API Reference Manual  Rev. 0
NXP Semiconductors
 All Data Structures Functions Variables Typedefs Enumerations Enumerator Groups Pages
MIPI CSI2 RX: MIPI CSI2 RX Driver

Overview

The MCUXpresso SDK provides a peripheral driver for the MIPI CSI-2 RX.

Data Structures

struct  csi2rx_config_t
 CSI2RX configuration. More...
 

Enumerations

enum  _csi2rx_data_lane {
  kCSI2RX_DataLane0 = (1U << 0U),
  kCSI2RX_DataLane1 = (1U << 1U),
  kCSI2RX_DataLane2 = (1U << 2U),
  kCSI2RX_DataLane3 = (1U << 3U)
}
 CSI2RX data lanes. More...
 
enum  _csi2rx_payload {
  kCSI2RX_PayloadGroup0Null = (1U << 0U),
  kCSI2RX_PayloadGroup0Blank = (1U << 1U),
  kCSI2RX_PayloadGroup0Embedded = (1U << 2U),
  kCSI2RX_PayloadGroup0YUV420_8Bit = (1U << 10U),
  kCSI2RX_PayloadGroup0YUV422_8Bit = (1U << 14U),
  kCSI2RX_PayloadGroup0YUV422_10Bit = (1U << 15U),
  kCSI2RX_PayloadGroup0RGB444 = (1U << 16U),
  kCSI2RX_PayloadGroup0RGB555 = (1U << 17U),
  kCSI2RX_PayloadGroup0RGB565 = (1U << 18U),
  kCSI2RX_PayloadGroup0RGB666 = (1U << 19U),
  kCSI2RX_PayloadGroup0RGB888 = (1U << 20U),
  kCSI2RX_PayloadGroup0Raw6 = (1U << 24U),
  kCSI2RX_PayloadGroup0Raw7 = (1U << 25U),
  kCSI2RX_PayloadGroup0Raw8 = (1U << 26U),
  kCSI2RX_PayloadGroup0Raw10 = (1U << 27U),
  kCSI2RX_PayloadGroup0Raw12 = (1U << 28U),
  kCSI2RX_PayloadGroup0Raw14 = (1U << 29U),
  kCSI2RX_PayloadGroup1UserDefined1 = (1U << 0U),
  kCSI2RX_PayloadGroup1UserDefined2 = (1U << 1U),
  kCSI2RX_PayloadGroup1UserDefined3 = (1U << 2U),
  kCSI2RX_PayloadGroup1UserDefined4 = (1U << 3U),
  kCSI2RX_PayloadGroup1UserDefined5 = (1U << 4U),
  kCSI2RX_PayloadGroup1UserDefined6 = (1U << 5U),
  kCSI2RX_PayloadGroup1UserDefined7 = (1U << 6U),
  kCSI2RX_PayloadGroup1UserDefined8 = (1U << 7U)
}
 CSI2RX payload type. More...
 
enum  _csi2rx_bit_error {
  kCSI2RX_BitErrorEccTwoBit = (1U << 0U),
  kCSI2RX_BitErrorEccOneBit = (1U << 1U)
}
 MIPI CSI2RX bit errors. More...
 
enum  csi2rx_ppi_error_t {
  kCSI2RX_PpiErrorSotHs,
  kCSI2RX_PpiErrorSotSyncHs,
  kCSI2RX_PpiErrorEsc,
  kCSI2RX_PpiErrorSyncEsc,
  kCSI2RX_PpiErrorControl
}
 MIPI CSI2RX PPI error types. More...
 
enum  _csi2rx_interrupt
 MIPI CSI2RX interrupt. More...
 
enum  _csi2rx_ulps_status {
  kCSI2RX_ClockLaneUlps = (1U << 0U),
  kCSI2RX_DataLane0Ulps = (1U << 1U),
  kCSI2RX_DataLane1Ulps = (1U << 2U),
  kCSI2RX_DataLane2Ulps = (1U << 3U),
  kCSI2RX_DataLane3Ulps = (1U << 4U),
  kCSI2RX_ClockLaneMark = (1U << 5U),
  kCSI2RX_DataLane0Mark = (1U << 6U),
  kCSI2RX_DataLane1Mark = (1U << 7U),
  kCSI2RX_DataLane2Mark = (1U << 8U),
  kCSI2RX_DataLane3Mark = (1U << 9U)
}
 MIPI CSI2RX D-PHY ULPS state. More...
 

Functions

void CSI2RX_Init (MIPI_CSI2RX_Type *base, const csi2rx_config_t *config)
 Enables and configures the CSI2RX peripheral module. More...
 
void CSI2RX_Deinit (MIPI_CSI2RX_Type *base)
 Disables the CSI2RX peripheral module. More...
 
static uint32_t CSI2RX_GetBitError (MIPI_CSI2RX_Type *base)
 Gets the MIPI CSI2RX bit error status. More...
 
static uint32_t CSI2RX_GetEccBitErrorPosition (uint32_t bitError)
 Get ECC one bit error bit position. More...
 
static uint32_t CSI2RX_GetUlpsStatus (MIPI_CSI2RX_Type *base)
 Gets the MIPI CSI2RX D-PHY ULPS status. More...
 
static uint32_t CSI2RX_GetPpiErrorDataLanes (MIPI_CSI2RX_Type *base, csi2rx_ppi_error_t errorType)
 Gets the MIPI CSI2RX D-PHY PPI error lanes. More...
 
static void CSI2RX_EnableInterrupts (MIPI_CSI2RX_Type *base, uint32_t mask)
 Enable the MIPI CSI2RX interrupts. More...
 
static void CSI2RX_DisableInterrupts (MIPI_CSI2RX_Type *base, uint32_t mask)
 Disable the MIPI CSI2RX interrupts. More...
 
static uint32_t CSI2RX_GetInterruptStatus (MIPI_CSI2RX_Type *base)
 Get the MIPI CSI2RX interrupt status. More...
 

Driver version

#define FSL_CSI2RX_DRIVER_VERSION   (MAKE_VERSION(2, 0, 4))
 CSI2RX driver version. More...
 

Data Structure Documentation

struct csi2rx_config_t

Data Fields

uint8_t laneNum
 Number of active lanes used for receiving data. More...
 
uint8_t tHsSettle_EscClk
 Number of rx_clk_esc clock periods for T_HS_SETTLE. More...
 

Field Documentation

uint8_t csi2rx_config_t::laneNum
uint8_t csi2rx_config_t::tHsSettle_EscClk

The T_HS_SETTLE should be in the range of 85ns + 6UI to 145ns + 10UI.

Macro Definition Documentation

#define FSL_CSI2RX_DRIVER_VERSION   (MAKE_VERSION(2, 0, 4))

Enumeration Type Documentation

Enumerator
kCSI2RX_DataLane0 

Data lane 0.

kCSI2RX_DataLane1 

Data lane 1.

kCSI2RX_DataLane2 

Data lane 2.

kCSI2RX_DataLane3 

Data lane 3.

Enumerator
kCSI2RX_PayloadGroup0Null 

NULL.

kCSI2RX_PayloadGroup0Blank 

Blank.

kCSI2RX_PayloadGroup0Embedded 

Embedded.

kCSI2RX_PayloadGroup0YUV420_8Bit 

Legacy YUV420 8 bit.

kCSI2RX_PayloadGroup0YUV422_8Bit 

YUV422 8 bit.

kCSI2RX_PayloadGroup0YUV422_10Bit 

YUV422 10 bit.

kCSI2RX_PayloadGroup0RGB444 

RGB444.

kCSI2RX_PayloadGroup0RGB555 

RGB555.

kCSI2RX_PayloadGroup0RGB565 

RGB565.

kCSI2RX_PayloadGroup0RGB666 

RGB666.

kCSI2RX_PayloadGroup0RGB888 

RGB888.

kCSI2RX_PayloadGroup0Raw6 

Raw 6.

kCSI2RX_PayloadGroup0Raw7 

Raw 7.

kCSI2RX_PayloadGroup0Raw8 

Raw 8.

kCSI2RX_PayloadGroup0Raw10 

Raw 10.

kCSI2RX_PayloadGroup0Raw12 

Raw 12.

kCSI2RX_PayloadGroup0Raw14 

Raw 14.

kCSI2RX_PayloadGroup1UserDefined1 

User defined 8-bit data type 1, 0x30.

kCSI2RX_PayloadGroup1UserDefined2 

User defined 8-bit data type 2, 0x31.

kCSI2RX_PayloadGroup1UserDefined3 

User defined 8-bit data type 3, 0x32.

kCSI2RX_PayloadGroup1UserDefined4 

User defined 8-bit data type 4, 0x33.

kCSI2RX_PayloadGroup1UserDefined5 

User defined 8-bit data type 5, 0x34.

kCSI2RX_PayloadGroup1UserDefined6 

User defined 8-bit data type 6, 0x35.

kCSI2RX_PayloadGroup1UserDefined7 

User defined 8-bit data type 7, 0x36.

kCSI2RX_PayloadGroup1UserDefined8 

User defined 8-bit data type 8, 0x37.

Enumerator
kCSI2RX_BitErrorEccTwoBit 

ECC two bit error has occurred.

kCSI2RX_BitErrorEccOneBit 

ECC one bit error has occurred.

Enumerator
kCSI2RX_PpiErrorSotHs 

CSI2RX DPHY PPI error ErrSotHS.

kCSI2RX_PpiErrorSotSyncHs 

CSI2RX DPHY PPI error ErrSotSync_HS.

kCSI2RX_PpiErrorEsc 

CSI2RX DPHY PPI error ErrEsc.

kCSI2RX_PpiErrorSyncEsc 

CSI2RX DPHY PPI error ErrSyncEsc.

kCSI2RX_PpiErrorControl 

CSI2RX DPHY PPI error ErrControl.

Enumerator
kCSI2RX_ClockLaneUlps 

Clock lane is in ULPS state.

kCSI2RX_DataLane0Ulps 

Data lane 0 is in ULPS state.

kCSI2RX_DataLane1Ulps 

Data lane 1 is in ULPS state.

kCSI2RX_DataLane2Ulps 

Data lane 2 is in ULPS state.

kCSI2RX_DataLane3Ulps 

Data lane 3 is in ULPS state.

kCSI2RX_ClockLaneMark 

Clock lane is in mark state.

kCSI2RX_DataLane0Mark 

Data lane 0 is in mark state.

kCSI2RX_DataLane1Mark 

Data lane 1 is in mark state.

kCSI2RX_DataLane2Mark 

Data lane 2 is in mark state.

kCSI2RX_DataLane3Mark 

Data lane 3 is in mark state.

Function Documentation

void CSI2RX_Init ( MIPI_CSI2RX_Type *  base,
const csi2rx_config_t config 
)
Parameters
baseCSI2RX peripheral address.
configCSI2RX module configuration structure.
void CSI2RX_Deinit ( MIPI_CSI2RX_Type *  base)
Parameters
baseCSI2RX peripheral address.
static uint32_t CSI2RX_GetBitError ( MIPI_CSI2RX_Type *  base)
inlinestatic

This function gets the RX bit error status, the return value could be compared with _csi2rx_bit_error. If one bit ECC error detected, the return value could be passed to the function CSI2RX_GetEccBitErrorPosition to get the position of the ECC error bit.

Example:

uint32_t bitError;
uint32_t bitErrorPosition;
bitError = CSI2RX_GetBitError(MIPI_CSI2RX);
{
Two bits error;
}
else if (kCSI2RX_BitErrorEccOneBit & bitError)
{
One bits error;
bitErrorPosition = CSI2RX_GetEccBitErrorPosition(bitError);
}
Parameters
baseCSI2RX peripheral address.
Returns
The RX bit error status.
static uint32_t CSI2RX_GetEccBitErrorPosition ( uint32_t  bitError)
inlinestatic

If CSI2RX_GetBitError detects ECC one bit error, this function could extract the error bit position from the return value of CSI2RX_GetBitError.

Parameters
bitErrorThe bit error returned by CSI2RX_GetBitError.
Returns
The position of error bit.
static uint32_t CSI2RX_GetUlpsStatus ( MIPI_CSI2RX_Type *  base)
inlinestatic

Example to check whether data lane 0 is in ULPS status.

uint32_t status = CSI2RX_GetUlpsStatus(MIPI_CSI2RX);
if (kCSI2RX_DataLane0Ulps & status)
{
Data lane 0 is in ULPS status.
}
Parameters
baseCSI2RX peripheral address.
Returns
The MIPI CSI2RX D-PHY ULPS status, it is OR'ed value or _csi2rx_ulps_status.
static uint32_t CSI2RX_GetPpiErrorDataLanes ( MIPI_CSI2RX_Type *  base,
csi2rx_ppi_error_t  errorType 
)
inlinestatic

This function checks the PPI error occurred on which data lanes, the returned value is OR'ed value of csi2rx_ppi_error_t. For example, if the ErrSotHS is detected, to check the ErrSotHS occurred on which data lanes, use like this:

uint32_t errorDataLanes = CSI2RX_GetPpiErrorDataLanes(MIPI_CSI2RX, kCSI2RX_PpiErrorSotHs);
if (kCSI2RX_DataLane0 & errorDataLanes)
{
ErrSotHS occurred on data lane 0.
}
if (kCSI2RX_DataLane1 & errorDataLanes)
{
ErrSotHS occurred on data lane 1.
}
Parameters
baseCSI2RX peripheral address.
errorTypeWhat kind of error to check.
Returns
The data lane mask that error errorType occurred.
static void CSI2RX_EnableInterrupts ( MIPI_CSI2RX_Type *  base,
uint32_t  mask 
)
inlinestatic

This function enables the MIPI CSI2RX interrupts. The interrupts to enable are passed in as an OR'ed value of _csi2rx_interrupt. For example, to enable one bit and two bit ECC error interrupts, use like this:

CSI2RX_EnableInterrupts(MIPI_CSI2RX, kCSI2RX_InterruptEccOneBitError | kCSI2RX_InterruptEccTwoBitError);
Parameters
baseCSI2RX peripheral address.
maskOR'ed value of _csi2rx_interrupt.
static void CSI2RX_DisableInterrupts ( MIPI_CSI2RX_Type *  base,
uint32_t  mask 
)
inlinestatic

This function disables the MIPI CSI2RX interrupts. The interrupts to disable are passed in as an OR'ed value of _csi2rx_interrupt. For example, to disable one bit and two bit ECC error interrupts, use like this:

CSI2RX_DisableInterrupts(MIPI_CSI2RX, kCSI2RX_InterruptEccOneBitError | kCSI2RX_InterruptEccTwoBitError);
Parameters
baseCSI2RX peripheral address.
maskOR'ed value of _csi2rx_interrupt.
static uint32_t CSI2RX_GetInterruptStatus ( MIPI_CSI2RX_Type *  base)
inlinestatic

This function returns the MIPI CSI2RX interrupts status as an OR'ed value of _csi2rx_interrupt.

Parameters
baseCSI2RX peripheral address.
Returns
OR'ed value of _csi2rx_interrupt.