下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、单 片 机 模 拟 I2C 总 线 及 AT24C01 应 用 实 例I 2 C(Inter Integrated Circuit) 总 线 是 一 种 由 PHILIPS 公 司 开 发 的 两 线 式 串 行 总 线 , 用 于 连 接 微 控 制 器 及 其 外 围 设 备 。 I 2 C 总 线 产 生 于 在 80 年 代 ,最 初 为 音 频 和 视 频 设 备 开 发 , 如 今 主 要 在 服 务 器 管 理 中 使 用 ,其 中 包 括 单 个 组 件 状 态 的 通 信 。例 如 管 理 员 可 对 各 个 组 件 进 行 查 询 ,以 管 理 系 统 的 配 置 或 掌
2、握 组 件 的 功 能 状 态 ,如 电 源 和 系 统 风 扇 。可 随 时 监 控 内 存 、硬 盘 、网 络 、系 统 温 度 等 多 个 参 数 ,增 加了系统的安全性,方便了管理。1. I2C 总 线 特 点I 2 C总 线 最 主 要的优点是其简 单性和有效性。由于接口直接在组 件 之 上 ,因 此 I 2 C总线占用的空 间非常小,减少了电路板的空间和芯片管脚的数 量 ,降低了互联成本。总线的长 度 可高达25英尺,并且能够以10Kbps的最大传输速率支持40个组 件。I2C总线的另 一 个 优 点 是 ,它 支 持 多 主 控 (multimastering) , 其 中 任
3、何 能 够 进 行发送和接收的 设 备都可以成为主总线。一个主控 能够控制信号的传输和时钟频率。当然,在任何时间点上只能有一个主控。2. I2C 总 线 工 作 原 理2.1 总线 的构成及 信号类 型I2C总 线是 一种串行 数据总 线,只 有 二 根 信 号 线 ,一 根 是 双 向 的 数 据线SDA ,另 一 根 是 时 钟 线 SCL。 在 CPU 与被 控 IC 之间 、IC与 IC之间 进 行双 向 传 送 , 最 高 传 送 速 率 100kbps 。 各 种 被控 制电 路 均 并联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作, 所以每个电路和模块都有唯一的地址,
4、 在信 息 的 传输 过程中,I 2 C总线上并接的每一模块电路既是主控器(或 被 控器),又是发送器( 或接收器),这取决于它所要完成的功能 。CPU 发 出的 控制信号分 为地址码和控制量两部分,地址码用来选址,即接通需要控制的电路,确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及 需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独 立,互不相关。2.2 位的传输SDA 线上的数据必须在时钟的高电平周期保持稳定数据线的高或低 电平状态只有在SCL线的时钟信号是低电平时才能改变,见图1:72.3 开始信号SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据2.4
5、结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据2.5 应 答 信 号 :接收数据的IC 在 接 收 到8bit数据后 ,向发送数据的IC发 出特定 的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU接收到应答信号后,根据实际情况作出是否继续传递信号的判断 。若未收到应答 信号,由判断 为受控单元出现故障。2.6 总 线 基 本 操 作I 2 C 规程 运 用 主 /从 双 向 通 讯 。 器 件 发 送 数 据到总线上,则定义为发送器,器件接收数据则定义为接收器。主 器 件 和从 器 件(本 文为 AT24C01) 都 可
6、 以 工 作 于 接 收 和 发 送 状 态 。 总线必须由主器件(通常为微控制器CPU)控制,主器件产生串行 时 钟(SCL )控制 总线的传输方向,并产生起始和停止条件。SDA线 上 的数 据 状态仅 在SCL为低电平的期间才能改变,SCL 为 高电平的 期 间, SDA状态 的改 变 被 用 来 表 示 起 始 和 停 止 条 件 。 参 见 图 2。3. I2C 应 用 实 例 AT24C01AT24C 系 列 串 行 E2PROM 具 有 I2C 总 线 接 口 功 能 ,功 耗 小 ,宽 电源电压(根据不同型号2.5V6.0V),工作电流约为3mA,静态电 流随电源电压不同为30
7、A110 。3.1 AT24C 系 列 E2PROM 接 口 及 地 址 选 择由 于 I2C总线可挂接多个串行接 口器 件 , 在 I2C 总线 中每 个 器件 应 有 唯 一 的 器 件 地 址 ,按 I2C 总 线 规 则 ,器 件 地 址 为 7 位 数 据 ( 即 一 个 I2C 总 线系统中理论上可挂接128个 不 同 地 址 的 器件 ),它 和 1位 数 据 方 向 位 构 成 一 个 器 件 寻 址 字 节 ,最 低 位 D0 为 方 向 位 (读 /写 ) 。 器件寻址字节中的最高4位(D7D4)为器件型号地址,不同的I2C总线接口器件的型号地址是厂家给定的,如AT24C
8、系列E2PROM 的 型号地址皆为1010 ,器件地址中的低3位为引脚地址A2A1A0 ,对 应器件寻址字节中的D3、D2、D1位,在硬件设计时由连接的引脚 电平给定开始位彳 12c总线 控制字AT24C01 控制于A2AO R丽FT花鬲也址D? D6 D5 D4 D9 D2 D1 DO图3对于E2PROM 的片内地址,容量小于256字节的芯片(AT24C01/02), 8位片内寻址(A0A7)即可满足要求。然而对于容量大于256字节的芯片,则8位片内寻址范围不够,如AT24C16,相应的寻址位数应为11位(2 1 1 =2048)。若以256字节为1页,则 多于8位的寻址视为页面寻址。在AT
9、24C 系列中对页面寻址位采取 占用器件引脚地址(A2、A1、A0)的办法,如 AT24C16 将A2、A1、 A0作为页地址。凡在系统中引脚地址用作页地址后,该引脚在电路 中不得使用,作悬空处理。AT24C 系列串行E2PROM 的器件地址寻3.2 AT89S51 单 片机与 AT24C01 E2PROM 通 讯的硬 件实现图5 是用AT89S51 P2 口模拟I2C 总线与E2PROM 连 接电路图(以AT24C01 为例),由于AT24C01是漏极开路,图中R1、R2为上拉电阻(5.1k)。 A0A2地址引脚脚均接地。5V图5AT24C01 与51单片机接口3.3 AT24C 系列 E2
10、PROM 读写操作 软件实现方法对AT24C 系列E2PROM 的读写操作完全遵守I2C总线的主收 从发和主发从收的规则。3.3.1 AT24C01 的写操作写操作分为字节写和页面写两种操作,对于页面写根据芯片的一 次装载的字节不同有所不同。关于页面写的地址、应答和数据传送的 时序参见图6 和图7。连续写操作是对E2PROM 连续装载n个字节数据的写入操作,n随 型号不同而不同,一次可装载字节数也不同。AT24C01/028字节/每页AT24C04/08/1616 字节 /每页CPUiSHTSDA线24C二】动作图6写一个字节的时序图3.3.2 AT24C01b闽作SDA坡24coi动作图7写
11、一页的时序图的读操作19读操作有三种基本操作:当前地址读、随机读和顺序读。图10 给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9 个时钟周期不是不关心”。为了结束读操作,主机必须在第9个周期 间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后 发出停止条件。AT24C 系列片内地址在接收到每一个数据字节地址后自动加1, 故装载一页以内规定数据字节时,只须输入首地址,若装载字节多于 规定的最多字节数,数据地址将 上卷”,前面的数据被覆盖。连续读操作时为了指定首地址,需要两个伪字节写来给定器件地 址和片内地址,重复一次启动信号和器件地址(读),就可读出该地址 的数据。由于伪字
12、节写中并未执行写操作,地址没有加1。以后每读 取一个字节,地址自动加1。在读操作中接收器接收到最后一个数据字节后不返回肯定应答(保持SDA图电平)随后发停止信号CFg作SDA线24C01动作校制字BbitS 1 0 1 0 A2 Al AD 1数据n法控制军8b it 地址8b itSDA建24coi动作mmACK图9读任意地址内容CF作SDA葭2 Koi动作校翔字Bbit1i,KK止门 i:二二四-p 'Vr¥FN1 tet® *-*'数据门"图10读连续地址内容4 汇编写的24C01 单字节读写程序J24C01存储器I2C总线实验汇编图8读当前
13、地址内容技;站长:逸风;E-mail:;SDAEQUP2.0SCLEQUP2.1AddressEQU08HI2CDataEQU09HORG 0000HSTART:MOVSP,#60HMOVAddress,#00HMOVI2CData,#55HCALLI2C_WRITEMOVI2CDATA,#0AAHMOVAddress,#00HCALLI2CREADJ中山单片机学习网J;写入数据语言例子ew51仿真编程器配套实验板学习例智佳科MOVI2CData,A;读出数据NOPNOPMAIN:MAINJMP/*=写一个 字节Address 地址 I2CDatata 写入 的数据=*/I2C_WRITE:I
14、2C_WRITE_A:LCALLI2C_START ;启动开始传送信号MOVLCALLLCALLJC次发送MOV开始LCALLLCALLMOVA,#B ; I2C写入控制字I2C_SEND8BITI2C_ACKI2C_WRITE_AA,AddressI2C_SEND8BITI2C_ACKA,I2CData;=1 ,表示无确认,再;I2C写入从地址00H;I2C写入数据AAHLCALLI2C_SEND8BITLCALLI2C_ACKLCALLI2C_STOPRET/*=读一个 字节Address 地址 Data 读出 的数据=*/I2C_READ:;真正读之前先设置好读的控制字(采用写入方式通知
15、I2C )然后读,注意又要重新从启动I2C开始。I2C_READ_A:LCALLI2C_START ;启动开始信号MOVA,#B ;设置I2C 为读LCALLI2C_SEND8BITLCALLI2C_ACKJC I2C_READ_A ;=1 ,表示无确认,再次发送;设置读出地址;写入读出地址;应答MOVA,AddressLCALLI2C_SEND8BITLCALLI2C_ACKI2C_READ_B: 读出 I2C 数据LCALLI2C_START ;启动开始信号MOVA,#B ;I2C 读出LCALLI2C_SEND8BIT ;写入I2C控制字读出LCALLI2C_ACKJCI2C_READ_
16、BLCALLI2C_RECEIVE8BIT;MOVI2CData,ALCALLI2C_ACKLCALLI2C_STOPRET 尸=;发送开始信号I2C_START:SETBSCLSETBSDANOPNOPCLRSDANOPNOPCLRSCLRET;=;发送结束信号I2C_STOP:CLRSDANOPNOPSETBSCLNOPNOPSETBSDARETJ;发送接收确认信号I2C_ACk:应答信号SETBSETBNOPNOPJBCLRSJMPI2C_ACK0:SETBI2C_ACK_END:CLRSDASCLSDA,I2C_ACK0CI2C_ACK_ENDCSCLRET尸=;送八位数据I2CSEN
17、D8BIT:MOVB,#08HI2C_SEND8BIT_A:RLC AMOVSDA,CSETBSCLNOPNOPCLR SCLDJNZB,I2C_SEND8BIT_ARET尸=;接收八位数据I2C_RECEIVE8BIT:MOVB,#08HCLR A;SETBSDAI2C_RECEIVE8IT_A:SETBSCLNOPNOPMOVC,SDARLCA ;将读取数据通过C逐为移入累加器A中8次移动后就完成一个字节的接收。CLRSCL ; SCL为低 电平时才允许SDA数据改变数据指针自动加1指向下一位数据DJNZB,I2C_RECEIVE8IT_ARET5. C语言写的24C01 单字节读写程序/
18、*=24C01存储器I2C总线实验 C语言例子ew51仿真编程器配套实验板学习例程中山单片机学习网智佳科技站长:逸风E-mail:=*/#include#includesbitSDA=0x90;sbitSCL=0x91;/函数声明 unsigned char i2c_read(unsigned char);void i2c_write(unsigned char,unsigned char);void i2c_send8bit(unsigned char);unsigned char i2c_receive8bit(void);void i2c_start(void);void i2c_sto
19、p(void);bit i2c_ack(void);=void main(void)unsigned char dd;i2c_write(0x00,0x55);_nop_();dd=i2c_read(0x00);for(;)/*=i2c_write( 地址,数据),写一个字节=*/void i2c_write(unsigned char Address,unsigned char Data)doi2c_start();i2c_send8bit(0xA0);while(i2c_ack();i2c_send8bit(Address);i2c_ack();i2c_send8bit(Data);i2c
20、_ack();i2c_stop();return;/*= i2c_read( 地址,数据),写一个字节=*/unsigned char i2c_read(unsigned char Address)unsigned char c; doi2c_start();i2c_send8bit(0xA0);while(i2c_ack();/=1 ,表示无确认,再次发送i2c_send8bit(Address);i2c_ack();doi2c_start();i2c_send8bit(0xA1);while(i2c_ack();c=i2c_receive8bit();i2c_ack();i2c_stop();return(c);/=/发送开始信号void i2c_start(void)SDA = 1;SCL = 1;SDA = 0;SCL = 0;return;/发送结束信号void i2c_stop(void)SDA = 0;SCL = 1;SDA = 1; return;/ 发 送 接 收 确 认 信 号biti2c_ack(void)bitack;SDA = 1;SCL = 1;if(SDA=1)ack = 1;elseack = 0;SCL = 0; return (ack);/ 送 八 位 数 据void i2c
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2024年封闭式小区食堂托管合同2篇
- 2024年养老保障机制改进合同3篇
- 2024专属物业装修服务与维护合同
- 2024年大数据中心建设与运营外包合同
- 2024年度餐饮企业数据保护合同
- 2024年医疗设备采购招标委托协议3篇
- 2024年个人保险贷款协议3篇
- 2024年山东客运从业资格证考试试题及答案详解
- 2024年宁德客运从业资格证
- 2024年教练车授权转让协议3篇
- GB/T 44770-2024智能火电厂技术要求
- 2024年全国职业院校技能大赛中职组(婴幼儿保育赛项)省赛考试题库(含答案)
- 大学与文化传承智慧树知到期末考试答案章节答案2024年浙江大学
- 浙西南红军歌曲赏析智慧树知到期末考试答案章节答案2024年丽水学院
- 办理退休委托书
- 2023医院反恐防暴应急演练脚本
- 液氨制冷系统排氨实施方案和应急预案
- 修复知情同意书
- 《0-6岁儿童中医药健康管理技术规范》
- 基于单片机的多功能秒表的课程设计
- 物流战略规划
评论
0/150
提交评论