zoukankan      html  css  js  c++  java
  • IIC学习笔记

    近期做项目,用到SM32F10x系列的芯片,经常使用到IIC总线来做为主从机之间的写命令和读数据,所以也自己去学习了IIC总线。自己也做些小的笔记。

    一、IIC总线要实现线与功能,所以SDA和SCL口线必须设置为开漏输出模式,我们使用的MCU硬件接口IIC时,口线会被自动设置成为开漏模式,但有时我们会使用IO口来模拟IIC总线,那么怎么设置口线呢?
     ①MCU口线支持开漏模式,则直接将SDA和SCL设置为开漏输出。
     ②MCU不支持开漏模式:
     最合理的做法是:当设置口线电平为高电平时,我们将其设置为输入状态,然后利用口线上的上拉电阻将口线拉高,这样即使两边电平不一致时,也不会造成IO口的损坏。

     二、IIC总线SDA线是在SCL线为高电平时才有效,在时钟SCL为高电平期间,SDA如果发生电平变化,就会终止或重启IIC总线,所以,在数据传输的过程中,要在SCL为低电平的时候去更改SDA的电平。

    三、数据线和信号线构成的通信线路。

    四、总线空闲时间:SDA和SCL都保持高电平的时间(一个结束条件和起始条件之间的总线空闲时间)。

    五、起始信号:SCL信号保持高电平期间,数据线的电平由高到低跳变。(程序中设置SDA和SCL为高也是有讲究的,SDA应该先拉高,这样可以避免某些状态下产生停止信号)

    六、停止信号:SCL信号保持高电平期间,数据线的电平由低到高跳变。

    七、应答信号:(ACK)被寻址的设备,接收到一个字节后都必须产生一个应答信号。信号在SCL为高电平期间,接收设备把SDA拉为低电平就可以产生一个应答信号。

    。。。。。。未完待续。今后学习过程中在补充!

  • 相关阅读:
    python之面向对象之类变量和实例变量
    python之面向对象之封装
    python之shutil模块
    利用python实现冒泡排序
    利用python实现二分法和斐波那契序列
    thinkphp input
    从右向左
    全局修改composer源地址
    Git忽略规则及.gitignore规则不生效的解决办法
    mysql主从数据库不同步的2种解决方法 (转载)
  • 原文地址:https://www.cnblogs.com/zhou2011/p/2755949.html
Copyright © 2011-2022 走看看