dm642main.c
来自「这是DM642(EVM开发板)的视频采集和视频输出的一个很好的例子原代码,用CC」· C语言 代码 · 共 106 行
C
106 行
#include <csl.h>
#include <csl_emifa.h>
#include <csl_i2c.h>
#include <csl_gpio.h>
#include <csl_irq.h>
#include <csl_chip.h>
#include "iic.h"/*总线配置头文件*/
#include "vportcap.h"/*采集通道头文件*/
#include "vportdis.h"/*显示通道头文件*/
#include "sa7121h.h"/*sa7121头文件*/
/*DM642的IIC的设置结构*/
I2C_Config DM642IIC_Config = {
0, /* master mode, i2coar;采用主模式 */
0, /* no interrupt, i2cimr;只写,不读,采用无中断方式*/
(20-5), /* scl low time, i2cclkl; */
(20-5), /* scl high time,i2cclkh; */
1, /* configure later, i2ccnt;*/
0, /* configure later, i2csar;*/
0x4ea0, /* master tx mode, */
/* i2c runs free, */
/* 8-bit data + NACK */
/* no repeat mode */
(75-1), /* 4MHz clock, i2cpsc */
};
static Uint8 saa7113_ta[]={
0x01,0x02,0x03,0x04,0x05,0x06,0x07,0x08,
0x09,0x0a,0x0b,0x0c,0x0d,0x0e,0x0f,0x10,
0x11,0x12,0x13,0x15,0x16,0x17,0x40,0x58,
0x59,0x5a,0x5b,0x5e
};
static Uint8 saa7113_tv[]={
0x08,0xc3,0x33,0x00,0x00,0x0eb,0x0e0,0x0B8,
0x01,0x7E,0x46,0x43,0x01,0x01,0x0F,0x00,
0x0c,0xA7,0x00,0x00,0x00,0x00,0x02,0x00,
0x54,0x07,0x80,0x00
};
I2C_Handle hdm642i2c;//I2C句柄
int portNumber;
/*图像句柄的声明*/
VP_Handle vpHchannel0;//通道0的句柄
VP_Handle vpHchannel1;//通道1的句柄
VP_Handle vpHchannel2;//通道2的句柄
extern far void vectors();//调用中断向量表
#define DM642_SDRAM_BASE 0x80000000 //指定DM642的外部存储器CEO的基址
/*此程序可将四个采集口的数据经过Video Port0送出*/
void main()
{
Uint8 i;
Uint8 addrI2C;
/*-------------------------------------------------------*/
/* perform all initializations */
/*-------------------------------------------------------*/
DM642_init(); //初始化DM642
/*----------------------------------------------------------*/
/*中断向量表的初始化*/
//Point to the IRQ vector table
IRQ_setVecs(vectors); //指向中断向量表
IRQ_nmiEnable(); //非屏蔽中断使能,nmi--非屏蔽中断
IRQ_globalEnable(); //中断使能
IRQ_map(IRQ_EVT_VINT0, 11); //INT0中断产生11次
IRQ_map(IRQ_EVT_VINT1, 12); //INT1中断产生12次
IRQ_reset(IRQ_EVT_VINT0); //复位INT0中断
IRQ_reset(IRQ_EVT_VINT1); //复位INT1中断
/*----------------------------------------------------------*/
/*进行IIC的初始化*/
// hdm642i2c = I2C_open(I2C_PORT0,I2C_OPEN_RESET);
hdm642i2c = DM642_I2C_hI2C;
I2C_config(hdm642i2c,&DM642IIC_Config); //I2C的配置
/*----------------------------------------------------------*/
GPIO_RSET(GPGC,0x0);/*将GPIO0不做为GPINT使用*/
GPIO_RSET(GPDIR,0x1);/*将GPIO0做为输出*/
GPIO_RSET(GPVAL,0x0);/*GPIO0输出为高,选择IIC1总线,配置*/
// SAA7113 初始化
addrI2C = 0x4A >>1;
for(i = 0;i<28 ;i++)
{
_IIC_write(hdm642i2c, addrI2C,saa7113_ta[i], saa7113_tv[i]);
}
/*初始化Video Port0*/
/*将Vedio Port0设为采集输入*/
portNumber = 0;
vpHchannel1 = bt656_8bit_ncfc(portNumber);
bt656_capture_start(vpHchannel1); //开始采集
for(;;)
{}
}
//======================================end=================================
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?