CoolRunner-Ⅱ器件的I2C接口主状态机

出处:将军令 发布于:2008-09-18 11:00:30

  I2C接口主状态机如图所示。

I2C接口主状态机


  
如图  I2C接口主状态机
  无论是主模式,还是从模式,状态机都是相同的。在每个状态,模式都会被检测,以决定输出和下一个状态。如果仲裁失败或 I2C控制器被确定为从模式,控制器会自动由主模式切换到从模式。
  此状态机用到一个位计数器和两个移位寄存器,位计数器对从总线上接收到的位进行计数,其中一个移位寄存器用来存储I2C的HEADER;另一个用来存储接收到的数据或待发送的数据。
  当检测到START信号时,状态机进入HEADER状态。在HEADER状态,如果是主模式,MBDR寄存器中的HEADER被发送。当所有8位数据发送完毕时,状态机转入ACK HEADER。
  在ACK_HEADER状态,如果CoolRunner-II  I2C控制器工作在主模式,将会采样SDA,以确认从设备是否有应答。如果没有应答,状态转入STOP;如果有应答,LSB=1时进入RCV_DATA, LSB=0时进入XMIT_DATA。
  I2C Header移位寄存器与MADR进行比较,如果匹配,则CoolRunner-II  I2C为被寻址的从设备。模式立刻切换到从模式,状态寄存器MBSR中MAAS位被置位,SDA线将会按照TXAK中的设置应答当前主设备。
在RCV_DAT状态,SDA数据被入I2C移位寄存器,以供uC读取。当所有数据位被接收到,状态机转入ACK_DATA,TXAK被输出到SDA。

  在XMIT_DATA状态,MBDR寄存器中数据被送到SDA.当发送整的字节后,状态转入WAIT_ACK.如果检测到ACK,则状态再次进入XMIT_DATA,直到产生STOP条件或没有收到ACK条件.必须注意提,在数据传输过程中uC速率必须跟上I2C控制器收发数据的速率.如果中断使能,则当一个字节的数据发送或接由结束时就会产生一个中断,MCF位将会被置位.在ACK状态,数据在uC和控制器之间转输。在此过程中,I2C控制器不会等待uC操作。
  如果Coo1Runner-ⅡI2C工作在主模式,在STOP状态告知SCL/START/STOP发生器产生一个STOP条件,状态进入IDLE。
  


  
关键词:接口

版权与免责声明

凡本网注明“出处:维库电子市场网”的所有作品,版权均属于维库电子市场网,转载请必须注明维库电子市场网,https://www.dzsc.com,违反者本网将追究相关法律责任。

本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。

如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。

上传BOM文件: BOM文件
*公司名:
*联系人:
*手机号码:
QQ:
应用领域:

有效期:
OEM清单文件: OEM清单文件
*公司名:
*联系人:
*手机号码:
QQ:
有效期:

扫码下载APP,
一键连接广大的电子世界。

在线人工客服

买家服务:
卖家服务:

0571-85317607

客服在线时间周一至周五
9:00-17:30

关注官方微信号,
第一时间获取资讯。

建议反馈

联系人:

联系方式:

按住滑块,拖拽到最右边
>>
感谢您向阿库提出的宝贵意见,您的参与是维库提升服务的动力!意见一经采纳,将有感恩红包奉上哦!