General¶
-
group
group_scb_i2c_general_functions
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.
note
If SCB is already enabled, ensure that the SCB block is disabled Cy_SCB_I2C_Disable before calling this function.
- Parameters
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.
- Returns
-
void
Cy_SCB_I2C_DeInit
(CySCB_Type *base) De-initializes the SCB block and returns register values to default.
note
Ensure that the SCB block is disabled Cy_SCB_I2C_Disable before calling this function.
- Parameters
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.
note
Ensure SCB is initialized with Cy_SCB_I2C_Init before calling this function
- Parameters
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.
note
Calling this function when I2C is busy (master preforms transaction or slave was addressed and is communicating with master) may cause transaction corruption because the hardware stops driving the outputs and ignores the inputs. Ensure that I2C is not busy before calling this function.
- Parameters
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.
note
This function does not change the values of the clock divider connected to the SCB, it changes only the SCB clock oversample registers. If this function is not able to achieve the desired data rate, then the clock divider must be adjusted. Call this function only while the SCB is disabled. For the slave, this function only checks that the attached clock is fast enough to meet the desired data rate. It does not change any registers.
- Parameters
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.
- Returns
The achieved data rate in Hz.
When zero value is returned there is an error in the input parameters: data rate or clk_scb is out of valid range.
-
uint32_t
Cy_SCB_I2C_GetDataRate
(CySCB_Type const *base, uint32_t scbClockHz) Returns the data rate for the selected SCB block.
- Parameters
base – The pointer to the I2C SCB instance.
scbClockHz – The frequency of the clock connected to the SCB in Hz.
- Returns
The data rate in Hz.
For slave mode when zero value is returned the clk_scb is out of valid range.
-
__STATIC_INLINE void Cy_SCB_I2C_SlaveSetAddress (CySCB_Type *base, uint8_t addr)
Sets the slave address for the I2C slave.
- Parameters
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.
- Parameters
base – The pointer to the I2C SCB instance.
- Returns
The 7-bit right justified slave address.
-
__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.
- Parameters
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.
- Parameters
base – The pointer to the I2C SCB instance.
- Returns
The 8-bit address mask, the upper 7 bits correspond to the slave address. LSBit must always be 0.
-
__STATIC_INLINE bool Cy_SCB_I2C_IsBusBusy (CySCB_Type const *base)
Checks whether the I2C bus is busy.
note
After the SCB block is enabled or reset, the valid bus busy-status returns after half of the SCL period.
- Parameters
base – The pointer to the I2C SCB instance.
- Returns
A bus status: busy or not busy.
-
__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.
note
This function should be used at your own risk. Changing the number of clock cycles in a phase of SCL may violate the I2C specification. Make this change only while the block is disabled.
- Parameters
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.
-
__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.
note
This function should be used at your own risk. Changing the number of clock cycles in a phase of SCL may violate the I2C specification. Make this change only while the block is disabled.
- Parameters
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.
-
cy_en_scb_i2c_status_t