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. Oracle的关于小数的使用

    整理了部分Oracle的关于小数的使用方法,如下 --round(x,[y]) 舍入到小数点右边y位的x值 ) from dual; --1.235 --trunc(x,[y])返回截尾到y位小数的x ...

  2. ios中封装九宫格的使用(二级导航)

    效果图 一般用于导航功能 第一步下载http://pan.baidu.com/share/link?shareid=1824940819&uk=923776187 第二步 把下图内容放在你的x ...

  3. iOS 获取摄像头当前方向

    在做二维码扫描和直播获取视频流的过程中,可能会用到 AVCaptureDevice AVCaptureVideoPreviewLayer AVCaptureSession 这几个参数,其中 1.定义显 ...

  4. std::string begin end

    std::string 的begin到end是不包含 ‘\0’的

  5. Indy Changed from Indy10

    Indy Changed from Indy10 http://stackoverflow.com/questions/16339656/delphi-xe4-indy-compatibility-i ...

  6. JavaScript 消息框,警告框,确认框,提示框

    1.警告框 警告框经常用于确保用户可以得到某些信息. 当警告框出现后,用户需要点击确定按钮才能继续进行操作. 语法: alert("文本") 2.确认框 确认框用于使用户可以验证或 ...

  7. TCP详解 (1)

    网络层:  IP 被称为洲际协议,ICMP称为互联网控制报文协议 IGMP 为互联网组管理协议 传输层:  传输层的作用是把应用程序给他的任务划分为数据包,然后传递给下面的层: 应用层:  应用层的协 ...

  8. android studio中使用git版本管理

    转载请标注来源:http://blog.csdn.net/lsyz0021/article/details/51842774 AndroidStudio中使用Git-初级篇(一)——从github上传 ...

  9. C#多线程JOIN方法初探

    [说明:刚接触多线程时,弄不明白Join()的作用,查阅了三本书,都不明不白.后来经过自己的一番试验,终于弄清了Join()的本质.大家看看我这种写法是否易懂,是否真的写出了Join()的本质,多提宝 ...

  10. Linux查看当前网卡流量

    sar(system activity reporter) sar通过cron定时调用执行收集和记录信息,默认是10分钟执行一次. # more /etc/cron.d/sysstat # Run s ...