1. IIC协议:

<<um_s3c2440a_rev10.pdf>>  p481 Figure 20-3. IIC-Bus Interface Data Format
<<AT24C08_DataSheet.pdf>>  Figure 1-12 Bus Timing and Device operations

iic总线里的角色:
    主机(Master):初始化发送、产生时钟信号和终止发送的器件
    从机(Slave):被主机寻址的器件

I2C的原则是:
    在SCL=1(高电平)时,SDA千万别忽悠!!! 否则,SDA下跳则"判罚"为"起始信号S",SDA上跳则"判罚"为"停止信号P".
    在SCL=0(低电平)时,SDA随便忽悠!!!(可别忽悠过火到SCL跳高)
    一条总线只有一个主机, 其他都是从机.
    
一次iic交互的例子:
    写AT24C08:
    start信号  +  addr + data[N] + stop信号    
    {
        1.   master发送start信号:     [scl高+sda下降沿]
        
        2.1. master发送addr: 7位设备地址 + R/W; 发完立刻把电平拉高,等待slave的ack;
                [sda在scl低电平的时候准备数据, 在scl上升沿时发送数据] * 8次
                MSB---先发最高位数据sda.
        2.2. slave收到master的start信号后,就开始监测master的数据了. 收到addr完毕并且发现addr就是自己的时候,马上拉低sda以表明传输有效(这就是所谓ack).
        
        3.1 主机收到ack后接着发送数据data, 这里是写1个字节,那就和发送addr用同样的方法连续发送8个bit就是了.
        同样,发完立刻把电平拉高,等待slave的ack;
        3.2 slave收到8位data完毕,马上拉低sda以表明传输有效(ack).
        
        4.   master收到ack,马上发送stop信号以关闭通信.
        
        说明:
        iic协议允许一次连接中传输多个字节,具体最多允许多少个字节看器件(AT24C08允许8个字节连续传输), 但是必须以8bit为单位, 接收方要给一个ack才会继续后面的传输.
        明确start和stop是由master发起的.
        
    }

一次iic交互的例子:
    读AT24C08:
    start信号  +  addr + data1 + start信号 + addr + data2[N] + stop信号    
    {
        你没看错, 有两次start, 一次stop.
        两次的addr地址都是同一个slave的, 区别在于它们的第8bit, 第一次是W(因为要写地址),第二次是R(读数据)
        data1指定数据存储在AT24C08中的哪个地址.
        data2[]是要写入的数据.
    }

2. iic驱动
<<韦东山Linux视频第2期_从零写驱动\第32课第1.1节_3.4.2内核下的I2C驱动之框架介绍_P.WMV>>

next: >>>>

最新文章

  1. MySQL基于时间字段进行分区的方案总结
  2. 【整理】--C++变量概述
  3. NoSql之旅--Cassandra安装篇(一)
  4. 【crunch bang】字体美化
  5. ADO.NET笔记——将DataReader作为函数返回值
  6. WPF自定义控件(三)——Window
  7. Mem Cgroup目录无法清理问题分析
  8. vmware 虚拟机 mount :no medium found解决方法
  9. ubuntu14.04下unix网络编程环境的配置
  10. 在linux后台执行脚本
  11. ASP.NET MVC 中将FormCollection与实体间转换方法【转】
  12. python异常处理URLError,HTTPError,Wrapping,
  13. leetcode-位运算
  14. 在不同环境下MD5加密相同字符串,密文不一样的问题
  15. pandas(二)
  16. python拉格朗日插值
  17. Win7 VS2015及MinGW环境编译矢量库agg-2.5和cairo-1.14.6
  18. Tomcat之初识初体验
  19. rabbitmq集群几个比较好的文章
  20. python 将base64字符串还原为图片

热门文章

  1. 基于纯Java代码的Spring容器和Web容器零配置的思考和实现(3) - 使用配置
  2. 深入浅出Win32多线程程序设计之基本概念
  3. Spring 上下文
  4. java的数学函数总结
  5. 封装的localstorge的插件,store.js
  6. apache kafka系列之性能优化架构分析
  7. Java项目打包工具安装失败解决方法
  8. 1.语言概述-JavaScript权威指南笔记
  9. javascript函数作用域链之词法作用域
  10. js中if的简写方法