模拟I2C总线多主节点通信原理简介

时间:2012-09-02来源:网络

MOV B,#37H

  WWAIT1: JB SCL,WWAIT1;等待SCL为低

  JC WR1;判断是发送“1”还是发送“0”

  SETB SDA;发送“1”

  AJMP COM

  WR1:  CLR SDA;发送“0”

  COM:  DJNZ R0,WWAIT2;判断是否发送完毕

  WWAIT3: JNB SCL,WWAIT3;发送完毕等待应答信号

  WWAIT4: JB SCL,WWAIT4

  WWAIT5: JNB SCL,WWAIT5

  CLR ACK

  JB  SDA,ST0

  SETB ACK

  ST0:  RET;返回

  WWAIT2: JNB SCL,WWAIT2;等待SCL为高

  SJMP WAGAIN

  从节点的读字节同时判断是否有起始信号的子程序。如果有起始信号,则转为写字节子程序:

  SRDBYTE:MOV R0,#08H

  SETB 20H;设置标志位判断是读还是写

  SETB SDA;释放总线

  RWAITJ: JNB SCL,RWAITJ;等待SCL为高

  MOV C,SDA;从总线上读取数据

  RRC A;存入累计器

  DEC R0

  MOV C,ACC.7;判断是否为起始信号

  JNC RWAITJ1;为低继续读取数据

  REWAIT: JNB SCL,RWAITJ1;开始判断是否为起始信号

  JB  SDA,REWAIT

  CLR 20H;是,则清标志位并返回

  AJMP SjRDOUT

  RWAITJ1:JB SCL,RWAITJ1;等待SCL为低

  RWAITJ3:JNB SCL,RWAITJ3;等待SCL为高

  MOV C,SDA

  RRC A

  DJNZ R0,RWAITJ2

  SjRDOUT:RET

  RWAITJ2:JB SCL,RWAITJ2;等待SCL为低继续读数据

  SJMP RWAITJ3

  5 总结

  根据总线协议中的仲裁原理,提出的基于延时比较的模拟I2C多主通信的方法,不仅能够体现了I2C总线的高效性,而且还具有良好的扩展性。它使普通不具有I2C接口的MCU可以应用在多主通信的系统中,既增加了普通MCU的使用范围,又突破了模拟I2C总线的应用局限性,为I2C总线的推广起到了积极的作用

1 2 3

关键词: 原理 简介 通信 节点 I2C 总线 模拟

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版