文档详情

[FPGA时序逻辑实验][D题][I2C从设备控制器]_v1.0.pdf

发布:2017-05-26约字共5页下载文档
文本预览下载声明
FPGA 时序逻辑实验 D 题 I2C 从设备控制器 一、实验原理 I2C (Inter -Integrated Circuit )是一种单端、多主控双线总线,适合在半双工模式下进行高效的集成电 路间通信,主要用于连接微控制器及其外围设备。是微电子通信控制领域广泛采用的一种总线标准。它是 同步通信的一种特殊形式,具有接口线少,控制方式简单,器件封装形式小,通信速率较高等优点。 I2C 总线只要求两条总线线路,分别为串行数据 (SDA) 线和串行时钟线 (SCL) ,I2C 是多主机总线, 即同时有多于一个主机尝试控制总线但不破坏传输,因此SDA 和SCL 设计成漏极开路输出,以实现线与功 能,线路拉低至接地为逻辑0 ,线路浮置为高阻态则为逻辑 1。在使用I2C 器件时,必须要如图 1 所示接上 拉电阻。 图1 I2C 总线应用 SDA 数据线高或低电平状态的改变只能在SCL 线的时钟信号低电平期间完成,SDA 线上的数据在时 钟SCL 的高电平期间必须保持稳定,如图2 所示。在SCL 的高电平期间SDA 发生电平变化会终止或重启 I2C 总线,如果SDA 是由高电平向低电平跳变,则产生START 条件,启动I2C 总线操作,如果SDA 由低 电平向高电平跳变,则产生 STOP 条件,终止I2C 总线操作,如图3 所示。起始和停止条件一般由主设备 产生,在起始条件后总线被认为处于忙的状态,在停止条件后总线被认为再次处于空闲状态。 图2 I2C 总线位传输 东南大学电工电子实验中心 1 FPGA 时序逻辑实验 图2 I2C 总线启动和停止 I2C 通信采用7 位地址空间(含 16 个保留地址),因此在同一总线上,理论上最多可以和 112 个节点 通信。每个I2C 器件都有一个唯一的地址识别,器件既可以作为发送器发送数据到总线,也可以作为接收 器从总线接收数据(由器件的功能决定)。器件在执行数据传输时可以被看作是主设备或从设备。其中主 设备是初始化总线的数据传输并产生时钟信号的器件,从设备则是其他被寻址的器件,从设备接收时钟和 地址,并响应来自主设备的请求。 一个典型的数据传输时序图如图2 所示,发送地址和8 位数据字节时首先发送最高位 (MSB) ,本实验 只讨论单主机应用,更详细的I2C 资料请参看附件“I2C Bus Specification and User Manual”。 图3 I2C 总线数据传输 发送数据 图4 为主设备往从设备发送数据时的数据格式,具体传输过程如下: 1) 总线空闲,主设备释放SCL 线(高)和SDA (高)线 2) 主设备将SDA 拉低,创建一个START ,启动传输 3) 发送要访问的从设备的7 位地址 4) 发送一个信号读写位,因为是主设备发送数据给从设备,因此发送 “0” 5) 主设备释放SDA 线(高),以允许从设备对数据接收作出应答 6) 在第9 个SCL 时钟脉冲的整个高电平期间,从设备通过将SDA 拉至低电平以回应一个应答位 (ACK) 7) 主设备接收到从设备发送的ACK 位后,发送一个字节。 东南大学电工电子实验中心 2 FPGA 时序逻辑实验 8) 从设备接收到一个字节后作出应答 (ACK) 9) 如果需要,主设备会重复发送字节到从设备,从设备对每个字节的接收都作出应答 (ACK) 10) 所有数据发送完成后,主设备先释放SCL 线(高)后释放SDA 线(高),创建一个STOP 位结束 传输
显示全部
相似文档