DIY编程器网

标题: NiosII的I2C控制IP及其在成像系统中的应用 [打印本页]

作者: liyf    时间: 2012-1-27 14:01
标题: NiosII的I2C控制IP及其在成像系统中的应用

                      1 IP的硬件结构及寄存器
  1.1 IP硬件结构
  IP内部结构如图1所示。主要由波特率时钟寄存器、寄存器组控制器、并行I/O接口、I2C可编程接口、I2C接口引擎5个模块组成。






  从设备地址(写模式)与从设备地址(读模式)高7位为从器件地址,第8位是读写控制位(R/W),它控制数据的传输方向。
  向曝光寄存器0x09写入数据:主器件启动传输,然后发送它所要寻址的从设备地址(写模式)。MT9M011监视总线,当其地址与传送的从器件地址相符时,响应一位应答信号,接着主器件发送曝光寄存器地址,MT9M011再次应答,在向曝光寄存器中写入16位数据后主器件停止写数据。每传送8位数据,从器件MT9M011都会产生一位应答信号。






  3? IP应用实例
  3.1? 硬件设计
  本文使用I2C控制IP对图像传感器MT9M011寄存器进行并行配置。硬件设计基于SOPC技术,将系统组件库提供的32位Nios II软核处理器、SDRAM接口模块、TIMER定时器模块(提供SignaltapII中对信号进行采样的频率)、PIO模块以及I2C控制IP(配置为主设备)集成在一块FPGA内。QuartusII顶层原理略——编者注。
  3.2? 软件设计
  软件的编写有两种方式:一种是对I2C控制IP应用程序编程接口(API)函数的操作;另一种是利用Altera提供的读写函数对寄存器进行操作。为了提高系统运行的速度,采用第二种方法。系统软件部分是在NiosII IDE中,通过编写C代码完成的。
  对CMOS寄存器的并行配置程序主要包括以下两个部分:
  ①IP初始化设置:包括设置波特率、设置本地址寄存器、设置时钟寄存器值。
  ②选择CMOS1,对其寄存器进行读写;选择CMOS2,对其寄存器进行读写。寄存器选择曝光寄存器。
  关键代码如下:











  函数checkBus查询状态寄存器的丽来判断I2C总线忙/闲状态,checkProgres函数查询状态寄存器的PIN来判断总线数据是否传输完成。为了便于观察读出的数据和写入的数据是否一致,通常将程序包含在while语句中。
  4? 实验验证
  将硬件系统生成的下载文件烧写到FPGA芯片上并运行C代码程序,用QuartusII自带的SignahapII逻辑分析仪对I2C总线上的数据进行观察。图3为所得到的波形,信号由上至下分别为CMOS2/CMOS1上的I2C总线信号m_sclk_2、m_sda_2、m_sclk_1、m_sda_1。前半部分给CMOS1写入0x06、0x07,然后读出;后半部分对CMOS2写入相同的数并读出。此波形满足MT9M011图像传感器时序读写要求。
  5 系统扩展
  在需要多路CMOS配置的应用中,使用该I2C控制IP可以很容易地实现多路并行CMOS寄存器配置。例如,8路并行CMOS配置系统:在电路板上焊接8片CMOS传感器芯片,通过对分配器3路信号的控制??? 将使能并行加载到8块CMOS芯片,3路控制信号和使能信号通过对SOPC系统的PIO接口模块的控制来实现,配置数据的传输则在I2C控制IP的控制下完成。电路板结构简单,系统容易实现。
  结? 语
  本文所介绍的I2C IP可作为自定义组件加载到SOPC系统中,使系统的设计更为灵活,功能扩展上具有较大的潜力。在采用CMOS图像传感器的成像系统中,I2C接口应用普遍,本文通过给出该IP应用实例,说明了该IP的使用具有广阔的前景和较高的应用价值。
            




欢迎光临 DIY编程器网 (http://www.diybcq.com/) Powered by Discuz! X3.2