版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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 个组 件。 I 2 C 总线的 另一个 优点 是,它 支 持多 主控 (multimastering) , 其 中任何 能够进 行发送 和接 收的 设备 都 可以 成为 主总 线。一 个
3、主 控能 够控 制信 号 的传 输和时钟频率。当然,在任何时间点上只能有一个主控。2. I2C总线 工作 原理2.1 总线 的 构成及信 号类型I2C 总 线是 一种 串行 数 据总 线,只 有二根信 号线,一 根是 双向 的 数据 线 SDA , 另 一 根 是 时 钟 线 SCL 。 在 CPU 与 被 控 IC 之 间 、 IC 与 IC 之间进 行双 向传 送, 最 高传 送速 率 100kbps 。各种 被控 制电 路均 并 联在这条总线上,但就像电话机一样只有拨通各自的号码才能工作, 所以每个电路和模块都有唯一的地址,在信息的传输过程中,I 2 C 总线上 并接 的 每 一模 块
4、电路 既是 主控 器(或 被控 器),又 是发 送器(或 接收器 ), 这取 决于 它 所要 完成 的 功 能。 CPU 发 出的 控制 信号 分为 地址码 和 控 制量 两部 分 , 地 址码 用来 选址 , 即 接通 需要 控制 的 电 路 , 确定控制的种类;控制量决定该调整的类别(如对比度、亮度等)及 需要调整的量。这样,各控制电路虽然挂在同一条总线上,却彼此独 立,互不相关。2.2 位的传输SDA 线上的数据必须在时钟的高电平周期保持稳定数据线的高或低 电平状态只有在SCL线的时钟信号是低电平时才能改变,见图1 :SOA/XSCLj/ 、r111数据有效 (111 p z / /L改
5、变数据',3 1 1'图12.3 开始信号SCL为高电平时,SDA由高电平向低电平跳变,开始传送数据2.4 结束信号:SCL为高电平时,SDA由低电平向高电平跳变,结束传送数据开始条件结束条件2.5 应 答信号 : 接收数 据 的 IC 在 接收 到 8bit 数 据后 ,向 发送 数据 的 IC 发出 特 定的 低电平 脉冲 ,表 示已 收 到数 据。 CPU 向 受控 单元 发出 一个 信号 后, 等待受 控单 元发 出一 个 应答信号 ,CPU 接收 到应 答信 号后 ,根 据实 际情况作出是否继续传递信号的判断。若未收 到应答信 号,由判断为 受控单元出现故障。2.6
6、总线基 本操作I 2 C 规程运用 主/从双向通讯。器件发送数据到总线上,则定 义为发送器,器 件接收数据则定义为接收器。主器件和从器件( 本文 为 AT24C01 ) 都 可 以 工 作 于 接 收 和 发 送 状 态 。 总 线 必 须 由 主 器 件(通常为微控制器CPU )控制,主器件产生串行时钟(SCL )控制总 线的传输方向,并产生起始和停止条件。SDA线上的数据状态仅在 SCL 为低电平的期间才能改变, SCL 为高电平的期间, SDA 状态的 改变被用来表示起始和停止条件。 参见图 2。3. I2C 应用 实例 AT24C01AT24C 系列串行 E2PROM 具有 I2C 总
7、线接口功能,功耗小,宽 电源电压(根据不同型号2.5V6.0V),工作电流约为3mA,静态电 流随电源电压不同为30讥110讥。3.1 AT24C 系 列 E2PROM 接 口 及 地址 选 择由于 I2C 总线可挂接多个串行接口器件, 在 I2C 总线中每个器 件应有唯一的器件地址,按 I2C 总线规则,器 件地址为 7 位数据(即 一个 I2C 总线系统中理论上可挂接 128 个不同地址的器件),它和 1 位数据方向位构成一个器件寻址字节,最 低位 D0 为方向位(读/写)。 器件寻址字节中的最高4位(D7D4)为器件型号地址,不同的I2CD?兀 D5 04 D9 D2 01 DO总线接口
8、器件的型号地址是厂家给定的,如AT24C 系列E2PR0M 的 型号地址皆为1010,器件地址中的低3位为引脚地址A2A1A0 ,对 应器件寻址字节中的D3、D2、D1位,在硬件设计时由连接的引脚 电平给定。'从勰件她址Il11111询AI西总线 控制字幵竽读*写雯确认1打10A2A1'A0R)WAT24C01 控制乎对于E2PR0M 的片内地址,容量小于256字节的芯片(AT24C01/02),8位片内寻址(A0A7)即可满足要求。然而对于容量大于256字节的芯片,则8位片内寻址范围不够,如AT24C16,相应的寻址位数应为11位(2 1 1 =2048)。若以256字节为1
9、页,则 多于8位的寻址视为页面寻址。在AT24C 系列中对页面寻址位采取 占用器件引脚地址(A2、A1、A0)的办法,如 AT24C16 将A2、A1、 A0作为页地址。凡在系统中引脚地址用作页地址后,该引脚在电路 中不得使用,作悬空处理。AT24C 系列串行E2PR0M 的器件地址寻3.2 AT89S51单 片机与AT24C01 E2PR0M 通 讯的硬 件实现图5 是用AT89S51 P2 口模拟I2C 总线与E2PR0M 连接电路图(以AT24C01 为例),由于AT24C01 是漏极开路,图中R1、R2为上拉电阻(5.1k)。A0A2地址引脚脚均接地。iv图5AT24C01 与51单片
10、机接口3.3 AT24C 系列 E2PROM 读写操作 软件实现方法对AT24C 系列E2PROM 的读写操作完全遵守I2C总线的主收 从发和主发从收的规则。3.3.1 AT24C01的写操作写操作分为字节写和页面写两种操作,对于页面写根据芯片的一 次装载的字节不同有所不同。关于页面写的地址、应答和数据传送的 时序参见图6 和图7。连续写操作是对E2PROM 连续装载n个字节数据的写入操作,n随 型号不同而不同,一次可装载字节数也不同。AT24C01/028字节/每页AT24C04/08/1616 字节 / 每页CPUiSHTSDA转24U!动作图6写一个字节的时序图cpuzibfESDA线2
11、4C01动作图7写一页的时序图332 AT24C01的读操作读操作有三种基本操作:当前地址读、随机读和顺序读。图10 给出的是顺序读的时序图。应当注意的是:最后一个读操作的第9 个时钟周期不是不关心”为了结束读操作,主机必须在第9个周期 间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后 发出停止条件。AT24C 系列片内地址在接收到每一个数据字节地址后自动加1, 故装载一页以内规定数据字节时,只须输入首地址,若装载字节多于 规定的最多字节数,数据地址将 上卷”前面的数据被覆盖。连续读操作时为了指定首地址,需要两个伪字节写来给定器件地 址和片内地址,重复一次启动信号和器件地址(读),
12、就可读出该地址 的数据。由于伪字节写中并未执行写操作,地址没有加1。以后每读 取一个字节,地址自动加1。在读操作中接收器接收到最后一个数据字节后不返回肯定应答 (保持SDA高电平)随后发停止信号。併吨件SDA线25动作控制罕BbitS 1 0 1 0 A2 Al AD 1数摇ftAC图8读当前地址内容开J±MlL丄丄.1 11 1No ACK始 控制宰Sb it 地址Bbit 話控制字时t图9读任意地址内容CF旧作SDA坡控制宇8bnACK2忙01动件C C誥*Vr“V”忡1敷据"2炯6”乳图10读连续地址内容4 汇编写的24C01 单字节读写程序24C01存储器I2C总线
13、实验汇编语言例子;ew51 仿 真 编 程 器程配套实验板学习例中山单 片机学习网 智佳科技站 长: 逸 风E-mail:SDAEQUP2.0SCLEQUP2.1AddressEQU08HI2CDataEQU09HORG 0000HSTART:MOVSP,#60HMOVAddress,#00HMOVI2CData,#55HCALLI2C_WRITE ; 写 入数 据MOVI2CDATA,#0AAH ;MOVAddress,#00HCALLI2C_READMOVI2CData,A;读出数据NOPNOPMAIN:MAINJMP/*= 写一个 字节 Address 地址 I2CDatata 写 入的
14、 数 据 = =*/I2C_WRITE:I2C_WRITE_A:LCALL I2C_START ; 启动开 始传 送信 号MOVLCALLLCALLJC次发送MOV开始LCALLLCALLMOVA,#B ; I2C 写入 控制 字 I2C_SEND8BIT I2C_ACKI2C_WRITE_AA,AddressI2C_SEND8BIT I2C_ACKA,I2CData;=1 ,表 示 无 确 认 ,再; I2C 写 入 从 地 址 00H; I2C 写 入 数 据 AAHLCALLI2C_SEND8BITLCALLI2C_ACKLCALL I2C_STOPRET/*=读一个字节Address
15、地 址Data 读出的数 据=*/I2C_READ: ;真正读之前先设置好读的控制字(采用写 入方式通知 I2C )然 后读 ,注 意又 要重 新从 启动 I2C 开 始。I2C_READ_A:LCALLI2C_START ;启动开始信号MOVA,#B ;设 置 I2C 为 读LCALLI2C_SEND8BITLCALLI2C_ACKJCI2C_READ_A ;=1 ,表示无确认,再 次发送MOVA,Address;设置读出地址LCALLI2C_SEND8BIT;写入读出地址LCALLI2C_ACK;应答I2C_READ_B:读出I2C 数 据LCALLI2C_START;启动开始信号MOVA
16、,#B ;I2C读出LCALLI2C_SEND8BIT;写 入 I2C 控 制字 读出LCALLI2C_ACKJCI2C_READ_BLCALLI2C_RECEIVE8BIT ;MOVI2CData,ALCALLI2C_ACKLCALLI2C_STOPRETJ;发送开始信号I2C_START:SETBSCLSETBSDANOPNOPCLRSDANOPNOPCLRSCLRETJ;发送结束信号I2C_STOP:CLRSDANOPNOPSETB SCLNOPNOPSETB SDARETJ;发送接收确认信号I2C_ACk: 应 答信 号SETBSDASETBSCLNOPNOPJBSDA,I2C_ACK
17、0CLRCSJMPI2C_ACK_ENDI2C_ACK0:SETBCI2C_ACK_END:CLRSCLRET;送八位数据I2C_SEND8BIT:MOV B,#08HI2C_SEND8BIT_A:RLC AMOVSDA,CSETB SCLNOPNOPCLR SCLDJNZ B,I2C_SEND8BIT_ARET;接收八位数据I2C_RECEIVE8BIT:MOVB,#08HCLR A; SETB SDAI2C_RECEIVE8IT_A:SETB SCLNOPNOPMOVC,SDARLCA ;将读取数据通过C逐为移入累加器A中8次移动后就完成一个字节的接收。CLRSCL ; SCL为低 电平时
18、才允许SDA数据改变数据指针自动加 1 指向下一位数据。DJNZB,I2C_RECEIVE8IT_ARET5. C 语言写的 24C01 单 字节 读 写程 序/*=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_sen
19、d8bit(unsigned char);unsigned char i2c_receive8bit(void);void i2c_start(void);void i2c_stop(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
20、_start();i2c_send8bit(0xA0);while(i2c_ack();i2c_send8bit(Address);i2c_ack();i2c_send8bit(Data);i2c_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_sen
21、d8bit(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;/ 发 送 接 收 确 认 信 号bit i2c_ack(void)bit ack;SD
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 化工生产8s管理制度
- 梦天木门生产管理制度
- 生产部门抽牌管理制度
- 纸板生产管理制度
- 安全生产十项管理制度
- 2025江西师范大学图书馆非事业编制聘用人员招聘1人备考题库带答案详解
- 2025年哈尔滨方正县“归雁计划”备考题库及答案详解一套
- 2026河南郑州市巩义市国有资产投资经营公司招聘10人备考题库参考答案详解
- 2025北京对外经济贸易大学政府管理学院非事业编人员招聘1人备考题库及完整答案详解
- 2025重庆大学输变电装备技术全国重点实验室劳务派遣项目研究人员招聘备考题库(长期有效)附答案详解
- 《微压富氧康养整体空间设备》
- 卫星互联网基础知识培训课件
- 2025年敖汉旗就业服务中心招聘第一批公益性岗位人员的112人模拟试卷含答案详解
- 婚姻家庭继承实务讲座
- 湖南省长沙市中学雅培粹中学2026届中考一模语文试题含解析
- 新内瘘穿刺护理
- 钳工个人实习总结
- 大健康养肝护肝针专题课件
- 道路高程测量成果记录表-自动计算
- 关于医院“十五五”发展规划(2026-2030)
- DB31-T 1587-2025 城市轨道交通智能化运营技术规范
评论
0/150
提交评论