数据发送寄存器I2CDXR、发送移位寄存器I2CXSR、数据接收寄存器I2CDRR及接收移位寄存器I2CRSR负责数据线SDA上串行数据的发送与接收;时钟同步单元用于同步I2C的输入时钟(来自DSP时钟发生器)和SCL上的时钟,并在多主设备数据传输模式下保证多个主设备时钟完全同步;多主发送传输模式下,仲裁单元对数据总线上的数据进行仲裁;预分频器对I2C模块的输入时钟分频;I2C模块中断产生单元和DMA同步事件产生单元用于触发相应CPU中断和DMA传输。控制寄/状态存器用于实现I2C模块工作模式的设定和状态控制。I2C模块通过外设总线与CPU和DMA控制器进行通信。
2.2 I2C总线的数据传输
I2C总线为一条串行数据线(SDA)和一条串行时钟线(SCL)。SDA和SCL都支持输入/输出双向传输,连接时需上拉至高电平。则TMS320VC5509A内部I2C模块支持主设备和从设备两种模式,兼容Philip公司的I2C总线传输协议。
由连接至I2C总线的主设备提供时钟。时钟线SCL为高电平时,SDA上的数据须稳定,只有当SCL上的时钟信号为低电平时,SDA上的数据才改变。I2C模块在I2C总线配置为主模式时,产生START和STOP条件,如图2所示。I2C总线的数据格式支持7-bit地址格式和10-bit地址格式,数据格式如图3所示。
3 增强型视频输入处理器SAA7111A
3.1概述
SAA7111A广泛应用于桌面视频、多媒体、数字电视、图像处理、视频电话的高性能视频输入处理器。
SAA7111A主要有以下特点:SAA7111A共有4路模拟视频信号输入端,可以为4路CVBS或2路S视频(Y/C),可编程设置4路视频输入中的一路或者两路组成不同的工作模式;能实现行同步、场同步信号的自动监测、分离,并且行同步信号的起始位置与结束位置均可编程控制;场频50 Hz或60Hz自动检测,对不同输入制式的亮度信号、色差信号进行处理,实现亮度、色度以及饱和度的片内实时控制;I2C总线接口,配置片内寄存器,实现用户所需功能;SAA7111A输出为16位VPO总线,支持不同位宽的数据输出格式;有片内时钟产生电路,通过数字PLL锁定行同步。
3.2 I2C总线接口
SAA7111A作为从设备时,其写地址为48H,读地址为49H,配置寄存器时I2C总线上数据格式如图4所示。
3.3 SAA7111A片内寄存器
SAA7111A内部有32个控制寄存器,22个可编程设置。本系统只用其中一部分寄存器,通过I2C总线配置这些寄存器,使其正常工作。SAA7111A片内寄存器功能如表1所列。
4 接口设计
系统选用模式0,视频信号由SAA7111A的AIll引脚输入。SAA7111A的时钟由24.576 MHz的晶体振荡器提供,数字PLL产生同步时钟信号LLC,CREF是时钟参考信号,其频率与LLC相等,高电平时各输出信号稳定。VPO输出图像数据,每2个LLC周期输出1个16位YUV4:2:2格式的数据。同时产生的输出信号还包括水平参考信号HREF和垂直参考信号VREF。YMS320VC5509A的I2C模块的串行数据线(SDA)和串行时钟线(SCL)直接与SAA7111A的I2C总线SDA与SCL相连.并接上拉电阻,保证I2C总线处于空闲状态时SDA与SCL都处于高电平,这样DSP利用I2C总线配置视频采集器件。SAA7111A与DSP的接口原理图如图5所示。
5 配置SAA7111A
将TMS320VC5509A的I2C模块设定为I2C总线的主设备,地址为0000H,7位地址工作模式,传输速率为100 Kb/s;而SAA7111A作为从设备,读地址为49H,写地址为48H。
5.1 I2C模块初始化
利用I2C总线配置SAA7111A之前,应先初始化DSP的I2C模块。
CCS提供强大的芯片支持库,可直接调用I2C模块的芯片支持库函数完成I2C模块的初始化以及SAA7111A的配置。调用库函数之前应包含头文件csl i2c.h。I2C初始化结构如下:
而调用初始化函数初始化DSP的I2C模块I2C_setup(&My_Init)。
由于本系统的I2C模块只用于配置SAA7111A,并不进行数据传输,无需中断I2C模块,因此中断使能关闭。
5.2利用I2C总线配置SAA7111A
DSP的I2C模块初始化后,则利用I2C总线配置SAA7111A。同样,使用CCS的芯片支持库函数实现SAA7111A的配置。发送到I2C总线上的配置数据组:
由于SAA7111A接收I2C总线发送的多个数据时,其子地址递增,因此在发送数据组里,第一个数据是子地址,后面依次是发送到该子地址及后面子地址的数据值。
调用写I2C总线函数,配置SAA7111A寄存器。
注意:发送从地址不包括读写位,而SAA7111A作为从设备的读地址为49H,写地址为48H都是包括读写位(Slave Address+W/R)。因此上面的发送从地址不是0x48,而是0x24。同样在利用芯片支持库函数进行读操作时,从地址不是0x49,而是0x24。
6 结束语
利用本文介绍的方法成功实现DSP对SAA7111A的初始化配置。SAA7111A与TMS320VC5509A都集成有I2C模块,便于配置SAA7111A。CCS提供强大的芯片支持库CSL,可直接使用这些函数便于访问片上外设。这些函数都是经过优化的,其执行效率高并不比直接使用汇编语言编写的代码低。