CoolRunner-Ⅱ器件的I2C接口主状态机
出处:将军令 发布于:2008-09-18 11:00:30
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,违反者本网将追究相关法律责任。
本网转载并注明自其它出处的作品,目的在于传递更多信息,并不代表本网赞同其观点或证实其内容的真实性,不承担此类作品侵权行为的直接责任及连带责任。其他媒体、网站或个人从本网转载时,必须保留本网注明的作品出处,并自负版权等法律责任。
如涉及作品内容、版权等问题,请在作品发表之日起一周内与本网联系,否则视为放弃相关权利。
- 常见的激光雷达slam算法有哪些?2024/4/30 17:24:16
- 什么叫特高压电网2024/4/30 17:21:31
- 分布式光伏发电有什么优劣势2024/4/29 17:17:39
- 如何更好的理解lwip协议?2024/4/28 17:20:13
- 802.11ac连接的推荐设置_802.11AC无线网桥的配置和注意事项2024/4/28 17:10:43