FPGA实现iic通信(读写EEPROM)
实验平台:正点原子ALIENTEK开拓者FPGA开发板
目录
1. IIC协议简介
1.1 什么是IIC协议
IIC即为Inter-Inegrated Circuit(集成电路总线),在上世纪八十年代左右由Philips公司(即现做的NXP半导体公司)设计出来的一种简单、双向、二进制总线标准。其只需要两根线(SDA数据线和SCL时钟线)即可实现总线连接的器件间的通信。SDA和SCL都是双向I/O线,所以主要适用于数据量小,距离短的主从通信,数据的传输速率在标准模式下可达100kbit/s,在快速模式下可达400kbit/s,在高速模式下可达3.4Mbit/s。
当两个器件通信时,用于启动总线并产生时钟的为主器件,此时总线上所有可被寻址的都为从器件。所有的从器件都有其第一无二的设备地址,主机发送想要通信的从机的设备地址,所有的从器件将此地址与自身的设备地址对照,对应的从器件则发出应答信号,二者即开始通信。这也意味着主机与从机不是固定的,而是取决于数据的传输方向。
1.2 硬件结构
SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出,需通过上拉电阻接电源VCC,因此当总线空闲时两根线都是高电平。
1.3 为什么要使用IIC协议
通过上文可知IIC可以挂载多个设备,这也是其最大的优点。在工业中有时我们并不需要读出所有设备的数据,这时就可以使用IIC总线,将多个传感器挂载在其上,只需要在需要的时候读出对应设备的数据。虽然其与其他的串行外设接口相比,通信速度较慢,但是其大大节约了I/O资源;而且在传输过程中可以通过应答位来判断是否成功通信;这些优点导致IIC大面积应用。
1.4 IIC协议的时序特点
1.4.1 传输特点
由于IIC是由数据线和时钟线所组成的,因此二者相互配合完成数据的传输。当时钟线