📄 saa7113.c
字号:
/****************************************Copyright (c)****************************************************
** Guangzhou ZHIYUAN electronics Co.,LTD.
**
** http://www.embedtools.com
**
**--------------File Info---------------------------------------------------------------------------------
** File name: saa7113.c
** Last modified Date: 2007-12-12
** Last Version: 1.0.0
** Descriptions: NXP SAA7113H 视频采集芯片基础驱动, 在一个线程中眼顺序操作
**
**--------------------------------------------------------------------------------------------------------
** Created by: Hanhui
** Created date: 2007-12-12
** Version: 1.0.0
** Descriptions: NXP SAA7113H 视频采集芯片基础驱动
**
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
** Version:
** Descriptions:
**
*********************************************************************************************************/
#include "config.h"
#include "saa7113.h"
/*********************************************************************************************************
SAA7113 图像输出格式
使用 ITU 656 YUV 4 : 2 : 2 的格式
+------------+--------------------------------------------------------------------+------------+
| BLANKING | TIMING | | TIMING | BLANKING |
| PERIOD | REFERENCE | 720 PIXELS YUV 4 : 2 : 2 DATA | REFERENCE | PERIOD |
| | CODE | | CODE | |
+------------+--------------+--------------------------------------+--------------+------------+
| ... 80 10 | FF 00 00 SAV | Cb0 Y0 Cr0 Y1 Cb 2 Y2 ... Cr718 Y719 | FF 00 00 EAV | 80 10 ... |
+------------+--------------+--------------------------------------+--------------+------------+
SAV: 有效的视频数据区域起始标志
Cbn: U (B - Y) colour difference component, pixel number n = 0, 2, 4 to 718
Yn : Y (luminance) component, pixel number n = 0, 1, 2, 3 to 719
Crn: V (R - Y) colour difference component, pixel number n = 0, 2, 4 to 718
EAV: 有效的视频数据区域结束标志
*********************************************************************************************************/
/*********************************************************************************************************
我国电视标准 PAL
我国采用的是50 Hz PAL电视信号,
每秒 25 帧图像
每帧 625 行, 其中 576 行有效 (当 VREF 为高电平时)
每行 864 个像素,其中 720 个像素有效 (当 HREF 为高电平时)
即每帧图像的实际分辨率为 720 × 576
SAA7113 按奇偶场输出,
每场 288 有效行
每行 720 有效像素
视频格式按照 YUV 4 : 2 : 2
即每行 1440 Byte, 每场405 KB, 每帧 810 KB。
*********************************************************************************************************/
/*********************************************************************************************************
SAA7113 场数据选择 VRLN = 1 (I2C 子地址 0x10 的 D3 位)
使用 50Hz 625 线 VREF
场 1: 288 线 起始: 23 线 结束: 310 线
场 2: 288 线 起始: 336 线 结束: 623 线
*********************************************************************************************************/
/*********************************************************************************************************
参数结构
*********************************************************************************************************/
typedef struct __saa7113_param {
unsigned char ucAddr; /* 参数地址 */
unsigned char ucArg; /* 参数 */
} __SAA7113_PARAM;
/*********************************************************************************************************
I2C 器件
*********************************************************************************************************/
static SAA7113_CONTEXT __GsaactxContext; /* 当前工作参数 */
/*********************************************************************************************************
I2C 器件
*********************************************************************************************************/
static I2C_DEV __Gi2cdevSaa7113; /* I2C 控制器 */
/*********************************************************************************************************
初始化参数序列
*********************************************************************************************************/
static __SAA7113_PARAM __GucSaa7113InitList[] = {
{0x01, 0x08}, /* 水平增量延迟, 使用推荐值 */
{0x02, 0xC0}, /* CVBS AI11 AV 信号输入 */
{0x03, 0x33}, /* 自动增益, 长时间场消隐 */
{0x04, 0x00}, /* 通道一默认使用自动增益 */
{0x05, 0x00}, /* 通道二默认使用自动增益 */
{0x06, 0xEB}, /* 使用推荐值可能造成图像偏移 */
/* 水平同步起始, 推荐使用 0xE9 */
{0x07, 0x6c}, /* 水平同步结束, 推荐使用 0x0D */
/* 选择 108 (50 Hz) */
{0x08, 0xB8}, /* 自动场检测, 50Hz,625线 */
/* PLL关闭,固定水平频率 */
{0x09, 0x01}, /* 孔径因数 0.25, */
/* PAL : 0x01 NSTC : 41 */
{0x0A, 0x80}, /* 平均亮度控制 */
/* PAL : 0x80 NSTC : 95 */
{0x0B, 0x47}, /* 亮度对比度控制 */
/* PAL : 0x47 NSTC : 48 */
{0x0C, 0x42}, /* 饱和度控制 */
{0x0D, 0x01}, /* 色调控制 */
{0x0E, 0x01}, /* 色度控制 */
/* 带宽 800 kHz, PAL BGHIN */
{0x0F, 0x44}, /* 色度增益控制 */
{0x10, 0x08}, /* 格式与延迟控制 VRLN = 1 */
/* 标准 ITU656 格式 */
{0x11, 0x0C}, /* 输出控制 */
/* 自动色彩适配, */
/* 标准水平锁定模式 */
{0x12, 0xE7}, /* RTS0/1 输出控制 */
/* RTS0 HREF, RTS1 VREF */
{0x13, 0x00}, /* 测试控制 */
{0x15, 0x00}, /* VGATE 输出起始脉冲与极性控制*/
{0x16, 0x00}, /* VGATE 输出结束脉冲控制 */
{0x17, 0x00}, /* VGATE 输出脉冲控制高位 */
{0x40, 0x02}, /* 13.5MHz 数据时钟 50Hz 场频 */
/* LCR 2 - LCR 24 寄存器 */
{0x41, 0xFF}, /* Active Video 视频标准 */
{0x42, 0xFF},
{0x43, 0xFF}, /* YUV 4 : 2 : 2 视频数据格式 */
{0x44, 0xFF},
{0x45, 0xFF}, /* 每线 720 个有效像素点 */
{0x46, 0xFF},
{0x47, 0xFF},
{0x48, 0xFF},
{0x49, 0xFF},
{0x4A, 0xFF},
{0x4B, 0xFF},
{0x4C, 0xFF},
{0x4D, 0xFF},
{0x4E, 0xFF},
{0x4F, 0xFF},
{0x50, 0xFF},
{0x51, 0xFF},
{0x52, 0xFF},
{0x53, 0xFF},
{0x54, 0xFF},
{0x55, 0xFF},
{0x56, 0xFF},
{0x57, 0xFF},
{0x58, 0x40}, /* 场编码, 只能设置为:0x40 */
{0x59, 0x54}, /* 水平偏移量低七位 */
{0x5A, 0x07}, /* 垂直偏移量 */
/* PAL: 07 NTSC: 0A */
{0x5B, 0x83}, /* 场偏移量与水平偏移量高三位 */
{0x5E, 0x00},
{0x00, 0x00}, /* 结束 */
};
/*********************************************************************************************************
** Function name: saa7113Reset
** Descriptions: SAA7113 视频采集卡复位
** input parameters: NONE
** output parameters: NONE
** Returned value: NONE
** Created by: Hanhui
** Created Date: 2007/12/13
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void saa7113Reset (void)
{
unsigned int iSave = rGPJCON;
rGPJCON &= ~(0x3 << 24);
rGPJCON |= (0x1 << 24); /* 装换为 GPIO */
rGPJUP &= ~(0x1 << 12); /* 允许内部上拉 */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -