Hi3516A开发--GV7601 硬件设计

35 篇文章 41 订阅
订阅专栏
34 篇文章 58 订阅
订阅专栏

GV7601 硬件部分官方手册上有给一些示例,但是不太完整。

这里贴出我们设计的原理图,仅供参考。



网上找到一篇关于GV7601 SPI通信的例子

参看:海思3531 GV7601 SPI通信问题

/*生成ko文件源代码*/
#include <linux/module.h> 
#include <linux/types.h> 
#include <linux/kernel.h> 
#include <linux/init.h> 
#include <linux/ioport.h> 
#include <asm/uaccess.h> 
#include <linux/delay.h> 
//#include <bsp.h> 
#include <asm/io.h>



#include <linux/sched.h>
#include <linux/delay.h>   //OK
#include <linux/fs.h>  //OK

#include <asm/irq.h>  //OK
//#include <mach/regs-gpio.h>  
//#include <mach/hardware.h>  //OK  


#include <linux/miscdevice.h>  /**鍐呮牳鐗堟湰2.6.32鍔犱互涓嬪ご鏂囦欢***/
//#include <mach/regs-gpio.h>
#include <linux/mm.h>  //OK
#include <linux/pci.h>  //OK
#include <linux/moduleparam.h>  //OK
#include <linux/slab.h>  //OK
#include <linux/errno.h>  //OK
#include <linux/ioctl.h>  //OK
#include <linux/cdev.h>   //OK
#include <linux/string.h>  //OK
#include <linux/list.h>  //OK


#include <asm/atomic.h>
#include <asm/unistd.h>

#define PDEBUG 
#ifdef PDEBUG 
    #define PLOG(fmt,args...) printk(fmt,##args) 
#else 
    #define PLOG(fmt,args...) /*do nothing*/ 
#endif 

#define DEVICE_NAME "GV7601"  
#define GV7601_MAJOR 230  //device num


typedef struct tem{
unsigned short address;
unsigned short value;
}command;

command temp;

//寄存器读写定义
#define HW_REG(reg)  *((volatile unsigned long *)(reg))
#define Hi3516_gpio_cfgpin(addr,dir) HW_REG(addr) = dir
#define Hi3516_gpio_setpin(addr,value) HW_REG(addr) = value
#define Hi3516_gpio_getpin(addr) HW_REG(addr)

//定义地址偏移
#define CPU_BASE 0x200F0000
#define OFFSET_GPIO2_4 0x00A4  //cs
#define OFFSET_GPIO2_5 0x00A8  //SCLK
#define OFFSET_GPIO2_6 0x00AC  //TDI
#define OFFSET_GPIO2_7 0x00B0  //TDO

#define GPIO2_4_SET IO_ADDRESS(0x200F00A4) 
#define GPIO2_5_SET IO_ADDRESS(0x200F00A8)  
#define GPIO2_6_SET IO_ADDRESS(0x200F00AC)
#define GPIO2_7_SET IO_ADDRESS(0x200F00B0)
#define GPIO1_6_SET IO_ADDRESS(0x200F00D4)

#define GPIO2_BASE 0x20170000
#define GPIO1_BASE 0x20160000
#define GPIO_DIR 0x400
#define GPIO_DATA2_4                IO_ADDRESS(0x20170040) //CS   1<<6 IO_ADDRESS(GPIO2_BASE+(1<<4))
#define GPIO_DATA2_5                IO_ADDRESS(0x20170080) //sclk 1<<7
#define GPIO_DATA2_6                IO_ADDRESS(0x20170100) //tdi  1<<8
#define GPIO_DATA2_7                IO_ADDRESS(0x20170200) //tdo  1<<9
#define GPIO_DATA1_6                IO_ADDRESS(0x20160100) //reset 1<<8


#define GPIO2_DIR IO_ADDRESS(0x20170400)
#define GPIO1_DIR IO_ADDRESS(0x20160400)


#define PIN_SDO 9 // 
#define PIN_SDI 8 
#define PIN_SCLK 7 
#define PIN_CS 6 // 

#define SPI_CMD 0 
#define SPI_DATA 1 
#define FUN_GPIO    0 

static int spi_setcs_gv7601(int ) ;
static int spi_sethigh(int );
static int spi_setlow(int ) ;
static unsigned int spi_readIO_gv7601(int ) ;
static int spi_init_gv7601(void) ;
void SPI_send_gv7601(unsigned short,unsigned short ) ;
unsigned short spi_read_gv7601(unsigned short ) ;
static ssize_t spi_write_data_gv7601(struct file *, command __user *, size_t , loff_t *);
static ssize_t spi_read_data_gv7601(struct file *, command __user *, size_t , loff_t *);
static void set_value(void) ;
static int gv7601_ioctl(struct inode *,struct file *,unsigned int ,unsigned long );


// 换成海思的片选信号,两路,低选中一路,高选中一路
static int spi_setcs_gv7601(int number) 
{ 
        switch(number)
                {
                case 1:
                        Hi3516_gpio_setpin(GPIO_DATA2_4,Hi3516_gpio_getpin(GPIO_DATA2_4)&0xFFEF); //拉低
                break;
                case 2:
                        Hi3516_gpio_setpin(GPIO_DATA2_4,Hi3516_gpio_getpin(GPIO_DATA2_4)|0x0010); //拉高
                break; 
                }
    return 0; 
} 


// set gpio pin level, high: 1, low: 0 
// cs    --6
// sclik --7
// tdi         --8
// tdo         --9
// 管脚拉高
static int spi_sethigh(int pin) 
{ 
        Hi3516_gpio_setpin(GPIO2_DIR,Hi3516_gpio_getpin(GPIO2_DIR)|(1<<(pin-2)));
        Hi3516_gpio_setpin(IO_ADDRESS(GPIO2_BASE+(1<<pin)),Hi3516_gpio_getpin(IO_ADDRESS(GPIO2_BASE+(1<<pin)))|(1<<(pin-2)));
    return 0; 
} 

//管脚拉低
static int spi_setlow(int pin) 
{ 
        Hi3516_gpio_setpin(GPIO2_DIR,Hi3516_gpio_getpin(GPIO2_DIR)|(1<<(pin-2)));
        Hi3516_gpio_setpin(IO_ADDRESS(GPIO2_BASE+(1<<pin)),Hi3516_gpio_getpin(IO_ADDRESS(GPIO2_BASE+(1<<pin)))&(~(1<<(pin-2))));
    return 0; 
} 


// cs    --4
// sclik --5
// tdi         --6
// tdo         --7
// 读管脚数据
static unsigned int spi_readIO_gv7601(int pin) 
{ 
        int i;
        Hi3516_gpio_setpin(GPIO2_DIR,Hi3516_gpio_getpin(GPIO2_DIR)&(~(1<<(pin-2))));
        i=Hi3516_gpio_getpin(IO_ADDRESS(GPIO2_BASE+(1<<pin)));
        if (i!=0)
                i=1;
        return i;
} 

// select pin used for gpio 配置管脚为GPIO
// 换成海思的管脚配置即可
static int spi_init_gv7601() 
{ 
        //配置成GPIO口
        Hi3516_gpio_setpin(GPIO2_4_SET,Hi3516_gpio_getpin(GPIO2_4_SET)&0xFFFC);//cs
        Hi3516_gpio_setpin(GPIO2_5_SET,Hi3516_gpio_getpin(GPIO2_5_SET)&0xFFFC);//sclk
        Hi3516_gpio_setpin(GPIO2_6_SET,Hi3516_gpio_getpin(GPIO2_6_SET)&0xFFFC);//tdi
        Hi3516_gpio_setpin(GPIO2_7_SET,Hi3516_gpio_getpin(GPIO2_7_SET)&0xFFFC);//tdo
        Hi3516_gpio_setpin(GPIO1_6_SET,Hi3516_gpio_getpin(GPIO1_6_SET)&0xFFFC);//reset
        
        //配置GPIO输入输出方向
        Hi3516_gpio_setpin(GPIO2_DIR,Hi3516_gpio_getpin(GPIO2_DIR)|0x0070);//cs sclk tdi out
        Hi3516_gpio_setpin(GPIO2_DIR,Hi3516_gpio_getpin(GPIO2_DIR)&0xFF8F);//td0 in
        Hi3516_gpio_setpin(GPIO1_DIR,Hi3516_gpio_getpin(GPIO2_DIR)|0x0040);//reset out
        //除clk以外全部置高
        spi_sethigh(6);
        spi_setlow(7);
        spi_sethigh(8);
        spi_sethigh(9);
    return 0; 
} 

void SPI_send_gv7601(unsigned short address,unsigned short wdata) 
{     
    unsigned short vsignbit; 
        // 写地址   16位
        spi_setlow(PIN_CS);
        ndelay(1000);
    for(vsignbit=0x8000;vsignbit>0;vsignbit>>=1) 
    {     
                if(address&vsignbit) 
            spi_sethigh(PIN_SDI);
        else 
            spi_setlow(PIN_SDI);
                ndelay(1000);
                spi_setlow(PIN_SCLK);
        ndelay(2000); 
        spi_sethigh(PIN_SCLK); 
        ndelay(1000);        
    } 
        ndelay(1000); 
        spi_setlow(PIN_SCLK);
        //spi_setlow(PIN_SDI);
        //spi_setlow(PIN_SDO);
        udelay(100);
        //写数据 16位        
        for(vsignbit=0x8000;vsignbit>0;vsignbit>>=1) 
    {     
                if(wdata&vsignbit) 
            spi_sethigh(PIN_SDI);
        else 
            spi_setlow(PIN_SDI);
                ndelay(1000);
                spi_setlow(PIN_SCLK);
        ndelay(2000); 
        spi_sethigh(PIN_SCLK); 
        ndelay(1000);   
                
    } 
    //spi_sethigh(PIN_SDI);
    ndelay(1000); 
        spi_setlow(PIN_SCLK);
        //spi_setlow(PIN_SCLK);
        //udelay(300);
        //spi_setlow(PIN_SDI);
        ndelay(1000);
        spi_sethigh(PIN_CS);
}  

unsigned short spi_read_gv7601(unsigned short address) 
{     
    unsigned short vsignbit,r_data=0; 
        //写命令字
        spi_setlow(PIN_CS);
        ndelay(1000);
            for(vsignbit=0x8000;vsignbit>0;vsignbit>>=1) 
    {     
                if(address&vsignbit) 
            spi_sethigh(PIN_SDI);
        else 
            spi_setlow(PIN_SDI);
                ndelay(1000);
                spi_setlow(PIN_SCLK);
        ndelay(2000); 
        spi_sethigh(PIN_SCLK); 
        ndelay(1000);           
    } 
    //spi_sethigh(PIN_SDI);
        ndelay(1000);
        spi_setlow(PIN_SCLK);
        //udelay(300);
        spi_setlow(PIN_SDI);


        udelay(10);
        for(vsignbit=0x8000;vsignbit>0;vsignbit>>=1) 
    { 
                spi_setlow(PIN_SCLK);
                ndelay(1000);

        if(spi_readIO_gv7601(PIN_SDO)) //读 TDO
        {     
            r_data = r_data|vsignbit; 
        } 
                ndelay(1000); 
        spi_sethigh(PIN_SCLK); 
        ndelay(2000);        
    } 
        spi_setlow(PIN_SCLK);
        ndelay(1000);
        spi_sethigh(PIN_CS);
    return r_data;     
} 

//向寄存器写入数据
static ssize_t spi_write_data_gv7601(struct file *pFile, command __user *pData, size_t count, loff_t *off)
{
        printk("in the write function\n");
        
        //加片选?
        //ndelay(100);
        memcpy(&temp,pData,count);
        unsigned short address, wdata;
        address = temp.address;
        unsigned short writecommand = 0x0000;
        wdata = temp.value;
        writecommand = writecommand + address;
        SPI_send_gv7601(writecommand,wdata);
        //udelay(300);
        //SPI_send_gv7601(wdata);
        
        //spi_setlow(PIN_SCLK);
        return count;
}

static ssize_t spi_read_data_gv7601(struct file *pFile, command __user *pData, size_t count, loff_t *off)
{
        //加片选?
        printk("in the read function\n");

        unsigned short writecommand = 0x8000;
        memcpy(&temp,pData,count);
        writecommand = writecommand + temp.address;
        //SPI_send_gv7601(writecommand);
        //udelay(300);
        temp.value=spi_read_gv7601(writecommand);
        int ret;
        ret=copy_to_user(pData, &temp, sizeof(temp));    
    if(ret>0)  
    {  
      printk("copy data failed\n");  
      return -1;  
    }
        
        //spi_setlow(PIN_SCLK);
        return count;
}
static void set_value() 
{ 
    //初始化配置
} 

static int gv7601_ioctl(struct inode *inode,struct file *file,unsigned int cmd,unsigned long arg)
{ 
return 0;   
}

static struct file_operations gv7601_fops = {  
.owner = THIS_MODULE,  
.compat_ioctl = gv7601_ioctl,  
.read = spi_read_data_gv7601,  
.write = spi_write_data_gv7601,
};  

static int __init spi_gv7601_init(void) 
{ 
    int ret;  
    ret = register_chrdev(GV7601_MAJOR, DEVICE_NAME, &gv7601_fops);  
    if (ret < 0) {  
       printk(DEVICE_NAME " can't register major number\n");  
       return ret; 
            }
    printk("Register spi control.\n"); 
    spi_init_gv7601(); 
        //reset the device

        //low
        Hi3516_gpio_setpin(IO_ADDRESS(GPIO1_BASE+(1<<8)),Hi3516_gpio_getpin(IO_ADDRESS(GPIO1_BASE+(1<<8)))&(~(1<<(8-2))));
        udelay(200);
        //high
        Hi3516_gpio_setpin(IO_ADDRESS(GPIO1_BASE+(1<<8)),Hi3516_gpio_getpin(IO_ADDRESS(GPIO1_BASE+(1<<8)))|(1<<(8-2)));
    //spi_setcs_gv7601(1); 
    //ndelay(20);     
    //set_value(); 
    //spi_setcs_gv7601(2); 
    return 0; 
}     
static void __exit spi_gv7601_exit(void) 
{ 
    unregister_chrdev(GV7601_MAJOR, DEVICE_NAME); 
    printk(KERN_INFO "unregister spi control.\n"); 
     
} 
module_init(spi_gv7601_init); 
module_exit(spi_gv7601_exit); 
MODULE_LICENSE("GSPI"); 
MODULE_AUTHOR("Dong 100"); 
MODULE_VERSION("0.1"); 
MODULE_DESCRIPTION("gv7601 control driver"); 
/*读取的测试程序*/
#include <stdio.h>  
#include <stdlib.h>  
#include <unistd.h>  
#include <sys/ioctl.h>  
#include <sys/types.h>  
#include <sys/stat.h>  
#include <fcntl.h>  
#include <sys/select.h>  
#include <sys/time.h>  
#include <errno.h>  
#include <string.h>
typedef struct tem{
unsigned short address;
unsigned short value;
}command;
command temp;

int main(int argc, char *argv[])  
{
        
        //printf("~~~~%s~~~~~",argv[1]);
        //printf("....%c....",*argv[1]+1);


        //printf("the char size is %d",sizeof(char));
        //printf("the number is %d",strlen(argv[1]));
        if (argc<=1||argc>3)
                {
                printf("wrong command \n ./test_spi 000 for read from 000H\n ./test_spi 000 0012 for write 0012 to adress 000H\n");
                return 0;
                }
        else if (argc==2)
                {
                if (strlen(argv[1])>3)
                        {
                        printf("address is too long, 12bits max");
                        return 0;
                        }
        char a;
        int i;
        unsigned short result=0;
                printf("read address command\n");
        for (i=1;i<=strlen(argv[1]);i++)
        {        
        a=*(argv[1]+i-1);

        if (a>='0'&&a<='9')
                a=a-'0';
        else if (a>='a'&&a<='f')
                a=a-'a'+10;
        else if (a>='A'&&a<='F')
                a=a-'A'+10;
        else 
                return 0;
        //printf("now a is %x",a);
        //j=strlen(argv[1])-i;
        result=result+a;
        if (i!=strlen(argv[1]))
                result=result<<4;
        }
        
        printf("read from address%x\n",result);
        int fd;
        fd = open("/dev/spi_g",2);
        printf("open fd is %d\n",fd);
        int ret;
        temp.address=result;
        temp.value=0x0000;
        ret=read(fd,&temp,sizeof(temp));
        printf("read value is %x\n",temp.value);
                }
        else
                {
                
                if (strlen(argv[1])>3)
                        {
                        printf("address is too long, 12bits max");
                        return 0;
                        }
                if (strlen(argv[2])>4)
                        {
                        printf("data is too long, 16bits max");
                        return 0;
                        }
                char a;
                int i;
                unsigned short result,result2=0;
                //printf("read address command");
                printf("write to address comand\n");
                result=0;
                for (i=1;i<=strlen(argv[1]);i++)
                {        
                a=*(argv[1]+i-1);

                if (a>='0'&&a<='9')
                a=a-'0';
                else if (a>='a'&&a<='f')
                a=a-'a'+10;
                else if (a>='A'&&a<='F')
                a=a-'A'+10;
                else 
                return 0;
        //printf("now a is %x",a);
        //j=strlen(argv[1])-i;
                result=result+a;
                if (i!=strlen(argv[1]))
                result=result<<4;
                }

                result2=0;
                for (i=1;i<=strlen(argv[2]);i++)
                {        
                a=*(argv[2]+i-1);

                if (a>='0'&&a<='9')
                a=a-'0';
                else if (a>='a'&&a<='f')
                a=a-'a'+10;
                else if (a>='A'&&a<='F')
                a=a-'A'+10;
                else 
                return 0;
        //printf("now a is %x",a);
        //j=strlen(argv[1])-i;
                result2=result2+a;
                if (i!=strlen(argv[2]))
                result2=result2<<4;
                }
        printf("write to address%x,data is %x\n",result,result2);
        int fd;
        fd = open("/dev/spi_g",2);
        printf("open fd is %d\n",fd);
        int ret;
        temp.address=result;
        temp.value=result2;
        ret=write(fd,&temp,sizeof(temp));
        //printf("read value is %x\n",temp.value);

                        
                }
        
        
        return 0;

}


/*Makefile*/
obj-m += ssp.o
all:    
	arm-hisiv300-linux-gcc -g -Wall -o ssp_test ssp_test.c
	make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- -C /home/zslf/hi3516a/Hi3516A_SDK_V1.0.5.0/osdrv/opensource/kernel/linux-3.4.y SUBDIRS=$(PWD) modules
	 rm *.o modules.* *.symvers *.mod.c
clean:
	@rm -rf ssp_test 
	make ARCH=arm CROSS_COMPILE=arm-hisiv300-linux- -C /home/zslf/hi3516a/Hi3516A_SDK_V1.0.5.0/osdrv/opensource/kernel/linux-3.4.y SUBDIRS=$(PWD) clean

按源码执行会出现错误:

/home/zslf/hi3516a/Hi3516A_SDK_V1.0.5.0/tools_test/spi测试/ssp.c:334:1: error: unknown field ‘ioctl’ specified in initializer
 .ioctl = gv7601_ioctl,  
 ^

问题是由于2.6.36内核之后 去掉了原来的ioctl,添加两个新的成员,所以会出错
long (*unlocked_ioctl) (struct file *, unsigned int, unsigned long);
long (*compat_ioctl) (struct file *, unsigned int, unsigned long);
所以修改源文件中file_operations内.ioctl 改为 .compat_ioctl 即可OK,编译通过,警告咱就忽略了

MDIN380芯片应用:3G-SDI转VGA或LVDS,高清视频处理方案(PCB图和源码)
kspDTQeg的博客
04-01 1485
摘要:本文介绍了一种使用韩国视频处理芯片MDIN380的整合应用方案,主要应用于3G-SDI转VGA或3G-SDI转LVDS的高清视频处理。该方案能够实现3G-SDI转VGA和3G-SDI转LVDS的高清视频处理功能,并已在实际应用中取得了成果。本文将介绍一种基于韩国视频处理芯片MDIN380的整合应用方案,实现了3G-SDI转VGA和3G-SDI转LVDS的高清视频处理功能。底板和MDIN380核心板的设计主要包括电源和信号连接的布局,以及对MDIN380和GV7601芯片的焊接布局。
HI3520DV200+GV7601采集1080P视频
qq_44945035的博客
04-20 1506
HI3520DV200+GV7601采集1080P视频
GV7601数据手册 datasheet
08-12
GV7601数据手册 datasheet ,很难得的资料很有参考价值
HI3516CV610海思HI3516CRNCV610 超高清智慧视觉SOC芯片简介 可提供开发资料
最新发布
HXWlin0312的博客
08-12 582
在开放操作系统、新一代视频编解码标准、网络安全和隐私保护、人工智能方面引领行业发展,主要面向室内外场景下的枪机、球机、半球机、海螺机、枪球一体机、双目长短焦机等产品形态,打造极具竞争力的方案与产品。- 支持 CBR/VBR/ABR/AVBR/CVBR/QVBR/FIXQP/QPMAP 等多种码率控制模式。- 支持 32KB I-Cache、32KB D-Cache、128KB L2 cache。- 支持 MIPI/LVDS/Sub-LVDS/HiSPi 多种接口。
GV7601 HD-SDI Receiver
03-21
GV7601 datasheet,支持SD/HD/3G-SDI,高清视频监控必不可少的资料!
GV7601 SDI解码芯片 DATASHEET
11-08
GV7601 SDI解码芯片 DATASHEET • SD 525i and 625i • HD 720p 24, 25, 30, 50 and 60 • HD 1080i 50, 60 • HD 1080p 24, 25, 30, 50 and 60
GV7601_Datasheet
05-08
做sdi开发 用的最广泛的ic 就是GV7601 最新版手册
嵌入式开发之hi3516---GV7601 SPI通信问题
weixin_33922670的博客
07-20 662
http://blog.csdn.net/qq_29350001/article/details/52669964 http://blog.csdn.net/zqj6893/article/details/50386921 http://blog.csdn.net/yangzhongxuan/article/details/8021743 http://www.ebaina.com/bbs/...
HI3531+GV7601
02-13
总的来说,这个压缩包文件提供了关于HI3531和GV7601的全面参考资料,对于从事视频处理、嵌入式系统开发、安防监控等领域的工程师来说,是非常宝贵的学习和工作资源。通过深入学习这些文档,可以掌握这两款芯片的详细...
GV7704_design.rar_GV7704_SDI_SDI 硬件_insteadmtt_supporti4m
07-15
GV7704设计文件集,名为"GV7704_design.rar",是针对GV7704芯片进行SDI(Serial Digital Interface)接口硬件设计及驱动开发的重要资源。此压缩包包含了与Hi3531芯片对接,实现SDI信号采集所需的所有关键信息,对于...
gv7441驱动
01-21
在实际应用中,开发者或系统集成商需要结合gv7441驱动和hi3531a的SDK(软件开发工具包)来开发视频采集应用。他们需要了解这两个组件的规格特性,以及如何通过编程来协调它们的工作,以实现高效且高质量的视频采集...
SDI相机实时采集处理DSP系统 目标跟踪
qq_42589233的博客
08-15 2120
1.系统平台介绍 HD-SDI相机通过75Ω同轴电缆接入到HD-SDI分配器输入端口,如图所示。HD-SDI分配器有两个HD-SDI输出端口,其中一路输出通过同轴电缆线连接到目标跟踪处理板上的BNC接口,另一路输出接口同样通过电缆线连接到PC端采集卡的SDI接口上,将高清图像在上位机同步实时显示。目标跟踪处理平台采集接收到的高清图像数字信号,在核心处理器中执行算法得到目标坐标信息。串口线将目标跟踪处理平台的RS485接口与PC机的USB接口连接起来,实现跟踪平台与上位机的数据交换。 ...
DM8168平台中完成gv7601的spi总线驱动笔记
sanmaoljh的专栏
09-19 3828
问1: 首先测试spi驱动自发自收,对应8168哪些管脚,如何配置spi功能? 答1: SPI_D0 SPI_D1 SPI_SCLK SPI_SCS0 SPI_SCS1 SPI_SCS2 SPI_SCS3 arch\arm\mach-omap2\Board-ti8168evm.c 内核启动打印信息 [ 0.3400
高清接口芯片---gv7600、sii9135
weixin_34117211的博客
11-03 1804
http://www.travellinux.com/download/海思Hi3516%20demo单板使用指南.pdf gv7600  sdi 串行数字接口 parrlar 并行数字接口 http://info.secu.hc360.com/2013/03/281535718329.shtml 应用实例...
HD-SDI芯片方案选择及其应用与发展方向
phoenixtree7的专栏
10-25 8015
视频监控在经历模拟时代、数字时代、网络时代的发展后,现在已经逐步走入了高清与智能时代。与传统标清视频相比,高清在视频质量上有了质的飞跃,但就目前而言,要实现监控系统高清呈现,也并非一蹴而就之易事。从视频监控系统中模拟到数字的转化中,从CIF到D1是一个重要的阶跃,从效果来看数字化视频影像也可与模拟视频影像相当,即使达到标准清晰度(即“标清”),其存储和传输的增加几乎是翻两番。若要达到高级清晰度(即
Hi3516A开发--视频接口
热门推荐
不积跬步,无以至千里
10-10 1万+
参看:几种常用的视频接口 我们经常在家里的电视机、各种播放器上,视频会议产品和监控产品的编解码器的视频输入输出接口上看到很多视频接口,这些视频接口哪些是模拟接口、哪些是数字接口,哪些接口可以传输高清图像等,下面就做一个详细的介绍。   目前最基本的视频接口是复合视频接口、S-vidio接口;另外常见的还有色差接口、VGA接口、接口、HDMI接口、SDI接口。   1、复合
MDIN380 SDI转VGA 转LVDS VGA转SDI
MirxqpGw的博客
12-20 1178
Abstract: 本文主要介绍了MDIN380芯片在高清视频处理中的应用方案,包括3G-SDI转VGA和3G-SDI转LVDS两种转换方式。文中提供了方案的源码和PCB图,并且强调了方案的实际应用效果。结论 本文介绍了MDIN380芯片在高清视频处理中的应用方案,包括3G-SDI转VGA和3G-SDI转LVDS两种转换方式。关键词:MDIN380芯片、高清视频处理、3G-SDI转VGA、3G-SDI转LVDS、源码、PCB图、定制开发、视频图像分割、拼接、KEIL4、Protel99、AD10。
写文章

热门文章

  • Altium Designer -- 精心总结 230821
  • PR菜鸟入门 -- PR基础教学 179073
  • tar解压出错:gzip: stdin: unexpected end of file的解决 167435
  • MQTT再学习 -- 搭建MQTT服务器及测试 140503
  • linux查看磁盘挂载的三种方法 92785

分类专栏

  • stm32库开发实战指南 付费 53篇
  • 汽车电子 31篇
  • GD32F4 7篇
  • FreeRTOS再学习 17篇
  • AM3354开发 2篇
  • 嵌入式面试 6篇
  • stm32 HAL库开发实战指南 17篇
  • 树莓派学习 1篇
  • DSP学习 9篇
  • DM368开发 18篇
  • Hi3516A开发 35篇
  • DM8168 18篇
  • UNIX再学习 38篇
  • C语言再学习 86篇
  • 数据结构与算法 7篇
  • PCB layout 9篇
  • linux设备驱动 66篇
  • 硬件基础知识 13篇
  • 图像和流媒体 37篇
  • 日常生活小技巧 48篇
  • PS/LR/PR学习 9篇
  • MQTT再学习 5篇
  • PM2.5检测 2篇
  • S5PV210开发 21篇
  • MPU6050开发 8篇
  • 汽车行驶姿态 3篇
  • ESP32开发 3篇

最新评论

  • 嵌入式面试知识点总结 -- STM32篇

    再无绕指柔: iic的问题二,软件模拟,不应该是开漏加上拉电阻吗

  • 汽车电子 -- DBC详解

    levelgxw: 文章写得比较细,很有学习价值,转载留存以待不时之需。

  • PR菜鸟入门 -- PR下载安装

    ckiui3: PR全套安装包 https://blog.csdn.net/tanziyihuijian_/article/details/142236359/

  • PR菜鸟入门 -- PR基础教学

    ckiui3: PR全套安装包 https://blog.csdn.net/tanziyihuijian_/article/details/142236359/

最新文章

  • 汽车电子 -- 一帧Can/CanFD报文发送时间
  • ESP32开发 -- VSCODE+PlatformIO环境安装
  • ESP32开发 -- 初识
2024年36篇
2023年38篇
2022年3篇
2021年28篇
2020年16篇
2019年48篇
2018年38篇
2017年169篇
2016年216篇
2015年3篇

目录

目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

聚优致成

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或 充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值

玻璃钢生产厂家玻璃钢史努比造型雕塑佛山玻璃钢罗马柱雕塑厂家义乌玻璃钢雕塑咨询电话玻璃钢动物草坪雕塑玻璃钢白马雕塑封开玻璃钢人物雕塑价格茂名玻璃钢动物雕塑服务电话常州玻璃钢卡通雕塑厂家供应水景玻璃钢雕塑加工江苏小品系列玻璃钢雕塑玻璃钢雕塑料厂家杭州港粤玻璃钢座椅雕塑玻璃钢花盆可以种菜么商场悬挂设计美陈厦门玻璃钢校园雕塑江苏特色商场美陈研发浙江玻璃钢人物雕塑定制烟台商场美陈商场洗手间美陈方案浙江玻璃钢金属雕塑哪家好湖州户内玻璃钢雕塑销售电话连云港玻璃钢龙雕塑设计沈阳东莞玻璃钢动物雕塑玻璃钢传统人物雕塑哪里靠谱白色玻璃钢雕塑脏掉后效果湖南泡沫玻璃钢雕塑浮雕井冈山会师玻璃钢雕塑浚县玻璃钢雕塑厂家玻璃钢红军雕塑哪家不错呈贡玻璃钢广场雕塑设计多少钱香港通过《维护国家安全条例》两大学生合买彩票中奖一人不认账让美丽中国“从细节出发”19岁小伙救下5人后溺亡 多方发声单亲妈妈陷入热恋 14岁儿子报警汪小菲曝离婚始末遭遇山火的松茸之乡雅江山火三名扑火人员牺牲系谣言何赛飞追着代拍打萧美琴窜访捷克 外交部回应卫健委通报少年有偿捐血浆16次猝死手机成瘾是影响睡眠质量重要因素高校汽车撞人致3死16伤 司机系学生315晚会后胖东来又人满为患了小米汽车超级工厂正式揭幕中国拥有亿元资产的家庭达13.3万户周杰伦一审败诉网易男孩8年未见母亲被告知被遗忘许家印被限制高消费饲养员用铁锨驱打大熊猫被辞退男子被猫抓伤后确诊“猫抓病”特朗普无法缴纳4.54亿美元罚金倪萍分享减重40斤方法联合利华开始重组张家界的山上“长”满了韩国人?张立群任西安交通大学校长杨倩无缘巴黎奥运“重生之我在北大当嫡校长”黑马情侣提车了专访95后高颜值猪保姆考生莫言也上北大硕士复试名单了网友洛杉矶偶遇贾玲专家建议不必谈骨泥色变沉迷短剧的人就像掉进了杀猪盘奥巴马现身唐宁街 黑色着装引猜测七年后宇文玥被薅头发捞上岸事业单位女子向同事水杯投不明物质凯特王妃现身!外出购物视频曝光河南驻马店通报西平中学跳楼事件王树国卸任西安交大校长 师生送别恒大被罚41.75亿到底怎么缴男子被流浪猫绊倒 投喂者赔24万房客欠租失踪 房东直发愁西双版纳热带植物园回应蜉蝣大爆发钱人豪晒法院裁定实锤抄袭外国人感慨凌晨的中国很安全胖东来员工每周单休无小长假白宫:哈马斯三号人物被杀测试车高速逃费 小米:已补缴老人退休金被冒领16年 金额超20万

玻璃钢生产厂家 XML地图 TXT地图 虚拟主机 SEO 网站制作 网站优化