void i2c_gpio_init(void)
{
/* enable GPIOB clock */
rcu_periph_clock_enable(IIC1_GPIO_GPIO_CLK);
/* enable I2C1 clock */
rcu_periph_clock_enable(RCU_I2C1);
/* ÅäÖà IIC_SCL --> PB10 Òý½ÅΪODÊä³ö */ 硬件iic
gpio_init(IIC1_GPIO_GPIO_PORT, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, IIC1_GPIO_SCL_PIN);
/* ÅäÖà IIC_SDA --> PB11 Òý½ÅΪODÊä³ö */ 硬件iic
gpio_init(IIC1_GPIO_GPIO_PORT, GPIO_MODE_AF_PP, GPIO_OSPEED_50MHZ, IIC1_GPIO_SDA_PIN);
// soft: gpio_init(IIC1_GPIO_GPIO_PORT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, IIC1_GPIO_SCL_PIN);
// /* ÅäÖà IIC_SDA --> PB11 Òý½ÅΪODÊä³ö */
// soft: gpio_init(IIC1_GPIO_GPIO_PORT, GPIO_MODE_OUT_PP, GPIO_OSPEED_50MHZ, IIC1_GPIO_SDA_PIN);
/* I2C clock configure */
i2c_clock_config(I2C1, 100000, I2C_DTCY_16_9);
/* I2C address configure */
i2c_mode_addr_config(I2C1, I2C_I2CMODE_ENABLE, I2C_ADDFORMAT_7BITS, 0x40);
/* enable I2C1 */
i2c_enable(I2C1);
/* enable acknowledge */
i2c_ack_config(I2C1, I2C_ACK_ENABLE);
}
|