清漆厂家
免费服务热线

Free service

hotline

010-00000000
清漆厂家
热门搜索:
行业资讯
当前位置:首页 > 行业资讯

CoolRunner器件的I2C接口主状态机

发布时间:2020-06-30 18:16:25 阅读: 来源:清漆厂家

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。

山东工作服定做

聊城制做工服

定做工作服

山东定制工服

相关阅读