Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void i2c_init(void) {
- rcc_periph_clock_enable(RCC_I2C1);
- rcc_periph_clock_enable(RCC_GPIOB);
- /* rcc_periph_clock_enable(RCC_AFIO); */
- gpio_set_mode(GPIOB,
- GPIO_MODE_OUTPUT_50_MHZ,
- GPIO_CNF_OUTPUT_ALTFN_OPENDRAIN,
- GPIO6 | GPIO7);
- i2c_peripheral_disable(I2C1);
- i2c_reset(I2C1);
- i2c_set_standard_mode(I2C1);
- // APB1 is running at 36MHz
- i2c_set_clock_frequency(I2C1, I2C_CR2_FREQ_36MHZ);
- // 36MHz / (100kHz * 2)
- i2c_set_ccr(I2C1, 180);
- // standard mode, freq MHz + 1
- i2c_set_trise(I2C1, 37);
- i2c_set_dutycycle(I2C1, I2C_CCR_DUTY_DIV2);
- /* nvic_enable_irq(NVIC_I2C1_EV_IRQ); */
- /* nvic_enable_irq(NVIC_I2C1_ER_IRQ); */
- /* i2c_enable_interrupt(I2C1, I2C_CR2_ITERREN | I2C_CR2_ITEVTEN); */
- i2c_peripheral_enable(I2C1);
- printf("i2c: intialized\n");
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement