你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

用硬件i2c调试 求助

[复制链接]
zymwjm 提问时间:2018-9-4 16:45 /
void i2c1config(void)
{
       

       
        RCC_APB1PeriphClockCmd(RCC_APB1Periph_I2C1,ENABLE);
        RCC_AHBPeriphClockCmd(RCC_AHBPeriph_GPIOB, ENABLE);
        I2C_InitTypeDef I2C_InitStructure;
       
        GPIO_InitTypeDef GPIO_InitStruct;
       
        GPIO_InitStruct.GPIO_Mode  = GPIO_Mode_AF;
        GPIO_InitStruct.GPIO_OType = GPIO_OType_OD;
        GPIO_InitStruct.GPIO_Pin   = GPIO_Pin_8|GPIO_Pin_9;
  GPIO_InitStruct.GPIO_PuPd  = GPIO_PuPd_UP;
        GPIO_InitStruct.GPIO_Speed = GPIO_Speed_40MHz;
       
       
        GPIO_Init(GPIOB,&GPIO_InitStruct);

        GPIO_PinAFConfig(GPIOB,GPIO_Pin_8,GPIO_AF_I2C1);
        GPIO_PinAFConfig(GPIOB,GPIO_Pin_9,GPIO_AF_I2C1);
       

       
        I2C_InitStructure.I2C_Ack                                                                                 =   I2C_Ack_Enable;
        I2C_InitStructure.I2C_AcknowledgedAddress    =   I2C_AcknowledgedAddress_7bit;
        I2C_InitStructure.I2C_ClockSpeed             =   400000;
        I2C_InitStructure.I2C_DutyCycle                                                         =   I2C_DutyCycle_2;
        I2C_InitStructure.I2C_Mode                   =   I2C_Mode_I2C;
        I2C_InitStructure.I2C_OwnAddress1                                                 =   0xd0;
       
       
        I2C_Init(I2C1,&I2C_InitStructure);
        I2C_Cmd(I2C1, ENABLE);

}


//****************main*******************

I2C_AcknowledgeConfig(I2C1,ENABLE);
  I2C_GenerateSTART(I2C1,ENABLE);
while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT));//在这里死了

请帮忙看下 是不是我的配置问题  还可能是什么问题造成的死在while(!I2C_CheckEvent(I2C1,I2C_EVENT_MASTER_MODE_SELECT))




收藏 评论16 发布时间:2018-9-4 16:45

举报

16个回答
废鱼 回答时间:2018-9-5 08:34:52
楼主,先用示波器看一下I2C总线是否有数据传输。

        while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY));
       
        I2C_GenerateSTART(I2C2, ENABLE);
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT)); //EV5
       
        I2C_Send7bitAddress(I2C2, EEAddress, I2C_Direction_Transmitter);
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_TRANSMITTER_MODE_SELECTED)); //EV6
       
        I2C_SendData(I2C2, Addr);
        while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BTF) == RESET);//EV8
       
        I2C_GenerateSTART(I2C2, ENABLE);
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_MODE_SELECT)); //EV5
       
        I2C_Send7bitAddress(I2C2, EEAddress, I2C_Direction_Receiver);
        while(!I2C_CheckEvent(I2C2, I2C_EVENT_MASTER_RECEIVER_MODE_SELECTED));//EV6

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

zymwjm 回答时间:2018-9-5 12:08:45
安 发表于 2018-9-5 08:34
楼主,先用示波器看一下I2C总线是否有数据传输。

        while(I2C_GetFlagStatus(I2C2, I2C_FLAG_BUSY));

看过了 没有东西  产生一个start信号后 直接就在EV5的循环中死掉了
zymwjm 回答时间:2018-9-5 12:07:20
feixiang20 发表于 2018-9-4 23:23
循环错误或者卡死的可能性只有代码写错和硬件连接问题

请问下怎么排除查找问题  我现在就是排查不出来 求指教
jjbboox 回答时间:2018-9-4 17:07:12
用cubemx吧,标准库硬件I2C很难正确驱动起来的。
标准库还是用软件I2C吧。

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

huangyanga 回答时间:2018-9-4 20:15:51
用的什么主控呀,怎么会有40Mhz的IO频率的

评分

参与人数 1蝴蝶豆 +2 收起 理由
zero99 + 2

查看全部评分

feixiang20 回答时间:2018-9-4 23:23:33
循环错误或者卡死的可能性只有代码写错和硬件连接问题

评分

参与人数 1蝴蝶豆 +2 收起 理由
STMCU + 2

查看全部评分

jyl_518 回答时间:2018-9-5 08:14:48

建议官方更新一版标准库硬件I2C驱动

评分

参与人数 1蝴蝶豆 +1 收起 理由
zero99 + 1

查看全部评分

zymwjm 回答时间:2018-9-5 12:06:15
jjbboox 发表于 2018-9-4 17:07
用cubemx吧,标准库硬件I2C很难正确驱动起来的。
标准库还是用软件I2C吧。

软件模拟写过了 现在就想试试这个硬件
zymwjm 回答时间:2018-9-5 12:06:33
huangyanga 发表于 2018-9-4 20:15
用的什么主控呀,怎么会有40Mhz的IO频率的

stm32l1系列
zymwjm 回答时间:2018-9-5 12:07:57
jyl518-283289 发表于 2018-9-5 08:14
建议官方更新一版标准库硬件I2C驱动

不太会弄 直接去官网下载吗
废鱼 回答时间:2018-9-5 13:29:29
你用我的代码也不行吗?shtart以后,就要发送硬件地址了。
zymwjm 回答时间:2018-9-5 14:47:33
各位大神 我用的是PB8,PB9,  芯片手册上写着PB6,PB7是I2C1_SCL,I2C1_SDA,PB8,PB9也是这两个复用功能,这两个有没有影响
AF4V`UN_85FJ6]E0[%[IOB1.png
zymwjm 回答时间:2018-9-5 16:58:32
安 发表于 2018-9-5 13:29
你用我的代码也不行吗?shtart以后,就要发送硬件地址了。

不行 还是在ev5时候就卡着了
废鱼 回答时间:2018-9-5 17:08:09
我和你的配置一样,我用的是407正常使用。楼主I2C是否有上拉电阻?我配置的没有上拉
GPIO_InitStructure.GPIO_PuPd = GPIO_PuPd_NOPULL;
12下一页

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版