CIU32_L051_M307R/Peripheral/CIU32L051_Lib/Source/ciu32l051_std_i2c.c

109 lines
2.8 KiB
C
Raw Permalink Normal View History

/************************************************************************************************/
/**
* @file ciu32l051_std_i2c.c
* @author MCU Ecosystem Development Team
* @brief I2C STD<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* ʵ<EFBFBD><EFBFBD>I2C<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>API<EFBFBD><EFBFBD>
*
*
**************************************************************************************************
* @attention
* Copyright (c) CEC Huada Electronic Design Co.,Ltd. All rights reserved.
*
**************************************************************************************************
*/
/************************************************************************************************/
/**
* @addtogroup CIU32L051_STD_Driver
* @{
*/
/**
* @addtogroup I2C
* @{
*
*/
/************************************************************************************************/
/*------------------------------------------includes--------------------------------------------*/
#include "ciu32l051_std.h"
#ifdef STD_I2C_PERIPHERAL_USED
/*-------------------------------------------functions------------------------------------------*/
/************************************************************************************************/
/**
* @addtogroup I2C_External_Functions
* @{
*
*/
/************************************************************************************************/
/**
* @brief I2C<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param i2cx I2C<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param i2c_init_param I2C<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
void std_i2c_init(I2C_t *i2cx, std_i2c_init_t *i2c_init_param)
{
/* I2Cʱ<43><CAB1><EFBFBD><EFBFBD><EFBFBD>üĴ<C3BC><C4B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
std_i2c_set_timing(i2cx, i2c_init_param->timing);
/* <20><><EFBFBD><EFBFBD>I2C<32><EFBFBD><E8B1B8>ַ1 */
std_i2c_device_address1_disable(i2cx);
std_i2c_device_address1_config(i2cx, i2c_init_param->address1_length, i2c_init_param->address1);
std_i2c_device_address1_enable(i2cx);
/* <20><><EFBFBD><EFBFBD><EFBFBD>˲<EFBFBD><CBB2><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
std_i2c_digital_filter_config(i2cx, i2c_init_param->digital_filter);
/* <20><><EFBFBD><EFBFBD>I2C<32><43>ģʽ<C4A3>µ<EFBFBD>Ӧ<EFBFBD><D3A6><EFBFBD><EFBFBD>ʽ */
std_i2c_set_next_data_ack(i2cx, i2c_init_param->acknowledge_type);
/* ʹ<><CAB9>I2C<32>ӿ<EFBFBD> */
std_i2c_enable(i2cx);
}
/**
* @brief I2Cȥ<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @param i2cx I2C<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
void std_i2c_deinit(I2C_t *i2cx)
{
/* I2C<32><43>λ<EFBFBD><CEBB><EFBFBD><EFBFBD><EFBFBD>ر<EFBFBD>I2C<32><43>ʱ<EFBFBD><CAB1> */
std_rcc_apb1_reset(RCC_PERIPH_RESET_I2C1);
std_rcc_apb1_clk_disable(RCC_PERIPH_CLK_I2C1);
}
/**
* @brief I2C<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD>
* @param i2c_init_struct I2C<EFBFBD><EFBFBD>ʼ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><EFBFBD>
* @retval <EFBFBD><EFBFBD>
*/
void std_i2c_struct_init(std_i2c_init_t *i2c_init_struct)
{
i2c_init_struct->timing = 0U;
i2c_init_struct->digital_filter = I2C_DIGITALFILTER_DISABLE;
i2c_init_struct->address1_length = I2C_ADDRESS1MODE_7BIT;
i2c_init_struct->address1 = 0U;
i2c_init_struct->acknowledge_type = I2C_DATA_NACK;
}
/**
* @}
*/
#endif /* STD_I2C_PERIPHERAL_USED */
/**
* @}
*/
/**
* @}
*/