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

怎么确定IIC的延时啊

孤单键盘 2019-03-25 浏览量:4122
要根据时序确定延时怎么做
0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • IIC器件的手册一般都有时序图,根据时序图和对应的时间参数确定延时时间就可以了。

    0005.png



    0006.png


    至于延时在单片机中的实现方式,一般通过for循环中自增或者自减实现短延时,也可以使用nop指令实现延时。

    • 发布于 2019-03-25
    • 举报
    • 评论 0
    • 1
    • 1

其他答案 数量:7
  • 找现成的例程吧,自己搞多累。

    放几个子功能你看下。


    ///***************************************/
    void i2c_Start(void)
    {
    //    SDA_OUT();
        SDA_H;      //SDA高 -> 低
        SCL_H;    //SCL高
        delay_us(4);
        SDA_L;        //SDA低
        delay_us(4);
        SCL_L;        //SCL低(待写地址/数据)
    }
    ///***************************************/
    void i2c_Stop(void)
    {
    //    SDA_OUT();
    //    SCL_L;      //SCL低
        SDA_L;      //STOP:when CLK is high DATA change form low to high
        delay_us(4);
        SCL_H;      //SCL高
        SDA_H;      //SDA高
        delay_us(4);
    }

    • 发布于2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • i2c的保守频率是400khz,所以一个周期就是2.5us,那么高电平就是1.25us,低电平也是1.25us,不过一般的设备会超过400khz所以时间会短一些
    • 发布于2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 一般用硬件I2C就无需关注这个延时了,直接设置寄存器就行,要用模拟I2C的时候,这个延时跟通信速率有关的,一般要根据数据手册上面给出的时序图来设置
    • 发布于2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 根据IIC的时序和你要的IIC传输速度来确定延时时间
    • 发布于2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 这里的延时,只是在使用IO口模拟的方式做时才确定的,也可以就是IIC的时钟的频率,这个是要做一个延时函数,定时器或是For来延时这个时间
    • 发布于2019-03-25
    • 举报
    • 评论 0
    • 0
    • 0

  • 如果使用硬件的IIC,是不用管延时的,芯片会自动 处理,也是会根据从机的IIC时序进行通讯的。

    如果是你的IO模拟的方式,延时是是速度是有关的,要根据你的IIC芯片上的时序图的要求进行延时,延时可以使用定时器进行

    • 发布于2019-03-27
    • 举报
    • 评论 0
    • 0
    • 0

  • IIC芯片的时序图上是有时序的说明的

    还有,要确定时序的延时时间,可以先使用逻辑分析仪测一下波形,这样更直观

    • 发布于2019-03-30
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

怎么确定IIC的延时啊