IIC总线工作原理

I2C总线进行数据传送时,时钟信号为高电平期间,数据线上的数据必须保持稳定,只有在时钟线上的信号为低电平期间,数据线上的高电平或低电平状态才允许变化。

起始和终止信号 :SCL线为高电平期间,SDA线由高电平向低电平的变化表示起始信号;SCL线为高电平期间,SDA线由低电平向高电平的变化表示终止信号。

数据传送格式(1)字节传送与应答

每一个字节必须保证是8位长度。数据传送时,先传送最高位(MSB),每一个被传送的字节后面都必须跟随一位应答位(即一帧共有9位)。如果一段时间内没有收到从机的应答信号,则自动认为从机已正确接收到数据。

AT24C02的芯片地址如下图,1010为固定,A0,A1,A2正好与芯片的1,2,3引角对应,为当前电路中的地址选择线,三根线可选择8个芯片同时连接在电路中,当要与哪个芯片通信时传送相应的地址即可与该芯片建立连接,TX-1B实验板上三根地址线都为0。最后一位R/W为告诉从机下一字节数据是要读还是写,0为写入,1为读出。

AT24C02的芯片地址(0xa0为写,0xa1为读)

任一地址写入数据格式

任一地址读取数据格式

  1. void init()     //初始化

  2. {

  3. SCL=1;

  4. delay();

  5. SDA=1;

  6. delay();

  7. }

  8. void start()        //启动信号

  9. {

  10. SDA=1;

  11. delay();

  12. SCL=1;

  13. delay();

  14. SDA=0;

  15. delay();

  16. }

  17. void stop()     //停止信号

  18. {

  19. SDA=0;

  20. delay();

  21. SCL=1;

  22. delay();

  23. SDA=1;

  24. delay();

  25. }

  1. void respons()      //回应信号

  2. {

  3. uchar i=0;SCL=1;delay();

  4. while((SDA==1)&&(i<255))i++;

  5. SCL=0;delay();}

  6. void writebyte(uchar date)//    写一个字节

  7. {

  8. uchar i,temp;

  9. temp=date;

  10. for(i=0;i<8;i++)

  11. {

  12. temptemp=temp<<1;

  13. SCL=0;

  14. delay();

  15. SDA=CY;

  16. delay();

  17. SCL=1;

  18. delay();

  19. }

  20. SCL=0;

  21. delay();

  22. SDA=1;

  23. delay();

  24. }

  1. uchar readbyte()

  2. //读一个字节

  3. {

  4. uchar i,j,k;

  5. SCL=0;

  6. delay();

  7. SDA=1;

  8. for(i=0;i<8;i++)

  9. {

  10. SCL=1;

  11. delay();

  12. if(SDA==1)

  13. j=1;

  14. else

  15. j=0;

  16. k=(k<<1)|j;

  17. SCL=0;

  18. delay();

  19. }

  20. delay();

  21. return k;

  22. }

  1. Void write_add(uchar address,

  2. uchar info)

  3. //指定地址写一个字节数据

  4. {

  5. start();

  6. writebyte(0xa0);

  7. respons();

  8. writebyte(address);

  9. respons();

  10. writebyte(info);

  11. respons();

  12. stop();

  13. }

  1. uchar read_add(uchar address)

  2. //指定地址读一个字节数据

  3. {

  4. uchar dd;

  5. start();

  6. writebyte(0xa0);

  7. respons();

  8. writebyte(address);

  9. respons();

  10. start();

  11. writebyte(0xa1);

  12. respons();

  13. dd=readbyte();

  14. stop();

  15. return dd;

  16. }


【电子基础】IIC总线工作原理的更多相关文章

  1. zabbix监控的基础概念、工作原理及架构(一)

    zabbix监控的基础概念.工作原理及架构 转载于网络 一.什么是zabbix及优缺点 Zabbix能监视各种网络参数,保证服务器系统的安全运营,并提供灵活的通知机制以让系统管理员快速定位/解决存在的 ...

  2. Hadoop基础-MapReduce的工作原理第二弹

    Hadoop基础-MapReduce的工作原理第二弹 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Split(切片)  1>.MapReduce处理的单位(切片) 想必 ...

  3. Hadoop基础-MapReduce的工作原理第一弹

    Hadoop基础-MapReduce的工作原理第一弹 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 在本篇博客中,我们将深入学习Hadoop中的MapReduce工作机制,这些知识 ...

  4. 【接口时序】6、IIC总线的原理与Verilog实现

    一. 软件平台与硬件平台 软件平台: 1.操作系统:Windows-8.1 2.开发套件:ISE14.7 3.仿真工具:ModelSim-10.4-SE .ChipScope 硬件平台: 1. FPG ...

  5. CSS 基础:CSS 工作原理(2)<思维导图>

    这段时间利用一下间隙时间学习了CSS的基础知识,主要目的是加深对CSS的理解,虽然个人主要工作基本都是后台开发,但是个人觉得系统学习一下CSS的基础还是很有必要的.下面我学习CSS时做的思维导图(全屏 ...

  6. 【夯实Nginx基础】Nginx工作原理和优化、漏洞

    本文地址 原文地址 本文提纲: 1.  Nginx的模块与工作原理    2.  Nginx的进程模型    3 . NginxFastCGI运行原理        3.1 什么是 FastCGI   ...

  7. 【Java基础】HashMap工作原理

    HashMap Hash table based implementation of the Map interface. This implementation provides all of th ...

  8. 【Java基础】ArrayList工作原理

    ArrayList 以数组实现.节约空间,但数组有容量限制.超出限制时会增加50%容量,用System.arraycopy()复制到新的数组.因此最好能给出数组大小的预估值.默认第一次插入元素时创建大 ...

  9. [基础架构]PeopleSoft工作原理(从浏览器发送请求开始)

    PeopleSoft体系结构是由几大组成部分构成,之前文章已经详细讲过,了解这几大组成部分是怎么协同工作的更为重要.在本文中将帮助您了解PeopleSoft的工作原理以及用户发送的请求是如何被解析以及 ...

随机推荐

  1. 用yum下载rpm包(不安装)到制定目录

    用yum下载rpm包(不安装)到制定目录用yum下载rpm包 www.pcjsh.com  1.安装yum-downloadonly # yum install yum-downloadonly -y ...

  2. Nginx+FastCGI运行原理(一)

    1 实战Nginx与PHP(FastCGI)的安装.配置与优化 1.1 什么是 FastCGI FastCGI是一个可伸缩地.高速地在HTTP server和动态脚本语言间通信的接口.多数流行的HTT ...

  3. STAF进行分布式脚本分发----实践篇

    该博文理论支持文章:http://www.cnblogs.com/zhangfei/p/3169139.html 一.准备条件 1.安装STAF.由于其官网被墙了,所以大家可进入WAT群的网盘里去下载 ...

  4. 如何用STAF进行自动化测试分布式运行

    本文的目的在于引导读者去了解STAF及如何调用其接口去实现自动化测试的分布式动行. 提到分布式运行,很多人想到了Jenkins,Jenkins里面有个node插件,可以去分派任务给slave,Jenk ...

  5. IOC 之深入理解 Spring IoC

    在一开始学习 Spring 的时候,我们就接触 IoC 了,作为 Spring 第一个最核心的概念,我们在解读它源码之前一定需要对其有深入的认识,本篇为[死磕 Spring]系列博客的第一篇博文,主要 ...

  6. Android tesseract-orc之扫描身份证号码

    踩了不少坑,终于把这个扫描版的身份证识别做出来了,图片识别引擎用的是tesseract,在已经训练好样本的情况下,感觉识别率还是一般般~ 下面说一说大概几个坑. 一. 编译tesseract-orc ...

  7. 【Linux】字符转换命令paste

    这个 paste 就要比join 简单多了!相对于 join 必须要比对两个文件的数据相关性, paste 就直接『将两行贴在一起,且中间以 [tab] 键隔开』而已!简单的使用方法: [root@w ...

  8. WCF入门教程(四)通过Host代码方式来承载服务 一个WCF使用TCP协议进行通协的例子 jquery ajax调用WCF,采用System.ServiceModel.WebHttpBinding System.ServiceModel.WSHttpBinding协议 学习WCF笔记之二 无废话WCF入门教程一[什么是WCF]

    WCF入门教程(四)通过Host代码方式来承载服务 Posted on 2014-05-15 13:03 停留的风 阅读(7681) 评论(0) 编辑 收藏 WCF入门教程(四)通过Host代码方式来 ...

  9. 带你开发一款给Apk中自己主动注入代码工具icodetools(开凿篇)

    一.前言 从这篇開始咋们開始一个全新的静态方式逆向工具icodetools的实现过程.这个也是我自己第一次写的个人认为比較实用的小工具,特别是在静态方式逆向apk找关键点的时候.兴许会分为三篇来具体介 ...

  10. WGAN (原理解析)

    在GAN的相关研究如火如荼甚至可以说是泛滥的今天,一篇新鲜出炉的arXiv论文<Wasserstein GAN>却在Reddit的Machine Learning频道火了,连Goodfel ...