stm32F407的硬件I2C稳定吗~

2019-07-20 18:40发布

之前就在疑问,为什么原子提供的I2C例子为什么只有模拟的,而不使用硬件的I2C,之后看了一个帖子说是硬件的I2C不稳定且不好用。不过该帖子是STM32F103的,而且两年时间过去了,不知道后来有没有改善。现在正在调试这个硬件I2C,配置好后不起作用,测量I2C1的时钟线,并没有看到时钟信号。配置如下所示:
    I2C_InitTypeDef I2C_InitStructure;
    I2C_InitStructure.I2C_Mode = I2C_Mode_I2C;
    I2C_InitStructure.I2C_DutyCycle = I2C_DutyCycle_2;
    I2C_InitStructure.I2C_OwnAddress1 = 0x30;
    I2C_InitStructure.I2C_Ack = I2C_Ack_Enable;
    I2C_InitStructure.I2C_AcknowledgedAddress = I2C_AcknowledgedAddress_7bit;
    I2C_InitStructure.I2C_ClockSpeed = 10000;
    I2C_Init(I2C1,&I2C_InitStructure);
   
    I2C_ITConfig(I2C1,I2C_IT_EVT | I2C_IT_BUF,ENABLE);
    I2C_Cmd(I2C1,ENABLE);
    I2C_AcknowledgeConfig(I2C1,ENABLE);

发送数据如下所示:
    I2C_GenerateSTART(I2C1,ENABLE);
    I2C_SendData(I2C1,0x77);
    ZY_Delay(5000);
    GPIO_ToggleBits(GPIOG,GPIO_Pin_12);
    GPIO_ToggleBits(GPIOE,GPIO_Pin_2);
    I2C_GenerateSTOP(I2C1,ENABLE);

现象为:GPIOG12和GPIOE2可正常闪烁,但是在PB6和PB7上没有任何信号

友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。