109 lines
2.8 KiB
C
109 lines
2.8 KiB
C
|
/************************************************************************************************/
|
|||
|
/**
|
|||
|
* @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 */
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|
|||
|
|
|||
|
/**
|
|||
|
* @}
|
|||
|
*/
|