如图 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。
上一篇:SFI-4接口的数据处理
下一篇:SPI-4接口的数据处理
推荐阅读最新更新时间:2024-05-02 21:48
- TI LM3S811 分组DIY,火热进行中......
- CadenceLIVE China 2022中国线上用户大会 报名中!
- 下载有礼:2017年泰克亚太专家大讲堂第二期: 100G/200G/400G通讯标准发展趋势及解决方案
- 不可错过的一次邂逅,TTI携TE传感器样片与你相见!免费样片申请活动开始啦~
- 看视频赢京东卡 | 泰享实测之水哥秘籍
- 瑞萨电子颠覆传统理念的嵌入式开发平台 Renesas Synergy™ 评估套件震撼来袭!答题即可免费申请!
- 有奖直播|高速总线PCIe5.0技术发展与测试分享
- TI 汽车应用在线展厅与你零距离接触,答题赢礼
- 您的电路保护有足够的空间吗?Littelfuse的881系列保险丝迎接这一挑战