第9卷第9期 2010年9月 软件导刊 SoftwareGuide VO1.9 No.9 Seo.2010 基于ARM7TDMI模拟微控制器的I2C接口应用 熊书来 (福建星网锐捷网络有限公司网络研究院,福建福州350002) 摘 要:阐明了I2C总线的特性,以基于ARM7TDMI体系结构的新型ADp ̄C702x系列MicroConverter ADt ̄C7020为 例,介绍内带I2C接口的MCU的从设备设计要点和方法。 关键词:I2C;ARM7TDMI;ADp,C702x 中图分类号:TP273 文献标识码:A 文章编号:1672—7800(2010)09—0126—02 当连接一个以上的微控制器到IzC总线时,可能会存在超 1 IzC总线概述 1.1 I2C总线构成 I℃是Inter—Integrated Circuit的缩写.开发之前的初始目 过一个主机可以同时尝试初始化传输数据。为了避免由此产生 混乱,I2C总线提出一个仲裁过程,在实际工作中它依靠线与总 线接口到I2C总线。在这种工作环境下,如果两个或多个主机 的是为了保证电路板上IC之间的通信,它是由Philips在1980 年开发的双向两线式串联汇流排。因此具有FC的元件只要有 同时发送信息到总线,在其他主机都产生信号“0”的情况下, 首先产生一个…1’的主机将丢失仲裁。仲裁时的时钟信号是用 线与连接到SCL线的主机产生的时钟的同步结合。 在I2C总线上产生时钟信号通常是主机器件的责任,当在 两根线就能够实现相互资料互传.这种结构比平行结构的安全 性和可靠性更好。而且可以节省成本。 在I2C两根线中,一根用于产生时钟脉冲,名为SCL,另外 一总线上传输数据时每个主机产生自己的时钟信号。主机发出的 总线时钟信号只有在以下的情况才能被改变:慢速的从机器件 控制时钟线并延长时钟信号.或者在发生仲裁时被另一个主机 改变。 1.4 PC总线电平兼容 根用于资料传输,名为SDA,每个I2C器件都有一个唯一的 地址,而且可以是单接收的器件(例如:LCD驱动器)或者可以 接收也可以发送的器件(例如:存储器)。发送器或接收器可以 在主模式或从模式下操作.这取决于芯片是否必须启动数据的 传输还是仅仅被寻址。FC是一个多主总线,即它可以由多个连 接的器件控制。早期的I℃总线数据传输速率最高为100Kbits/ S,采用7位寻址。但是由于数据传输速率和应用功能的迅速增 加,I2C总线也增强为快速模式(400Kbits/s)和1O位寻址以满 I2C总线器件的电气规范和连接到它们的总线线路特性如 下:它有1.5V和3V固定输入电平.I2C总线器件每个都有它 们自己相应的电源电压上拉电阻,此电阻必须连接到一个5V +一10%的电源。输入电平连接到VDD的I2C总线器件必须有 1条公共的电源线连接到上拉电阻。当有固定输入电平的器件 足更高速度和更大寻址空间的需求。 1.2 I2C总线上数据传输的过程 与输入电平连接到VDD的器件混合使用时.后者必须连接到 1条公共的5V+一10%电源线,而且必须连接上拉电阻到SDA 和SCL管脚 I2C总线是一个多主机的总线,这就是说可以连接多于一 个能控制总线的器件到总线。由于主机通常是微控制器,让我 们考虑以下数据在两个连接到I℃总线的微控制器之间传输 的情况。这突出了I2C总线的主机一从机和接收器——发送器 通过使用双向电平转换器,可以将电源电压和逻辑电平不 同的两部分I2C总线连接起来。“低电压”部分有上拉电阻,而 且器件连接到3.3V的电源电压:”高电平”部分有上拉电阻,器 件连接到5V电源电压。两部分的器件都有与逻辑输人电平相 关的电源电压和开漏输出配置的I/0。 的关系。应当注意的是这些关系不是持久的,是由当时数据传 输的方向决定。 1.3 I C总线仲裁 作者简介:熊书来(1977一),男,福建福州人,福建星网锐捷网络有限公司网络研究院系统设计主管,研究方向为单片机及I℃。 第9期 熊书来:基于ARM7TDMI模拟微控制器的I2C接口应用 ・127・ 每条总线线路的电平转换器是相同的, 而且由一个分立的N通道增强型MOS—FET 管、串行数据线SDA的TR1和串行时钟线 SCL的TR2组成。门极g要连接到最电源电 压VDD1。源极s连接到“低电压”部分的总 线线路,而漏极d则连接到“高电压”部分的 总线线路。 2 ARM7TDMI简介 图1 PC中断服务程序处理流程 置I2C器件地址ID号。 当总线上产生起始信号,并接收到第一个字节后,设备把 收到的高7位地址和寄存器I2CxID0~I2CxID3中的器件地址进 行比较,看是否匹配,如果匹配,则自动产生ACK信号,同时设 置对应的I2CXSSTA状态,标识具体是哪个地址被主机寻址。设 备继续判断第8位(R/W),如果为‘0’,设备将进入接收器模 式,如果为‘1’,设备将进入发送器模式。 如果设备处于接收器状态,在数据传输的第9个时钟 (ACK)之后.设备把接收到的数据放人数据寄存器中并设置一 个状态位:如果使用了相应的中断,则将由该状态位产生一个 中断标志,程序指针也将指向中断入口地址(可以是FIQ也可 以是IRQ),由程序调用对应的中断服务程序进行处理。同样, 程序也可以通过查询的方式来完成这些工作。 如果设备处于发送器状态,在数据传输的第9个时钟之后 的一个时钟脉冲之内,程序应该把主机需要读取的数据放到发 送寄存器.该段程序执行所需要的时间,决定了设备支持的I2C 访问速率 值得注意的是,ACK信号产生在进入中断之前,也就是说 由硬件自动产生。而在有些MCU中,ACK信号可能是在软件 处理后通过设置标志位来决定是否发送ACK信号。 3.2 I2C中断服务程序流程 以SFP项目为例,I2C中断服务程序处理流程如图1所 3 AD ̄C702X简介 3.1 ADIxC702X中I2C工作在从模式时的寻址方式 (责任编辑:周晓辉) 在ADp ̄C702X中寄存器I2CxID0~I2CxID3用来保存用户配