请选择 进入手机版 | 继续访问电脑版
查看: 120|回复: 7

[已解决] STM32F407 硬 件I2C速度达不到400K

[复制链接]

该用户从未签到

1

主题

10

帖子

0

蝴蝶豆

初级会员

最后登录
2018-9-26
发表于 2018-9-25 15:55:16 | 显示全部楼层 |阅读模式
  我在使用STM32F407的硬件I2C,工程是用CUBE生成,速度设定为400KHz,但实际测试只有297KHz,求大神们指点下,用CUBE生成的硬件I2C,能改动的参数不多,附上初始化,求大神们指点下!谢谢!
  hi2c1.Instance = I2C1;
  hi2c1.Init.ClockSpeed = 400000;
  hi2c1.Init.DutyCycle = I2C_DUTYCYCLE_2;
  hi2c1.Init.OwnAddress1 = 0;
  hi2c1.Init.AddressingMode = I2C_ADDRESSINGMODE_7BIT;
  hi2c1.Init.DualAddressMode = I2C_DUALADDRESS_DISABLE;
  hi2c1.Init.OwnAddress2 = 0;
  hi2c1.Init.GeneralCallMode = I2C_GENERALCALL_DISABLE;
  hi2c1.Init.NoStretchMode = I2C_NOSTRETCH_DISABLE;
  if (HAL_I2C_Init(&hi2c1) != HAL_OK)
  {
    Error_Handler();
  }
  ST全新域名已上线,大家奔走相告>>                    
回复

使用道具 举报

该用户从未签到

3

主题

318

帖子

390

蝴蝶豆

版主

最后登录
2018-10-19
发表于 2018-9-25 16:27:16 | 显示全部楼层
你是用什么时钟?如果是外部时钟,你的外部时钟(和你实际的外部晶体)和PLL在cubeMx的配置是正确的吗?

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

该用户从未签到

3

主题

93

帖子

25

蝴蝶豆

中级会员

最后登录
2018-10-20
发表于 2018-9-25 19:09:06 | 显示全部楼层
据说是STM32本身的问题,即使你用了hal库也一样。
我提供一种解决方法给LZ参考:
我是用两个GPIO口模拟的IIC通信,来读取EEPROM,没有任何问题。因为GPIO的通信速率有100M,模拟IIC的通信达到400K很容易。
这个地方新手容易把应答信号写错,其他的就没什么了,祝LZ早日解决问题

评分

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

查看全部评分

  ST全新域名已上线,大家奔走相告>>                    
回复 支持 反对

使用道具 举报

该用户从未签到

1

主题

10

帖子

2

蝴蝶豆

初级会员

最后登录
2018-9-25
发表于 2018-9-25 19:10:13 | 显示全部楼层
肯定是时钟设置不对,要么是系统时钟,要么是I2C的时钟

评分

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

查看全部评分

回复 支持 反对

使用道具 举报

  • TA的每日心情
    开心
    2017-12-6 11:47
  • 签到天数: 1 天

    [LV.1]初来乍到

    31

    主题

    2089

    帖子

    1524

    蝴蝶豆

    论坛元老

    最后登录
    2018-10-21
    发表于 2018-9-26 09:21:23 | 显示全部楼层
    像这种情况,一般是时钟设置不对。
    STM32CubeMX设置的时钟也不一定对,不排除会有BUG。自己调试,看一下各时钟都是多少,尤其是观察下系统时钟。

    评分

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

    查看全部评分

      ST全新域名已上线,大家奔走相告>>                    
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    10

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2018-9-26
     楼主| 发表于 2018-9-26 10:05:08 | 显示全部楼层
    这是我配置的时钟,各位大神有好建议不?我看不出时钟跟I2C速度慢的关系。
    sys_clk.jpg
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    10

    帖子

    0

    蝴蝶豆

    初级会员

    最后登录
    2018-9-26
     楼主| 发表于 2018-9-26 10:07:01 | 显示全部楼层
    @ xiaolingoei ,不想用软件,项目所限。
      ST全新域名已上线,大家奔走相告>>                    
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    5

    主题

    167

    帖子

    8

    蝴蝶豆

    金牌会员

    最后登录
    2018-10-15
    发表于 2018-9-26 10:11:19 | 显示全部楼层
    换用LL库试试

    评分

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

    查看全部评分

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|意法半导体STM32/STM8技术社区

    GMT+8, 2018-10-21 14:43 , Processed in 0.170703 second(s), 11 queries , MemCache On.

    Powered by Discuz! X3.4

    © 2001-2017 Comsenz Inc.

    快速回复 返回顶部 返回列表