本文主要介绍zynq 7000下的i2c ps 外设编程。实验是在vivado 2018.3 上完成的。
本实验的前提条件是你已经做过了zynq 7000的helloworld sdk 实验。一般开发板的厂家都提供了的,一些设置与所用硬件有关,也可参考我的博客 petalinux 2018.2 下的helloworld 实验
I2C总线简介
I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。它只需要两根线即可在连接于总线上的器件之间传送信息。I2C总线上分成主机和从机两种设备。
主机用于启动总线传送数据并产生时钟以同步从机,此时任何被寻址的器件均被认为是从器件.在总线上主机和从机、发送和接收的关系不是恒定的,而取决于此时数据传送方向。如果主机要发送数据给从器件,则主机首先寻址从器件,然后主动发送数据至从器件,最后由主机终止数据传送;如果主机要接收从器件的数据,首先由主器件寻址从器件.然后主机接收从器件发送的数据,最后由主机终止接收过程。在这种情况下.主机负责产生定时时钟和终止数据传送。
SDA(串行数据线)和SCL(串行时钟线)都是双向I/O线,接口电路为开漏输出,需通过上拉电阻接电源VCC。当总线空闲时.两根线都是高电平,连接总线的外同器件都是CMOS器件,输出级也是开漏电路.在总线上消耗的电流很小,因此,总线上扩展的器件数量主要由电容负载来决定,因为每个器件的总线接口都有一定的等效电容.而线路中电容会影响总线传输速度.当电容过大时,有可能造成传输错误.所以,其负载能力为400pF,因此可以估算出总线允许长度和所接器件数量。
zynq 7000的I2C
在zynq 7000中有2种方式可以控制iic(I2C)外设,一种是利用zynq 7000的 PS 外设i2c ,还有一种是axi4-i2c IP。 我认为前面简单一点,所以采用的前面那种方式。
在vivao 里打开以前设计的helloworld 工程,或者其他工程,没有就先做一个,打开原理图设计(open block design),双击zynq 打开zynq设置。
在设置界面