i2c总线的串行扩充技术_第1页
i2c总线的串行扩充技术_第2页
i2c总线的串行扩充技术_第3页
i2c总线的串行扩充技术_第4页
i2c总线的串行扩充技术_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、020 387309163873091738730976I2C总线具有十分完善的总线协议 可多主系统 在协议支持下 可自动处理总线上任何可能的运行状态 本篇主要介绍I2C拟技术应用十分广泛 (本文节选自恩师 I2C11I2C扩展示意图中表示出单片机应用系统常用的I2C总SRAM E2PROM ADC/DAC RTC I/O 口 DTMF1 I2C许多通用接口如键盘 码盘接口和 I2CI2CI2CI2020 387309163873091738730976I2C总线具有十分完善的总线协议 可多主系统 在协议支持下 可自动处理总线上任何可能的运行状态 本篇主要介绍I2C拟技术应用十分广泛 (本文节

2、选自恩师 I2C11I2C扩展示意图中表示出单片机应用系统常用的I2C总SRAM E2PROM ADC/DAC RTC I/O 口 DTMF1 I2C许多通用接口如键盘 码盘接口和 I2CI2CI2CI2CSFR 除了图 1器件外 Philips器件 在通信音像 I2C2I2CCMOSI2CI2C1020 387309163873091738730976量器件都有一个器件地址 总线上扩展制3总线为双向同步串行总线 因此 I2C25-2 80C51I2C4I2CI2C址寄存器件 称为主器件的从地址 I2C 7 位组成 它和1向 020 387309163873091738730976量器件都有一

3、个器件地址 总线上扩展制3总线为双向同步串行总线 因此 I2C25-2 80C51I2C4I2CI2C址寄存器件 称为主器件的从地址 I2C 7 位组成 它和1向 是 I2C件器件地址 DA3 DA2 DA1 出厂时 就已给定 例如 I2CE2PROMAT24CXX1010 4LED引脚地址 A2 A1 A2 A1 A0源或接地的不同 形成的地址数据数据方向 收 发数据方向位规定了总线上主节点对从节点的数据传送方向 R 二 主方式下的I2C1 I2C1 多主应用的I2CI2CI2C口单片机时 会出现多主竞争的复杂状态 I2C 总线软 硬件协议 以及 I2C2020 38730916387309

4、1738730976机中的 SFR 保证了多主竞争时的协调管理 I2C器中定位后 利线上出现的 26 种状态 在使用 I2C 总线时编制出归一化操作命令 用于 I2C多主系统的虚拟 I2C 总线 就必须在虚拟 I2C决多主竞争状况 这几乎是不可能的 因此 在多主的 2 单片系统中的 I2C总线系统中 一定要使用带 在单主方式的I2C总线系统中总线上只有一个单片机其余都是带I2C总线节点也不必有自己的节点地址 在这种情况下 单片机可以没有 I2C 总线接口 可以用两根I/OI2CI2C 总线都是单主系统 因此 I2C用十分广泛 目前 包括许多单主系统中 单片机节点不会成为从节点 故虚拟 020

5、387309163873091738730976机中的 SFR 保证了多主竞争时的协调管理 I2C器中定位后 利线上出现的 26 种状态 在使用 I2C 总线时编制出归一化操作命令 用于 I2C多主系统的虚拟 I2C 总线 就必须在虚拟 I2C决多主竞争状况 这几乎是不可能的 因此 在多主的 2 单片系统中的 I2C总线系统中 一定要使用带 在单主方式的I2C总线系统中总线上只有一个单片机其余都是带I2C总线节点也不必有自己的节点地址 在这种情况下 单片机可以没有 I2C 总线接口 可以用两根I/OI2CI2C 总线都是单主系统 因此 I2C用十分广泛 目前 包括许多单主系统中 单片机节点不会

6、成为从节点 故虚拟 I2C 总线只有主方式下的主发送和主方式下的 I2C 总线虚拟 应按照 I2C出主方式下的时序模拟子程序主发送/主接收子程序并将这些了程序归纳成虚拟I2C总线包 包的基础上给出归一化的 I2C 总线操作命令 使用者只须将虚拟 I2C总 I2C3I2C 传送的字节数没有限制 只要求每传送一个字节后 在总线传送完一个字节后 可以通过对时钟线的控制 使传送暂停 例如 当某个外围器件接收 N应答信号后 使 SCL 变低电平 控制总线暂停 如果主节点要求总线暂停 也可使时钟线保持低电平 控制总线暂停3 I2CI2CI2C号有起始信号 终止信号 应答信号 A43020 38730916

7、38730917387309764 I2C起始信号 终止信号 P I2C 总线数据传送应答信号 应答 信号 SCLI2C9高电平时为 非应答 信号 83程总线上一次完整的数据传送如图5所示 其完整的数据操作包括起始 寻址字节 SLA应答 发送数据 应答直到终止 对于不同方式下的操作略有不同 5 1N:主节点发送 从节点接收寻址字节 写020 3873091638730917387309764 I2C起始信号 终止信号 P I2C 总线数据传送应答信号 应答 信号 SCLI2C9高电平时为 非应答 信号 83程总线上一次完整的数据传送如图5所示 其完整的数据操作包括起始 寻址字节 SLA应答 发

8、送数据 应答直到终止 对于不同方式下的操作略有不同 5 1N:主节点发送 从节点接收寻址字节 写2器件节点发送N个字节数据数据操作格式如其中 SLAR 寻址字节 SLARI2C4AAPSAAAAAPSAAA020 387309163873091738730976I2CI2CI2C包的支持下自动完成 应用程序设计时只要按照归一化的操作指令准备I2C器件中 器件三 主方式下的虚拟I2C包为了在使用虚拟 I2CI2C包 VIIC 并在 VICC1020 387309163873091738730976I2CI2CI2C包的支持下自动完成 应用程序设计时只要按照归一化的操作指令准备I2C器件中 器件三

9、 主方式下的虚拟I2C包为了在使用虚拟 I2CI2C包 VIIC 并在 VICC1 典型信号的时序要求I2C 总线数据传送时 有起始位 终止位 发送 0 及应答位 发送 及非应答位 A 等信号 按照典型 I2C6 I2CI2CVSDAVSCL 时钟线 80C512 s 起始 终止 发送应答位 MACK 发送非应答位 STA STOP 5020 387309163873091738730976MACK MNACK SETBNOP如果单片机的主时钟不6MHZI2C 总线的数据操作中可以看出 除了基本的启动 终止 位 发送非应答位 MNACK 外 还应有应答位检查 CACK 和归一化的读写子程020

10、 387309163873091738730976MACK MNACK SETBNOP如果单片机的主时钟不6MHZI2C 总线的数据操作中可以看出 除了基本的启动 终止 位 发送非应答位 MNACK 外 还应有应答位检查 CACK 和归一化的读写子程序 如发送一个字节 个字节的子程序 在应答位检查子程序 接收一个字节 发送N个字节 WRNBYT 和接收中设置了标志位 CACKF0正常应答位后 F0=0 CACK SETBCEND C VSDA VSDA使 VSDA 上数据有效预设 F0=0VSDACEND 无正常应答 子程序结束 发送一个字节数据 I2CVSDA6020 38730916387

11、3091738730976R0 1 判断发送 1 还是 发送 0 转8发送 1 程序段发送 0 程序段该子程序用来从VSDA执行本程序后 VSDARDBYT MOV RLP 资源占用 R0 R008H C C8R0读入 0020 387309163873091738730976R0 1 判断发送 1 还是 发送 0 转8发送 1 程序段发送 0 程序段该子程序用来从VSDA执行本程序后 VSDARDBYT MOV RLP 资源占用 R0 R008H C C8R0读入 0 程序段 由CR2AAR2 A R0 8在 I2C器件发送多个字节数据 本VSDANI2C线规定的读 写操作格式进行 如主控器

12、向 I2C 总线上某个字节时 其数据操作格式如下其中 器件寻址字节 如下WRNBYT R3 7SAAAdata AP020 387309163873091738730976A F0 WRNBYT R3 R3 STA WRBYT CACKMTD 主节点发送数据缓冲区首址RAM器件寻址字节存放单元NUMBYT 发送数据字节数存放单元数据缓冲区中 调用本子程序后 N从N 个字节数据 RDNBYT 子程序在I2C总线系统中主控器按主接收方式AN器件寻址字节 如下R3 NUMBYT A SLA 020 387309163873091738730976A F0 WRNBYT R3 R3 STA WRBYT

13、 CACKMTD 主节点发送数据缓冲区首址RAM器件寻址字节存放单元NUMBYT 发送数据字节数存放单元数据缓冲区中 调用本子程序后 N从N 个字节数据 RDNBYT 子程序在I2C总线系统中主控器按主接收方式AN器件寻址字节 如下R3 NUMBYT A SLA 发送寻址字节 N 节读完否?未完转 ACK 8data APSAdata Adata A020 387309163873091738730976ACK: R3 STA STOP WRBYT RDBYT MACK MNACK 等子程序 须满足这些子程序的调用要求 RDNBYT单元 除了在 WRNDYTSLA MTD NUMBYTSLA

14、器件寻址 读 存放单元MRDRDNBYTSUBADRN入主节点片内以 MRD 为首址的数据缓冲器中主方式虚拟I2C1VIIC020 387309163873091738730976ACK: R3 STA STOP WRBYT RDBYT MACK MNACK 等子程序 须满足这些子程序的调用要求 RDNBYT单元 除了在 WRNDYTSLA MTD NUMBYTSLA 器件寻址 读 存放单元MRDRDNBYTSUBADRN入主节点片内以 MRD 为首址的数据缓冲器中主方式虚拟I2C1VIICSTA STOP MACK MNACKCACK RDBYT WRNBYT RDNBYT 9020 387

15、309163873091738730976C VSDA R0 #08H R0 020 387309163873091738730976C VSDA R0 #08H R0 R0 A020 387309163873091738730976A AF0 WRNBYT R3 R3 NUMBYT A SLA F0 RDNR1 #MRD C020 387309163873091738730976A AF0 WRNBYT R3 R3 NUMBYT A SLA F0 RDNR1 #MRD CR0 R1 R2 R3 寻址字节 SLAW/R 存放单元2 归一化的通用读写子程序 I2C3支持下 I2C 020 387

16、3091638730917387309767 可以看出 与应用程序设计直接相关的有 寻址字节 7 虚拟I2C寻址字节 寻址字节有寻址字节 写 SLAW 读 SLAR 寻址字节12数据操作格式 由具体节点器件给出的 能完全表达器件工作过程中 数据操3VIIC适用范围 虚拟 I2C总线只适用于主方式下I2C总线41包 VIIC 装载 在虚拟 I2C23通用包中标记符号赋值 VIIC 中有许多标记符号 要根据系统的资源分配 在虚拟I2C虚拟I2C020 3873091638730917387309767 可以看出 与应用程序设计直接相关的有 寻址字节 7 虚拟I2C寻址字节 寻址字节有寻址字节 写

17、SLAW 读 SLAR 寻址字节12数据操作格式 由具体节点器件给出的 能完全表达器件工作过程中 数据操3VIIC适用范围 虚拟 I2C总线只适用于主方式下I2C总线41包 VIIC 装载 在虚拟 I2C23通用包中标记符号赋值 VIIC 中有许多标记符号 要根据系统的资源分配 在虚拟I2C虚拟I2C4 使用归一化操作命令MOV SLA #SLAW/#SLAR NUMBYT #NLCALL 指向那个节点 并认定发送 SLAW 还是接收 四E2PROMI/O 虚拟I2C020 387309163873091738730976E2PROMADC/DAC 有 LED8LEDI2CVIIC 并假设 V

18、IIC020 387309163873091738730976E2PROMADC/DAC 有 LED8LEDI2CVIIC 并假设 VIIC这样 在应用程序实例中SLA #SLAR/W 只使用以下三条归一化操作指令 即VIIC行了以下伪指令定义 1 器件选择I2CE2PROM 有许多型号系列 其中 AT24CXX CAT24WC01/02/04/08/16128*8/256*8/512*8/1024*8/2048*8 9 CAT24WC02 的E2PROM9 a020 387309163873091738730976图9 AT24C02及2 电路设计AT24C02TEST 脚为测试端 系统中可

19、接地处理 A2 A1 A0I2C88*256*8=2048*88256*8CAT24WC04 则 A0CAT24WC08 CAT24WC16A1 A2A23 节点地址CAT24WC02XX1010 A2 A1 A09 b 中的连接方式000 因此 CAT24WC02SLAW=A0H SLAR=A1H2 CAT24WC02CAT24WC02图 成 由于 E2PROM写入时间为 5-10ms 如查从外部直接写入 每写一个字节都要等候 5-10ms 成批数据写入时等候时间很长 在设置 SRAM 性质的输入缓冲器时 对 E2PROM 的写入变成对 SRAM 缓冲器的装载 装载完后启动一个自动写入逻辑将

20、缓冲器中的全部数据一次写入 E2PROM 阵列中 对缓冲器的输入称为页写 缓冲器的空量称为页写字节数 CAT24WC028 占用最低 33址开始写入 不超过页写字节数时 对 E020 387309163873091738730976图9 AT24C02及2 电路设计AT24C02TEST 脚为测试端 系统中可接地处理 A2 A1 A0I2C88*256*8=2048*88256*8CAT24WC04 则 A0CAT24WC08 CAT24WC16A1 A2A23 节点地址CAT24WC02XX1010 A2 A1 A09 b 中的连接方式000 因此 CAT24WC02SLAW=A0H SLA

21、R=A1H2 CAT24WC02CAT24WC02图 成 由于 E2PROM写入时间为 5-10ms 如查从外部直接写入 每写一个字节都要等候 5-10ms 成批数据写入时等候时间很长 在设置 SRAM 性质的输入缓冲器时 对 E2PROM 的写入变成对 SRAM 缓冲器的装载 装载完后启动一个自动写入逻辑将缓冲器中的全部数据一次写入 E2PROM 阵列中 对缓冲器的输入称为页写 缓冲器的空量称为页写字节数 CAT24WC028 占用最低 33址开始写入 不超过页写字节数时 对 E2PROMSRAM 的操作相同 若超过页写字节数时 应等候 5-10ms 后再启动一次写操作由于缓冲区容量较小 只

22、占据最低 3883 AT24CXXI2C 总线中 对 存储单元读写时 址外还须指定读 写的子 地 址CAT24WC02的器件手册 读 写图(1)写N(2)读N.APSAASAAAAPSAAAA020 387309163873091738730976因此 在读 N 操作前 要进行一个字节 的写操作 然后重新启动读操(三 LED1 1 器件选择I2CLEDSAA10642LED4LEDADR 但可选择 4态 故一个 I2C4SAA1064 最多可扩展 16LEDSAA10642 电路设计11 b 是由两片 8LEDSAA1064SAA1064ADR11 SAA10648LED3 节点地址SAA10

23、640111ADRA2 A1 A0020 387309163873091738730976因此 在读 N 操作前 要进行一个字节 的写操作 然后重新启动读操(三 LED1 1 器件选择I2CLEDSAA10642LED4LEDADR 但可选择 4态 故一个 I2C4SAA1064 最多可扩展 16LEDSAA10642 电路设计11 b 是由两片 8LEDSAA1064SAA1064ADR11 SAA10648LED3 节点地址SAA10640111ADRA2 A1 A0ADR模拟电平的比较编址 ADR0 3/8VDD VDDA2 A1 A0000 001 010 011在图 11(b)中 两

24、片 SAA1064 有两个节点地址 为连接简单 通常 ADR 一个接地 一按图中接法 SAA1064 1 的SLAW/SLAR为70H/71H SAA1064 2 的 2 SAA10641 封装与引脚功能P1-aSAA1064 DIP24地址引脚端 44 个引脚地址时钟振荡器外接电容 典型值为 2.7nF段驱动输出端口 分别为两个 8 P1 P9 P8 P16最口锁存器置 1I2C020 387309163873091738730976SAA1064 有2*82LEDMX1 MX24LED11 b 即是 SAA1064LEDP1-P161 时 端口为低电平状态 相应的 LED点亮 LED 为共

25、阳极器件 但由于段驱动为送 1 点亮 LED3 具有较强的控制功能 能实现亮度控制这些控制位都设置在控制命令 COM 显示器测试 静 动态及位的亮控静 动态显示选择 C0=11 3 暗亮选择 C1=12 4测试位 C3=1时 C5 C6 驱动电流控制位 C4 C5 C6 1 时 驱动电流分别为 3mA 12mA13 数据操作格式SAA1064SUBADR COM data1-data4 SUBADR=00H 按控制要求选择 data1-data4 为共阴极段码 SLAW 为寻址字节 写四 I/O1 1 器件选择I2C电路中 有 I/OPCF8574出的8 位准双向口 可广泛用于 I/O 口接口

26、扩展PCF8574020 387309163873091738730976SAA1064 有2*82LEDMX1 MX24LED11 b 即是 SAA1064LEDP1-P161 时 端口为低电平状态 相应的 LED点亮 LED 为共阳极器件 但由于段驱动为送 1 点亮 LED3 具有较强的控制功能 能实现亮度控制这些控制位都设置在控制命令 COM 显示器测试 静 动态及位的亮控静 动态显示选择 C0=11 3 暗亮选择 C1=12 4测试位 C3=1时 C5 C6 驱动电流控制位 C4 C5 C6 1 时 驱动电流分别为 3mA 12mA13 数据操作格式SAA1064SUBADR COM

27、data1-data4 SUBADR=00H 按控制要求选择 data1-data4 为共阴极段码 SLAW 为寻址字节 写四 I/O1 1 器件选择I2C电路中 有 I/OPCF8574出的8 位准双向口 可广泛用于 I/O 口接口扩展PCF8574的中断输出引脚在端口输入状态改变时 有中断信号输出 因此 用 PCF8574工作在中断方式 在对 PCF8574 进行一次读写操作后 便自动清除中断请求 I/O 端口的驱动能力IOL=25mA,IOH300 A2 电路设计I/O的电路和外设接口 都可以用 PCF8574 来完成 例如 各种类型的独立式键盘与行列式键盘 码盘输入接口 继电路驱动控制

28、 LED 图 b 给出了 PCF857480C51I2C 总线的接口电路 PCF8574漏输出 要加上拉电阻 I/OSAAAAAAAPdata data data data 020 3873091638730917387309761 节点地址PCF8574PCF8574A 在本节 两个器件地址 即 01000111 分属于SAA10640111 2 PCF85741 封装及引脚功能12 P0-aPCF8574 DIP16300 8IOL=25mA I2C 总线接口中断请求输出 低电平有效2.5-6V 典型值+SDA 2 应用原理020 3873091638730917387309761 节点地址PCF8574PCF8574A 在本节 两个器件地址 即 01000111 分属于SAA10640111 2 PCF85741 封装及引脚功能12 P0-aPCF8574 DIP16300 8IOL=25mA I2C 总线接口中断请求输出 低电平有效2.5-6V 典型值+SDA 2 应用原理数 I/OI/OI2CPCF8574I/OMRD断请求复位 呈高电平3 4 SI2CPCF8574I/OPCF8574I/O PO

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论