IIC的总线应用

发布者:忠正最新更新时间:2016-11-01 来源: eefocus关键字:IIC  总线应用 手机看文章 扫描二维码
随时随地手机看文章
LPC2124有一个标准的I2C总线接口,可配置为主机或从机,总线时钟速率可调整,最高可支持400KHZ总线速率。使用I2C总线时,要将相应得引脚设置连接SCL和SDA,并且总线上要上拉电阻,阻值为1~10KΩ,依据所需要的总线速率而定。总线速率越高,电阻阻值应该越小。I2C总线可接标准I2C接口器件,如串行EEPROM、RAM、LCD、时钟芯片以及音调发生器。

根据方向位(R/W)状态的不同,I2C总线上存在以下两种类型的数据传输:

⑴从主发送器向从接收器发送数据。

主机发送得第一个字节是从机地址,接下来是数据字节流。从机每接收到一个字节返回一个应答位。

⑵从发送器向主接收器发送数据。

第一个字节(从地址)从主机发送。从机返回一个应答位。接下来从机向主机发送数据字节。主机每接收一个字节返回一个应答位。接收完最后一个字节,主机返回一个“非应答位”。主器件产生所有串行时钟脉冲和起始以及停止条件。出现停止条件或重复的起始条件时传输结束。由于重复的起始条件同时是下一个串行发送的开始,因此I2C总线不会被释放。

LPC2124的I2C是字节方式的I2C接口,只要把一字节数据写入I2C数据寄存器I2DAT后,即可由I2C接口自动完成所有的数据位发送。它有4种操作模式:主发送器模式、主接收器模式、从发送器模式和从接收器模式。


⑴主发送器模式

该模式中,数据从主机发送到从机。在进入主发送器模式之前,I2CONSET(I2C控制置位寄存器)必须按如下设置进行初始化:

I2CONSET     ---   I2EN STA STO SI AA --- ---

               --     1     0     0   0    0   --   --

说明如下:

       I2EN=1,使能I2C接口;

   AA=0,不产生应答信号,即不允许进入从机模式;

   SI=0,I2C中断标志为0;

   STO=0,停止标志为0;

   STA=0,起始标志为0。


在该模式下,数据方向位(R/W)应为0表示执行写操作。因此第一个发送的字节为从地址(7位)和写方向位。数据的发送每次为8位,每发送完一字节,都接收到一个由从机返回的应答位。该模式的数据发送操作步骤如下:

①              通过软件置位STA,进入I2C主发送器模式,I2C逻辑在总线空闲后立即发送一个起始条件。

②              当发送完起始条件后,SI位置位。此时I2STAT(状态寄存器)中的状态代码为08H,该状态代码用于中断服务程序的处理。

③              把从地址和写方向位装入I2DAT(数据寄存器),然后清零SI位(向I2CONCLR寄存器中得SIC位写入1可清零SI),开始发送从地址和写方向位。

④              当从地址和写方向位已发送且接收到应答位后,SI位再次置位(可能的状态代码为18H,20H或38H)。

⑤              当状态码为18H时,表明从机已应答,则可以将数据装入I2DAT,然后清零SI位,开始发送数据。

⑥              当正确发送数据,SI位再次置位(可能的状态码为28H,30H)。此时可以再次发送数据或者置位STO结束总线。


⑵主接收器模式

在该模式下,主机所接收的数据字节来自从发送器,数据方向位应该为1表示执行读操作。该模式的数据接收操作步骤如下:

①     通过软件置位STA,进入I2C主发送器模式,I2C逻辑在总线空闲后立即发送一个起始条件。

②     当发送完起始条件后,SI位置位。此时I2STAT(状态寄存器)中的状态代码为08H,该状态代码用于中断服务程序的处理。

③     把从地址和读方向位装入I2DAT(数据寄存器),然后清零SI位,开始发送从地址和读方向位。

④     当从地址和读方向位已发送且接收到应答位后,SI位再次置位(可能的状态代码为38H,40H或48H)。

⑤     当状态码为40H时,表明从机已应答。设置AA位,用来控制接收到数据后是产生应答信号还是产生非应答信号,然后清零SI位,开始接收数据。

⑥     当正确接收到一个字节数据后,SI位再次置位(可能的状态码为50H或58H)。此时可以再次接收数据或者置位STO结束总线。


⑶从接收器模式

当配置为I2C从机时,I2C主机可以对它进行读、写操作。要初始化为从机用户必须将从地址写入I2ADR(从地址寄存器),并按如下配置I2CONSET:

I2CONSET     ---   I2EN STA STO SI AA --- ---

               --     1     0     0   0    1   --   --


       在该模式下,从主发送器接收数据字节。当主机访问从机时,接收主机发送过来的数据,并产生应答信号。数据方向位应该为0表示写操作。该模式的数据接收操作步骤如下:

①     将从地址写入I2ADR并配置I2CONSET完成初始化。等待它被自身的从地址或通用地址寻址。

②     在接收到地址和方向位后,SI位置位并可从I2STAT中读出有效的状态代码。

③     根据状态代码执行相应的操作。


⑷从发送器模式

当主机访问从机时,向主机发送数据,并等待主机的应答信号。数据方向位应该为1表示读操作。使用该模式时,用户程序只需根据各种状态码作出相应的操作。


I2C时钟由SCL占空比寄存器控制(I2SCLH、I2SCLL),分别设置SCL的高电平和低电平时间,获得合适的总线时钟频率。寄存器I2CONSET则用来控制I2C总线的模式及总线操作,其位SI为I2C中断标志位,所有总线操作都要依赖于这一标志;同时它又钳住总线,使总线的数据发送/接收得以同步控制。寄存器I2CONCLR则为对应的清零寄存器;I2STAT为I2C状态寄存器,用于指示总线处于哪种状态,以方便控制操作。I2DAT为I2C总线数据寄存器,包含要发送的数据或刚收到的数据。当系统作为从机时,I2ADR从机地址寄存器有效。当总线对此地址进行访问时,将会产生I2C中断。


I2C主机基本操作方法:

①设置I2C引脚连接;

②设置I2C时钟速率(I2SCLH、I2SCLL);

③设置为主机,并发送起始信号(I2CONSET的I2EN、STA位为1,AA位为0);

④发送从机地址(I2DAT),控制I2CONSET发送;

⑤判断总线状态(I2STAT),进行数据传输控制;

⑥发送结束信号(I2CONSET)。


I2C从机基本操作方法:

①设置I2C引脚连接;

②设置自身的从机地址(I2ADR);

③使能I2C(I2CONSET的I2EN、AA位为1);

④判断SI位或者等待I2C中断,等待主机操作;

⑤判断总线状态I2STAT,进行数据传输控制。

关键字:IIC  总线应用 引用地址:IIC的总线应用

上一篇:ARM7入门11,IIC通信
下一篇:ARM7入门12,SPI通信

推荐阅读最新更新时间:2024-03-16 15:18

一文了解I2C总线工作原理、优缺点和应用
如果您正在使用OLED显示器,气压传感器或陀螺仪/加速度计模块的项目,您可能会发现正在使用I2C总线。 I2C总线简介 I2C结合了SPI和UART的优点。使用I2C,您可以将多个从设备连接到单个主设备上(如SPI),并且可以让多个主器件控制单个或多个从器件。当您希望有多个微控制器记录数据到单个存储卡或将文本显示到单个LCD时,这非常有用。 与UART通信一样,I2C仅使用两条线在设备之间传输数据: SDA(串行数据) - 主站和从站发送和接收数据的线路。 SCL(串行时钟) - 承载时钟信号的线路。 I2C是一种串行通信协议,因此数据沿着单线(SDA线)逐位传输。 与SPI一样,I2C是同步的,因此位输出通过主机和从机
[嵌入式]
一文了解I2C<font color='red'>总线</font>工作原理、优缺点和<font color='red'>应用</font>
CAN总线在机电一体化中的应用
0、引言 在传统的液压控制系统中,对系统的控制主要采用机械手段。而采用传统的机械方法控制液压系统,使得整个系统的体积增大,同时增加系统复杂度和维护难度。随着计算机技术、现场总线技术及人工智能等技术的发展,使越来越复杂的液压控制系统有良好的发展前景。基于以上特点,该试验台采用CAN总线技术实现实时控制,用于液压软管脉冲压力试验,对被试件施加脉冲压力以测试软管的寿命。 1、CAN接口电路的设计 CAN总线节点接口电路如图1所示。P89LPC932是单片封装的高性能、低功耗的带片内8KFlash的微控制器,其指令执行时间只需2到4个时钟周期,6倍于标准80C51器件。P 89LPC932内部主要集成了字节方式的
[单片机]
CAN<font color='red'>总线</font>在机电一体化中的<font color='red'>应用</font>
简要分析I2C总线在多机通信中的应用
  I2C(Inter Integrated Circuit)总线是Philips公司开发的一种双向两线主机总线,它能方便地实现芯片间的数据传输与控制。通过两线缓冲接口和内部控制与状态寄存器,可方便地完成多机间的非主从通信或主从通信。基于I2C总线的多机通信电路结构简单、程序编写方便,易于实现系统软硬件的模块化和标准化。 本文给出了基于I2C总线的多机通信调度指挥系统方案,讨论了系统的软硬件设计。 1 系统硬件设计 本调度指挥系统由主机和调度操作台两部分组成,工作原理如图1所示,两者间通过RS422总线实现较长距离的数据传送。主机和操行台内部均采用分散多处理器控制,处理器间采用I2C总线进行数据通信。   主机内部采用分
[网络通信]
1-Wire总线与DS18B20应用仿真(图)
  作为一种单主机多从机的总线系统,在一条1-Wire总线上可挂接的从器件数量几乎不受限制。为了不引起逻辑上的冲突,所有从器件的1-Wire总线接口都是漏极开路的,因此在使用时必须对总线外加上拉电阻(一般取5kΩ左右)。主机对1-Wire总线的基本操作分为复位、读和写三种,其中所有的读写操作均为低位在前高位在后。复位、读和写是1-Wire总线通信的基础,下面通过具体程序详细介绍这3种操作的时序要求。(程序中DQ代表1-Wire总线,定义为P1.0,uchar定义为unsigned char)    1 1-Wire总线的复位   复位是1-Wire总线通信中最为重要的一种操作,在每次总线通信之前主机必须首先发送复位信号。如程序
[安防电子]
1-Wire<font color='red'>总线</font>与DS18B20<font color='red'>应用</font>仿真(图)
基于CAN总线的87C196CA单片机串行通讯的应用
1  前言   CAN 是国际上应用很广泛的一种现场总线,MCS96 系列单片机是目前在工业界推广应用较广泛的嵌入式控制器,其87C196CA 单片机内核本身带有CAN 控制器,支持标准和扩展的信息帧,即遵循CAN2.0A 和CAN2.0B 协议。由此而构成的CAN 总线支持分布式控制和实时控制,其串行通信方式灵活可靠,传输距离较远。由于CAN 总线具有通信速率高、工作可靠性高、现场抗干扰能力强、网络连接方便和性能价格比高等优点,在汽车发动机控制部件、汽车抗滑系统、工业自动化、机床、电梯控制等领域得到了较为广泛的应用。 2  硬件构成 2. 1 CAN 总线连接   基于CAN 总线的两个87C196 单片机网络联接时,分别将
[单片机]
基于CAN<font color='red'>总线</font>的87C196CA单片机串行通讯的<font color='red'>应用</font>
mini2440裸机编程-----IIC—读写AT24C08
开始弄2440的裸机编程,争取尽快从最底层把这些硬件都熟悉掌握。 最初始从配置裸机开发环境开始的,本来想用jlink+ADS来进行下载,结果用ADS的调试器AXD通过jlink进行下载的时候,软件总是出现各种问题,这个问题折腾了有10天的时间,浪费了很长时间,最后重装了系统,都没有搞定。最后决定还是通过ADS来编译,然后用supervivi来进行下载了。现在经常出现的问题是 usb下载器总是识别不到,而且有时会导致电脑重启,应该是友善之臂提供的usb的驱动的问题,这些问题经常导致我折腾很长时间,心情很沮丧。有碰到并解决了类似问题的同学可以给我留个言。闲话少叙。 最开始写了uart的驱动试验,然后做了iic和iis的试验。先
[单片机]
s3c2440的IIC应用——读写AT24C02A
IIC(Inter-Integrated Circuit,I2C)总线是一种由PHILIPS公司开发的两线式串行总线,用于连接微处理器及其外围设备,它的最主要优点是简单和有效。它只需要数据线SDA和时钟线SCL,就能够实现CPU与被控IC之间、IC与IC之间进行双向传送。 s3c2440内部有一个IIC总线接口,因此为我们连接带有IIC通信模块的外围设备提供了便利。它具有四种操作模式:主设备发送模式、主设备接收模式、从设备发送模式和从设备接收模式。在这里我们只把s3c2440当做IIC总线的主设备来使用,因此只介绍前两种操作模式。在主设备发送模式下,它的工作流程为:首先配置IIC模式,然后把从设备地址写入接收发送数据移位寄
[单片机]
PROFIBUS-DP现场总线技术在磨床改造中的应用
     0 引言   宝钢2050 热轧磨辊车间装备的数控轧辊磨床是1988 年从德国WALDR ICH SIEGEN公司引进的。使用至今其控制系统各部件已逐步老化, 不仅故障率高而且性能下降,已经严重影响了轧辊的磨削精度和磨削效率。为了更好地满足轧线对轧辊质量的要求, 对磨床进行了全面改造,在这次改造中使用了目前在工业控制领域使用的PROFIBUS现场总线技术,这一技术的运用使得磨床基础自动化系统更为简洁实用。   1  PROFIBUS现场总线技术简介   1.1 PROFIBUS - DP概述   PROFIBUS是近年较为流行的工业现场总线,也是目前数据传输率较快的一种现场总线,其最高传输速率可达12Mb
[嵌入式]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
  • 学习ARM开发(16)
    ARM有很多东西要学习,那么中断,就肯定是需要学习的东西。自从CPU引入中断以来,才真正地进入多任务系统工作,并且大大提高了工作效率。采 ...
  • 学习ARM开发(17)
    因为嵌入式系统里全部要使用中断的,那么我的S3C44B0怎么样中断流程呢?那我就需要了解整个流程了。要深入了解,最好的方法,就是去写程序 ...
  • 学习ARM开发(18)
    上一次已经了解ARM的中断处理过程,并且可以设置中断函数,那么它这样就可以工作了吗?答案是否定的。因为S3C44B0还有好几个寄存器是控制中 ...
  • 嵌入式系统调试仿真工具
    嵌入式硬件系统设计出来后就要进行调试,不管是硬件调试还是软件调试或者程序固化,都需要用到调试仿真工具。 随着处理器新品种、新 ...
  • 最近困扰在心中的一个小疑问终于解惑了~~
    最近在驱动方面一直在概念上不能很好的理解 有时候结合别人写的一点usb的例子能有点感觉,但是因为arm体系里面没有像单片机那样直接讲解引脚 ...
  • 学习ARM开发(1)
  • 学习ARM开发(2)
  • 学习ARM开发(4)
  • 学习ARM开发(6)
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved