• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

STM32F407 硬 件I2C速度达不到400K

FEItwo 2018-09-25 浏览量:3194
  我在使用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();
  }

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 请问 297khz 是从哪里测试量的速度。

    400khz 是总线速度,建议使用逻辑分析仪,或者示波器测量发送数据状态的 scl 频率。

    因为 iic 总线有空闲状态, 通信是400khz, 不等于实际通讯达到 400kbps,

    因为通信有开销, 400kbps 通讯速度 不等于实际传输的有效数据是 400kbps(50KBps)

    • 发布于 2018-09-25
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:15
  • 你测量的时钟信号是297KHz吗?时钟应该是400Khz
    • 发布于2018-09-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 如一楼所说,STM32硬件的IIC是准的400k速度,如果用逻辑分析仪采样,有可能逻辑分析仪的采样速度跟不上而导致掉帧。

    推荐使用示波器抓取SCL时钟线上的速度。

    • 发布于2018-09-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为I2C总线的时钟间歇性产生,若是示波器自动方式测量可能会有误差,最好使用带存储功能的示波器,将I2C通讯阶段的波形抓取后 ,再手动测量时钟或数据的脉冲频率。
    • 发布于2018-09-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 用逻辑分析仪多抓几次就能显示出来了,这个297是示波器得出来的么?是不是只测了SCL的速度,IIC是仲裁机制的,如果总线上有慢速设备就会被拉低的!
    • 发布于2018-09-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 你可以开一下优化再编译,cubemx生成 的工程效率不高的
    • 发布于2018-09-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 时钟标准是400K 有时优化的结果不理想,建议用示波器再测量下
    • 发布于2018-09-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 时钟标准是400K 有时优化的结果不理想,建议用示波器再测量下
    • 发布于2018-09-26
    • 举报
    • 评论 0
    • 0
    • 0

  • 因为这种时钟跟你的编译器优化也有关系,有可能是你的编译器优化导致的时钟不一致
    • 发布于2018-09-29
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个时钟设置的就是400k的,如果你的时钟配置实际的跟cubemx里面设置一样的话


    • 发布于2018-10-05
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个时钟设置标准时钟就是400K,要检查你的时钟
    • 发布于2018-10-15
    • 举报
    • 评论 0
    • 0
    • 0

  • 使用示波器测量通讯波形,查看时钟的频率是否为400K
    • 发布于2018-10-24
    • 举报
    • 评论 0
    • 0
    • 0

  • 这个用示波器检查你的频率是不是正常的
    • 发布于2018-10-25
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

STM32F407 硬 件I2C速度达不到400K