版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、5.6 I2C 总线接口与编程,一、I2C总线(Inter Integrated Circuit Bus)概述 I2C总线是由Philips公司推出的一种新型总线标准,是二线制同步串行数据传输总线,具有控制方式简单,器件封装形式小,通信速率高等特点。 I2C总线上挂接的器件和设备(也可统称为节点)可以多达112个,每个设备或器件都有自己的地址编号(也称为节点地址)。 I2C总线通过SDA(串行数据线)及SCL(串行时钟线)两根线在连到总线上的器件之间传送信息并根据地址识别每个器件(选中节点)。,I2C总线上允许连接多种接口电路如MCU、A/D及D/A转换器、实时时钟/日历、LCD驱动器、温度传
2、感器、键盘接口等,也可以连接串行E2PROM。 挂接在I2C总线上的器件或设备的所有SDA端挂接在SDA总线上,所有的SCL端挂接在SCL总线上,总线的接口电路均为漏极开路,故总线上必须接上拉电阻。 I2C总线的驱动能力为400pF,最高扩展为4000pF,传输速率原限定为100Kbps,在版本1.0-1992中,允许传输速率达到400Kbps,在版本2.0-1998中,允许传输速率达3.4Mbps, 传输时数据高位在前,低位在后。 I2C 总线使设计人员和厂商都得益。,典型的I2C总线微控制器应用系统,典型的带有IIC总线接口的器件,时钟芯片:PCF8583 存储器芯片:24XX、24C64
3、 A/D芯片:PCF8591 D/A芯片:MAX517、TC1320/1321 温度传感器:DS1621、AD7416 I/O口芯片:PCF9535、PCF8574 LED数码管驱动芯片:SAA1064 湿度、湿度传感器:SHT11,IIC总线接口的电气结构,二、 I2C总线的工作原理,主器件(主机)、从器件(从机): 启动在总线上传送数据,并产生时钟脉冲,以允许与被寻址的器件进行数据传送的器件,称为主器件,被寻址的器件,称为从器件。,一般而言,任何器件均能成为从器件,只有微控制器才能成为主器件。主、从器件对偶出现,工作在接收还是发送数据方式,由器件的功能和数据传送的方向所决定。 总线允许连接
4、多个微控制器,显然不能同时存在两个主器件,先控制总线的器件成为主器件。可能有几个微控制器同时企图控制总线成为主器件,这就产生了总线竞争的协议,竞争成功的器件成为主器件,其他则退出。竞争过程中,数据不会被破坏、丢失。数据只能在主、从器件间传送,结束后,主、从器件将释放总线,退出主、从器件角色。 总线上存在主、从器件时,总线处于忙的状态,反之,总线处于空闲状态,此时,器件才有机会控制总线成为主器件。 对于系统中的某一器件来说,有四种可能的工作方式:主发送方式、主接收方式、从发送方式、从接收方式。但不管哪种方式,只有主器件的SCL是有效的,主器件的SCL一定是输出的。,位传送及数据的有效性 I2C总
5、线数据传送采用时钟脉冲逐位串行传送方式。SDA 线上的数据必须在时钟的高电平周期保持稳定。SDA数据线的高或低电平状态只有在SCL 线的时钟信号是低电平时才能改变。,起始、停止条件,在SCL 线是高电平时,SDA 线从高电平向低电平切换,这个情况表示起始条件(开始信号S)。 当SCL 是高电平时,SDA 线由低电平向高电平切换表示停止条件(结束信号P)。 起始和停止条件一般由主机产生,总线在起始条件后被认为处于忙的状态;在停止条件的某段时间后,总线被认为再次处于空闲状态。,字节传送及格式,发送器件送到SDA线上的每个字节必须为8位长,先传送高位,与之对应,主器件在SCL线上产生8个脉冲,第9个
6、脉冲低电平期间,发送器件释放SDA线,即置高SDA,接收器件则把SDA线拉成低电平,以给出一个接收确认位;第9个脉冲高电平期间,发送器件收到这个确认位,即开始下一字节的传送,下一字节的第一个脉冲低电平期间,接收器释放SDA。每个字节需要9个脉冲,每次传送的字节数是不受限制的。,接收器接收确认信号 拉低SDA,ACK,保持低电平,ACK,确认信号(应答信号),接收器件必须确认数据的接收,确认位(Acknowledge,亦称应答信号)相对于主器件产生的一个时钟,在这个时钟内发送器释放SDA线,如前图。 若一个从器件在处理一个实时事件时,从器件不给出确认信号,此时,主器件产生一个结束信号使传送异常结
7、束,传送数据无效。 在主器件接收的传送中,主器件接收器对最后一个数据字节不予确认(not acknowledge,非应答信号),以对从器件指出数据传送的结束,从发送器释放SDA线,使主器件能产生一个结束信号。,A,寻址,I2C总线上器件的寻址。器件地址由7位组成。它和1位数据方向位(R/W)构成了I2C总线的寻址字节SLA(从器件地址)。 DA3、DA2、DA1、DA0:器件地址,是I2C总线外围接口器件固有的地址编码,器件出厂时就已给定,用它来识别器件类型。如I2C总线EEPROM AT24C的器件地址为1010,4位LED驱动器SAA1064的器件地址为0111,四通道8位A/D加一路D/
8、A的PCF8951,其器件地址为1001,8位I/O的PCF8547器件地址为0100。 A2、A1、A0:引脚地址。有8种选择与A2A1A0的地址相对应。例如,扩展EEPROM的系统最多允许8片AT24C02可以连接在系统中。,SLA,R/W: SLA的最低位R/W确定读或写,即确定数据的方向,最低位R/W为0时表示主器件把第一字节后的数据写到所选择的从器件,为1表示主器件将从从器件读数据。开始信号后,系统中各个器件将自己的地址和主器件送到总线上的从器件地址进行比较,如果发生匹配,该器件认为被主器件寻址;从接收或从发送则由R/W位来确定,对从器件写操作,开始信号后的第一个字节为器件寻址,从器
9、件确认后,主器件发出的第二字节为从器件内部单元的地址即内部数据单元寻址,以后的数据为写入传送的数据。 对从器件进行读操作时,首先仍旧要器件寻址,不需内部数据单元寻址,第二字节即为读出的数据,该数据属于前面读写操作中最后访问的内部地址加1单元的内容。,I2C总线的传送数据的格式,ACK=0为应答信号,ACK=1为非应答信号。当发送方为主器件(即主器件写操作时),在主器件发送最后一个字节时,从器件不发应答信号(ACK=0),而是给出一个”非应答信号“(ACK=1),相当于告诉发送方(发送方为主器件),终止这次发送,则主器件发送方将不再送出数据。,ACK=0为应答信号,ACK=1为非应答信号。当接收
10、方为主器件(即主器件读操作是时),在主器件接收到最后一个字节时,主器件不发应答信号(ACK=0),而是给出一个”非应答信号“(ACK=1),相当于告诉发送方(发送方为从器件),终止这次发送,则从器件发送方将不再送出数据。,主接收方式中,主发送器寻址从接收器,从接收器接收数据并确认后,主发送器变成主接收器,从接收器变成从发送器,结束信号仍由主器件产生。在传送中读写改变时,要重复开始信号和传送地址,其中R/W位反向。,总线定时,I2C总线上时钟最少低电平周期为4.7us,最少高电平周期4 us,主器件产生的总线时钟频率为(0一100)kHz。对于诸如没有I2C接口的51系列微控制器,可以通过延长时
11、钟的低电平期来降低时钟速率,使之和从器件内部操作速度匹配。,三、用51单片机虚拟I2C串口总线读写24CXX,24C32/24C64是I2C总线接口的E2PROM,容量为4/8 K字节,可擦除/写入100万次,数据可保持200年,8脚封装,性价比高。89C51没有内置数据E2PROM,使用24C32作为数据断电保存较为合适。由于89C51没有硬件I2C总线接口,必须用软件在普通I/O口上虚拟I2C总线接口时序,才能读写。,89C51写24CXX的流程,89C51写24CXX一字节的步骤: (l)89C51发启动位。 (2)89C51发控制字节,包括7bit从机芯片地址,1 bit“0“,写标识
12、。 (3) 24CXX发应答ACK。 (4)89C51发写数据的单位地址,8 bit。 (5)24CXX发应答ACK。 (6)89C51发写数据的值,8 bit。 (7)24CXX发应答ACK。 (8) 89C51发停止位。,89C51读24CXX的流程,89C51读24CXX一字节的步骤: (l) 89C51发启动位。 (2) 89C51发控制字节,包括7 bit从机芯片地址和1bit“0”写标识。注意,尽管是读模式,此处还是用“0”写标识,用以将后随的单元地址写入24CXX内部的指针寄存器。 (3) 24CXX发应答ACK。 (4) 89C51发8 bit读数据的单元地址。 (5) 89C
13、51重发启动位。 (6) 89C51再发控制字节,包括7bit从机芯片地址和1 bit“1”读标识。表示下面将读取24CXX发出的数据。 (7) 24CXX发应答ACK。 (8) 24CXX发指定单元的值,8 bit,时钟仍然由89C51发出。 (9) 89C51发一个无应答信息NO ACK。 (10)89C51发停止位。,24CXX内部的指针寄存器在一次读操作完成后会自动增1,因此如果想读后续单元,第9步89C51改发应答ACK,重复执行第6步到第9步,就可以连续读。89C51发一个非应答信息No ACK及一个停止位可以退出读模式。,编程,/* 启动IIC */ void IICStart(
14、void) SCL=0; SDA=1; SCL=1; _nop_(); _nop_(); _nop_(); SDA=0; _nop_(); _nop_(); _nop_(); _nop_(); SCL=0; SDA=1; ,/* 停止IIC总线 */ void IICStop(void) SCL=0; SDA=0; SCL=1; _nop_(); _nop_(); _nop_(); SDA=1; _nop_(); _nop_(); _nop_(); SCL=0; ,SDA,SCL,SDA,SCL,4.7us,4us,4us,4.7us,S,P,/* 检查应答位 */ bit IICRecAck
15、(void) SCL=0; SDA=1; SCL=1; _nop_(); _nop_(); _nop_(); _nop_(); CY=SDA; /* 应答位返回值在CY中,0有效 */ SCL=0; return(CY); ,8,9,SDA,SCL,4us,/* 对IIC总线产生应答信号 */ void IICAck(void) SDA=0; SCL=1; _nop_(); _nop_(); _nop_(); _nop_(); SCL=0; _nop_(); SDA=1; ,/* 对IIC总线产生非应答信号 */ void IICNoAck(void) SDA=1; SCL=1; _nop_(); _nop_(); _nop_(); _nop_(); SCL=0; ,8,9,SDA,SCL,8,9,SDA,SCL,/* 向IIC总线写数据 */ void IICSendByte(unsigned char sendbyte) unsigned char data j=8; for(;j0;j-) SCL=0; sendb
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理核心要素解析
- 护理服务流程中的患者安全与隐私保护
- 名师解析护理考试易错题
- 护理与医疗教育
- 河北邯郸市2026届高三第一次模拟检测英语试卷(含答案)
- 护理个案:护理应急处理
- 零售业店铺行政人员面试宝典
- 二级建造师执业资格考试模拟试题及答案
- 基于项目的数学学习策略研究
- 零售业门店长招聘的面试技巧
- 2025年九江学院护理单招题目及答案
- 图书馆志愿者培训课件
- 2026年许昌电气职业学院单招职业倾向性测试题库附答案
- 云南省2025年春季学期期末普通高中学业水平合格性考试《信息技术》试卷(解析版)
- 2025年公安部交管局三力测试题库及答案
- 飞灰填埋场安全培训报告课件
- 2025年度社工《社会工作实务》考试题库(附答案)
- GB/T 15072.4-2025贵金属合金化学分析方法第4部分:钯含量的测定
- 安全防护用品使用培训课件
- 矿业可持续供应链管理-洞察及研究
- 英语口语课件自我介绍
评论
0/150
提交评论