📄 saa7113.c
字号:
rGPJDAT &= ~(0x1 << 12); /* RESET 输出低电平 */
OSTimeDly(1);
rGPJDAT |= (0x1 << 12); /* RESET 输出高电平 */
rGPJCON = iSave; /* 还原原始功能 */
OSTimeDly(1); /* 短暂延迟 */
}
/*********************************************************************************************************
** Function name: saa7113Init
** Descriptions: SAA7113 视频采集卡初始化
** input parameters: NONE
** output parameters: NONE
** Returned value: NONE
** Created by: Hanhui
** Created Date: 2007/12/13
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void saa7113Init (void)
{
int i;
int iSendNum;
__SAA7113_PARAM *psaaparamTemp = &__GucSaa7113InitList[0]; /* 参数序列指针 */
I2C_SUB_ADDR i2csaddrTemp; /* 子地址控制块 */
saa7113Reset(); /* 复位 SAA7113H */
i2cDevOpen(&__Gi2cdevSaa7113, 0, __SAA7113_ADDR, 100000); /* 创建 I2C 总线设备 */
i2csaddrTemp.ucSubAddrNum = 1; /* 仅使用 一个 子地址 */
for (i = 0; i < 255; i++) { /* 最多 255 个参数 */
if (psaaparamTemp->ucAddr == 0x00) {
break; /* 结束初始化序列 */
}
i2csaddrTemp.ucSubAddrArry[0] = psaaparamTemp->ucAddr; /* 保存子地址 */
i2cDevIoctl(&__Gi2cdevSaa7113,
I2C_SET_SUB_ADDR,
(int)&i2csaddrTemp); /* 设置子地址 */
iSendNum = i2cDevWrite(&__Gi2cdevSaa7113,
(char *)&psaaparamTemp->ucArg, 1); /* 写入参数 */
if (iSendNum < 1) {
__SAA7113_ERROR_OUT("saa7113 init error\r\n");
}
psaaparamTemp++; /* 下一个参数 */
}
__GsaactxContext.ucChannelMode = 0; /* 通道模式 */
__GsaactxContext.ucBrightness = 0x80; /* 亮度 */
__GsaactxContext.ucContrast = 0x47; /* 对比度 */
__GsaactxContext.ucSaturation = 0x42; /* 饱和度 */
__GsaactxContext.ucHue = 0x01; /* 色调 */
}
/*********************************************************************************************************
** Function name: saa7113GetContext
** Descriptions: SAA7113 视频采集卡获得工作参数
** input parameters: NONE
** output parameters: NONE
** Returned value: 工作参数
** Created by: Hanhui
** Created Date: 2007/12/13
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
SAA7113_CONTEXT saa7113GetContext (void)
{
return (__GsaactxContext);
}
/*********************************************************************************************************
** Function name: saa7113GetVersion
** Descriptions: SAA7113 视频采集卡版本
** input parameters: NONE
** output parameters: NONE
** Returned value: 版本号
** Created by: Hanhui
** Created Date: 2007/12/13
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
unsigned char saa7113GetVersion (void)
{
int iRecvNum;
unsigned char ucVersion;
I2C_SUB_ADDR i2csaddrTemp; /* 子地址控制块 */
i2csaddrTemp.ucSubAddrNum = 1; /* 仅使用 一个 子地址 */
i2csaddrTemp.ucSubAddrArry[0] = 0x00; /* 0 号寄存器 */
i2cDevIoctl(&__Gi2cdevSaa7113,
I2C_SET_SUB_ADDR,
(int)&i2csaddrTemp); /* 设置子地址 */
iRecvNum = i2cDevRead(&__Gi2cdevSaa7113,
(char *)&ucVersion, 1); /* 读出参数 */
if (iRecvNum < 1) {
__SAA7113_ERROR_OUT("saa7113 init error\r\n");
}
return (ucVersion);
}
/*********************************************************************************************************
** Function name: saa7113SetChannelMode
** Descriptions: SAA7113 视频采集卡设置通道模式
** input parameters: ucChannelMode 通道模式
** output parameters: NONE
** Returned value: NONE
** Created by: Hanhui
** Created Date: 2007/12/13
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void saa7113SetChannelMode (unsigned char ucChannelMode)
{
int iSendNum;
unsigned char ucTemp;
I2C_SUB_ADDR i2csaddrTemp; /* 子地址控制块 */
i2csaddrTemp.ucSubAddrNum = 1; /* 仅使用 一个 子地址 */
i2csaddrTemp.ucSubAddrArry[0] = 0x02; /* 0x02 号寄存器 */
i2cDevIoctl(&__Gi2cdevSaa7113,
I2C_SET_SUB_ADDR,
(int)&i2csaddrTemp); /* 设置子地址 */
i2cDevRead(&__Gi2cdevSaa7113,
(char *)&ucTemp, 1); /* 读出参数 */
ucTemp = (unsigned char)((ucTemp & 0xF0) | ucChannelMode); /* 设置通道模式 */
iSendNum = i2cDevWrite(&__Gi2cdevSaa7113,
(char *)&ucTemp, 1); /* 写入参数 */
if (iSendNum < 1) {
__SAA7113_ERROR_OUT("saa7113 init error\r\n");
}
__GsaactxContext.ucChannelMode = ucChannelMode;
}
/*********************************************************************************************************
** Function name: saa7113SetField
** Descriptions: SAA7113 视频采集卡场选择 (仅适合于强制场选择, 不适用于自动场检测)
** input parameters: ucField 场选择
** output parameters: NONE
** Returned value: NONE
** Created by: Hanhui
** Created Date: 2007/12/13
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
**--------------------------------------------------------------------------------------------------------
*********************************************************************************************************/
void saa7113SetField (unsigned char ucField)
{
int iSendNum;
unsigned char ucTemp;
I2C_SUB_ADDR i2csaddrTemp; /* 子地址控制块 */
i2csaddrTemp.ucSubAddrNum = 1; /* 仅使用 一个 子地址 */
i2csaddrTemp.ucSubAddrArry[0] = 0x08; /* 0x08 号寄存器 */
i2cDevIoctl(&__Gi2cdevSaa7113,
I2C_SET_SUB_ADDR,
(int)&i2csaddrTemp); /* 设置子地址 */
i2cDevRead(&__Gi2cdevSaa7113,
(char *)&ucTemp, 1); /* 读出参数 */
if (__SAA7113_50HZ_625_LINE == ucField) {
ucTemp = (unsigned char)(ucTemp & ~(1 << 6)); /* 清除 D6 */
} else {
ucTemp = (unsigned char)(ucTemp | (1 << 6)); /* 置位 D6 */
}
iSendNum = i2cDevWrite(&__Gi2cdevSaa7113,
(char *)&ucTemp, 1); /* 写入参数 */
if (iSendNum < 1) {
__SAA7113_ERROR_OUT("saa7113 init error\r\n");
}
}
/*********************************************************************************************************
** Function name: saa7113SetBrightness
** Descriptions: SAA7113 视频采集卡设置亮度
** input parameters: ucBrightness 亮度
** output parameters: NONE
** Returned value: NONE
** Created by: Hanhui
** Created Date: 2007/12/13
**--------------------------------------------------------------------------------------------------------
** Modified by:
** Modified date:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -