Functions | |
cy_en_scb_i2c_status_t | Cy_SCB_I2C_Init (CySCB_Type *base, cy_stc_scb_i2c_config_t const *config, cy_stc_scb_i2c_context_t *context) |
Initializes the SCB for the I2C operation. More... | |
void | Cy_SCB_I2C_DeInit (CySCB_Type *base) |
De-initializes the SCB block and returns register values to default. More... | |
__STATIC_INLINE void | Cy_SCB_I2C_Enable (CySCB_Type *base) |
Enables the SCB block for the I2C operation. More... | |
void | Cy_SCB_I2C_Disable (CySCB_Type *base, cy_stc_scb_i2c_context_t *context) |
Disables the SCB block and clears context statuses. More... | |
uint32_t | Cy_SCB_I2C_SetDataRate (CySCB_Type *base, uint32_t dataRateHz, uint32_t scbClockHz) |
Configures the SCB to work at the desired data rate. More... | |
uint32_t | Cy_SCB_I2C_GetDataRate (CySCB_Type const *base, uint32_t scbClockHz) |
Returns the data rate for the selected SCB block. More... | |
__STATIC_INLINE void | Cy_SCB_I2C_SlaveSetAddress (CySCB_Type *base, uint8_t addr) |
Sets the slave address for the I2C slave. More... | |
__STATIC_INLINE uint32_t | Cy_SCB_I2C_SlaveGetAddress (CySCB_Type const *base) |
Returns the slave address of the I2C slave. More... | |
__STATIC_INLINE void | Cy_SCB_I2C_SlaveSetAddressMask (CySCB_Type *base, uint8_t addrMask) |
Sets the slave address mask for the I2C slave. More... | |
__STATIC_INLINE uint32_t | Cy_SCB_I2C_SlaveGetAddressMask (CySCB_Type const *base) |
Returns the slave address mask. More... | |
__STATIC_INLINE bool | Cy_SCB_I2C_IsBusBusy (CySCB_Type const *base) |
Checks whether the I2C bus is busy. More... | |
__STATIC_INLINE void | Cy_SCB_I2C_MasterSetLowPhaseDutyCycle (CySCB_Type *base, uint32_t clockCycles) |
This function sets the number of SCB clock cycles in the low phase of SCL. More... | |
__STATIC_INLINE void | Cy_SCB_I2C_MasterSetHighPhaseDutyCycle (CySCB_Type *base, uint32_t clockCycles) |
This function sets the number of SCB clock cycles in the high phase of SCL. More... | |
void | Cy_SCB_I2C_SetStretchThreshold (CySCB_Type const *base, uint32_t value) |
Sets the stretch threshold value. More... | |
uint32_t | Cy_SCB_I2C_GetStretchCount (CySCB_Type const *base) |
Provides the stretch count. More... | |
bool | Cy_SCB_I2C_IsStretchDetected (CySCB_Type const *base) |
Checks if stretch is detected on I2C SCL. More... | |
bool | Cy_SCB_I2C_IsSyncDetected (CySCB_Type const *base) |
Checks if synchronization is detected on I2C SCL. More... | |
bool | Cy_SCB_I2C_IsStretching (CySCB_Type const *base) |
Checks if I2C SCL is stretched by the block. More... | |
cy_en_scb_i2c_status_t Cy_SCB_I2C_Init | ( | CySCB_Type * | base, |
cy_stc_scb_i2c_config_t const * | config, | ||
cy_stc_scb_i2c_context_t * | context | ||
) |
Initializes the SCB for the I2C operation.
base | The pointer to the I2C SCB instance. |
config | The pointer to the configuration structure cy_stc_scb_i2c_config_t. |
context | The pointer to the context structure cy_stc_scb_i2c_context_t allocated by the user. The structure is used during the I2C operation for internal configuration and data retention. The user must not modify anything in this structure. |
void Cy_SCB_I2C_DeInit | ( | CySCB_Type * | base | ) |
De-initializes the SCB block and returns register values to default.
base | The pointer to the I2C SCB instance. |
__STATIC_INLINE void Cy_SCB_I2C_Enable | ( | CySCB_Type * | base | ) |
Enables the SCB block for the I2C operation.
base | The pointer to the I2C SCB instance. |
void Cy_SCB_I2C_Disable | ( | CySCB_Type * | base, |
cy_stc_scb_i2c_context_t * | context | ||
) |
Disables the SCB block and clears context statuses.
Note that after the block is disabled, the TX and RX FIFOs and hardware statuses are cleared. Also, the hardware stops driving the output and ignores the input.
base | The pointer to the I2C SCB instance. |
context | The pointer to the context structure cy_stc_scb_i2c_context_t allocated by the user. The structure is used during the I2C operation for internal configuration and data retention. The user must not modify anything in this structure. |
uint32_t Cy_SCB_I2C_SetDataRate | ( | CySCB_Type * | base, |
uint32_t | dataRateHz, | ||
uint32_t | scbClockHz | ||
) |
Configures the SCB to work at the desired data rate.
base | The pointer to the I2C SCB instance. |
dataRateHz | The desired data Rate in Hz. |
scbClockHz | The frequency of the clock connected to the SCB in Hz. |
uint32_t Cy_SCB_I2C_GetDataRate | ( | CySCB_Type const * | base, |
uint32_t | scbClockHz | ||
) |
Returns the data rate for the selected SCB block.
base | The pointer to the I2C SCB instance. |
scbClockHz | The frequency of the clock connected to the SCB in Hz. |
__STATIC_INLINE void Cy_SCB_I2C_SlaveSetAddress | ( | CySCB_Type * | base, |
uint8_t | addr | ||
) |
Sets the slave address for the I2C slave.
base | The pointer to the I2C SCB instance. |
addr | The 7-bit right justified slave address. |
__STATIC_INLINE uint32_t Cy_SCB_I2C_SlaveGetAddress | ( | CySCB_Type const * | base | ) |
Returns the slave address of the I2C slave.
base | The pointer to the I2C SCB instance. |
__STATIC_INLINE void Cy_SCB_I2C_SlaveSetAddressMask | ( | CySCB_Type * | base, |
uint8_t | addrMask | ||
) |
Sets the slave address mask for the I2C slave.
The LSBit must always be 0. In all other bit positions a 1 indicates that the incoming address must match the corresponding bit in the slave address. A 0 in the mask means that the incoming address does not need to match. Example Slave Address = 0x0C. Slave Address Mask = 0x08. This means that the hardware will accept both 0x08 and 0x0C as valid addresses.
base | The pointer to the I2C SCB instance. |
addrMask | The 8-bit address mask, the upper 7 bits correspond to the slave address. LSBit must always be 0. |
__STATIC_INLINE uint32_t Cy_SCB_I2C_SlaveGetAddressMask | ( | CySCB_Type const * | base | ) |
Returns the slave address mask.
base | The pointer to the I2C SCB instance. |
__STATIC_INLINE bool Cy_SCB_I2C_IsBusBusy | ( | CySCB_Type const * | base | ) |
Checks whether the I2C bus is busy.
base | The pointer to the I2C SCB instance. |
__STATIC_INLINE void Cy_SCB_I2C_MasterSetLowPhaseDutyCycle | ( | CySCB_Type * | base, |
uint32_t | clockCycles | ||
) |
This function sets the number of SCB clock cycles in the low phase of SCL.
If Cy_SCB_I2C_SetDataRate is called after this function, the values specified in this function are overwritten.
base | The pointer to the I2C SCB instance. |
clockCycles | The number of SCB clock cycles in the low phase of SCL. The valid range is 7 to 16. |
Please refer to the section I2C Master Clock Synchronization for more information.
__STATIC_INLINE void Cy_SCB_I2C_MasterSetHighPhaseDutyCycle | ( | CySCB_Type * | base, |
uint32_t | clockCycles | ||
) |
This function sets the number of SCB clock cycles in the high phase of SCL.
If Cy_SCB_I2C_SetDataRate is called after this function, the values specified in this function get overwritten.
base | The pointer to the I2C SCB instance. |
clockCycles | The number of SCB clock cycles in the high phase of SCL. The valid range is 5 to 16. |
void Cy_SCB_I2C_SetStretchThreshold | ( | CySCB_Type const * | base, |
uint32_t | value | ||
) |
Sets the stretch threshold value.
base | The pointer to the I2C SCB instance. |
value | The stretch threshold value to be set. Typically it is the SCL turaround delay (including IO cell delay, SCL rise time, analog filter delay), in number of clk_scb cycles. |
uint32_t Cy_SCB_I2C_GetStretchCount | ( | CySCB_Type const * | base | ) |
Provides the stretch count.
The count is started when the I2C device begins to drive high phase on internal SCL output signal and is stalled when it detects high level on SCL input signal.
base | The pointer to the I2C SCB instance. |
bool Cy_SCB_I2C_IsStretchDetected | ( | CySCB_Type const * | base | ) |
Checks if stretch is detected on I2C SCL.
base | The pointer to the I2C SCB instance. |
bool Cy_SCB_I2C_IsSyncDetected | ( | CySCB_Type const * | base | ) |
Checks if synchronization is detected on I2C SCL.
base | The pointer to the I2C SCB instance. |
bool Cy_SCB_I2C_IsStretching | ( | CySCB_Type const * | base | ) |
Checks if I2C SCL is stretched by the block.
base | The pointer to the I2C SCB instance. |