/** * @brief Selects the specified I2C PEC position. * @param I2Cx: where x can be 1 or 2 to select the I2C peripheral. * @param I2C_PECPosition: specifies the PEC position. * This parameter can be one of the following values: * @arg I2C_PECPosition_Next: indicates that the next byte is PEC * @arg I2C_PECPosition_Current: indicates that current byte is PEC * * @note This function configures the same bit (POS) as I2C_NACKPositionConfig() * but is intended to be used in SMBUS mode while I2C_NACKPositionConfig() * is intended to used in I2C mode. * * @retval None */ void I2C_PECPositionConfig(I2C_TypeDef* I2Cx, uint16_t I2C_PECPosition) { /* Check the parameters */ assert_param(IS_I2C_ALL_PERIPH(I2Cx)); assert_param(IS_I2C_PEC_POSITION(I2C_PECPosition)); if(I2C_PECPosition == I2C_PECPosition_Next) { /* Next byte in shift register is PEC */ I2Cx->CR1 |= I2C_PECPosition_Next; } else { /* Current byte in shift register is PEC */ I2Cx->CR1 &= I2C_PECPosition_Current; } }
/******************************************************************************* * Function Name : I2C_PECPositionConfig * Description : Selects the specified I2C PEC position. * Input : - I2Cx: where x can be 1 or 2 to select the I2C peripheral. * - I2C_PECPosition: specifies the PEC position. * This parameter can be one of the following values: * - I2C_PECPosition_Next: PEC bit indicates that current * byte is PEC * - I2C_PECPosition_Current: PEC bit indicates that the * next byte is PEC * Output : None * Return : None *******************************************************************************/ void I2C_PECPositionConfig(I2C_TypeDef* I2Cx, u16 I2C_PECPosition) { /* Check the parameters */ assert_param(IS_I2C_PEC_POSITION(I2C_PECPosition)); if (I2C_PECPosition == I2C_PECPosition_Next) { /* PEC indicates that the next byte in shift register is PEC */ I2Cx->CR1 |= I2C_PECPosition_Next; } else { /* PEC indicates that the current byte in shift register is PEC */ I2Cx->CR1 &= I2C_PECPosition_Current; } }