標題: 單片機程序 I2C一使能,I2CBSY就被置上了,我復(fù)位后再初始化使能,I2CBSY又被置上了 [打印本頁]

作者: pyq151818    時間: 2023-4-15 15:48
標題: 單片機程序 I2C一使能,I2CBSY就被置上了,我復(fù)位后再初始化使能,I2CBSY又被置上了
void I2C_Initialize(void)
{
        uint32_t tick;
        // GPIO clock enable
        rcu_periph_clock_enable(RCU_GPIOB);
        rcu_periph_clock_enable(RCU_I2C1);
        i2c_deinit(I2C1);
        gpio_init(GPIOB, GPIO_MODE_AF_OD, GPIO_OSPEED_50MHZ, GPIO_PIN_10 | GPIO_PIN_11);

        /* I2C clock configure */
        i2c_clock_config(I2C1, 400000, I2C_DTCY_2);
        /* I2C address configure */
        i2c_mode_addr_config(I2C1, I2C_I2CMODE_ENABLE, I2C_ADDFORMAT_7BITS, 0x00);
        /* enable EEPROM_I2CDEV */
        i2c_enable(I2C1);
        /* enable acknowledge */
        i2c_ack_config(I2C1, I2C_ACK_ENABLE);
        
        tick =osKernelGetSysTimerCount();
        /* wait until I2C bus is idle */
        while(i2c_flag_get(I2C1, I2C_FLAG_I2CBSY))
        {
                if((tick+30)<osKernelGetSysTimerCount())
                {
                        i2c_deinit(I2C1);
                        i2c_software_reset_config(I2C1,I2C_SRESET_SET);
                        i2c_software_reset_config(I2C1,I2C_SRESET_RESET);
                        I2C_Initialize();
                }
        }
}
配置有什么問題嗎?我以前也是這么配的


作者: pyq151818    時間: 2023-5-16 11:15
忘記結(jié)帖了,引腳速度配置的太塊




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1