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拉为低电平就可以产生一个应答信号。

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

  • 相关阅读:
    对宏的另外一些认识 及 assert.h的实现细节
    不要想太多
    线段树
    SQL基础 利用SELECT检索数据
    hidden表单值无法重置的缺陷
    oracle 数据库登陆
    基于ejb3,对JDBC进行封装,让使用JDBC时能像hibernate使用annotation注解一样简便,而且更加轻巧
    GoJS的一些使用技巧
    GoJS的学习使用
    灵活使用trim方法
  • 原文地址:https://www.cnblogs.com/zhou2011/p/2755949.html
Copyright © 2011-2022 走看看