STM32硬件I2C无响应

2020-01-01 17:48发布

这个STM32硬件I2C总是卡在这里,不知道为什么,望大家能够讲解
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
15条回答
tangxh
1楼-- · 2020-01-01 19:38
折腾过几天硬件IIC无果,彻底放弃了。。。  最后改IO模拟了。。
於氏天鹰
2楼-- · 2020-01-02 00:34
 精彩回答 2  元偷偷看……
亽亼
3楼-- · 2020-01-02 01:40
本帖最后由 亽亼 于 2016-8-2 22:34 编辑

不知有用fsmc没有,如果使用fsmc的话,硬件I2C1是不能用,,,,,所以还是使用模拟I2C来得方便
亲测可以的一个例程: YSF1-120_02. 六轴陀螺仪MPU6050(硬件I2C).zip (421.26 KB, 下载次数: 14) 2016-8-2 22:34 上传 点击文件名下载附件
修改原因:添加附件
SkyGz
4楼-- · 2020-01-02 05:01
我前段时间 也碰过,  卡在这

后来可以了

你试试是不是这样




void I2C_Reboot() //重启iic总线
{
    GPIO_InitTypeDef GPIO_InitStructure;
    GPIO_InitStructure.GPIO_Pin = IIC_PIN_SCL | IIC_PIN_SDA; //  IIC
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    GPIO_ResetBits(GPIOB, IIC_PIN_SCL);
    GPIO_ResetBits(GPIOB, IIC_PIN_SDA);

    GPIO_SetBits(GPIOB, IIC_PIN_SCL);
    GPIO_SetBits(GPIOB , IIC_PIN_SDA);


    GPIO_InitStructure.GPIO_Pin = IIC_PIN_SCL | IIC_PIN_SDA; //  IIC
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_AF_OD;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

}

---------------------------------------------------------------------

    IIC_Init();  先初始化,  然后 重至IO的2次,  貌似解决了 ,        之前 我删除重至IO的I2C_Reboot() 就出现卡住的情况

    delay_ms(10);
    I2C_Reboot();
    delay_ms(10);
    I2C_Reboot();
    delay_ms(10);
    Init_MPU6050();
Elex
5楼-- · 2020-01-02 05:59
记得IIC的pins要设置成OD模式,还要设置是否检查ACK。
shuiluo2
6楼-- · 2020-01-02 11:39
还是模拟来得好用,一劳永逸啊

一周热门 更多>