完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
各位大神好!我的是DM368的板子,然后是裸板跑的程序,自己配置的寄存器值。
然后我用的显示屏是320*240的,使用的DCLK是6.75Mhz。源时钟是27Mhz的。通过设定寄存器VENC_DCLKCTL = 0x0003;VENC_DCLKPTN0 = 0x0003;将频率降为了1/4。那么问题来了,我的背景窗口width设定了240*4=960,height设定为320,此时的背景窗口才刚好铺满整个屏幕。而OSDWIN0 的width = 480*320才刚好铺满整个屏幕,然后我在内存中组织数据时,也是要在其中每放一个像素点然后放一个空的dummy数据,再放第二个像素点,而且行上面也是间隔的加入空行数据才刚好能正常显示。我翻遍了VPBE的资料也没有找到合适的参考,请问哪位大神能帮忙解答一下? 以下是我的寄存器设定: if ( ntsc_pal_mode == NTSC ) [ basep_x = 0; basep_y = 0; // width = 720; // width = 790; // height = 600; // width = 960; // height = 320; width = 960; height = 320; ] else [ basep_x = 132; basep_y = 22; width = 320; height = 240; ] /* * Setup clocking / DACs */ // VDAC_CONFIG = 0x081141CF; // Take DACs out of power down mode // VPSS_CLKCTL = 0x00000038; // Enable DAC and VENC clock, both at 27 MHz // VPSS_VPBE_CLK_CTRL = 0x00000011; // Select enc_clk*1, turn on VPBE clk // VPSS_CLKCTL = 0x0000000B; // Enable DAC and VENC clock, both at 27 MHz VPSS_CLKCTL = 0x00000018; // Enable DAC and VENC clock, both at 27 MHz VPSS_VPBE_CLK_CTRL = 0x00000019; // Select enc_clk*1, turn on VPBE clk // VENC_CLKCTL = 0x00000011; // Enable venc & digital LCD clock DAC相关设置 /* * Setup OSD */ // OSD_MODE = 0x000000fc; // Blackground color blue using clut in ROM0 OSD_MODE = 0x000000ff; // Blackground color blue using clut in ROM0 OSD_EXTMODE = 0; // OSD_MODE = 0x000083fc; OSD_OSDWIN0MD = 0; // Disable both osd windows and cursor window OSD_OSDWIN1MD = 0; OSD_RECTCUR = 0; OSD_VIDWIN0OFST= ((video_buffer>>19)&0x1E00) | (width >> 4); //bit 12~9 store high 4bit 31~28 OSD_VIDWINADH = (video_buffer >> 21)&0x7F; //bit 6~0 store hight 7bit 27~21 OSD_VIDWIN0ADL = (video_buffer >> 5)&0xFFFF; //bit 15~0 stor 16bit 20~5 OSD_BASEPX =0;//137;// HPulse+91; OSD_BASEPY =0;//38; //VPulse+36; OSD_VIDWIN0XP = 100;//55;//一个值动两个像数 OSD_VIDWIN0YP = 100;//35;50 OSD_VIDWIN0XL = 240; OSD_VIDWIN0YL = 100; // OSD_VIDWINMD = 0x0201;//0x00000001; // Disable vwindow 1 and enable vwindow 0 OSD_VIDWINMD = 0; /*liyan's test for bitmap*/ OSD_OSDWIN0OFST= ((video_buffer>>19)&0x1E00) | (width >> 4); //bit 12~9 store high 4bit 31~28 OSD_OSDWINADH = (video_buffer >> 21)&0x7F; //bit 6~0 store hight 7bit 27~21 OSD_OSDWIN0ADL = (video_buffer >> 5)&0xFFFF; //bit 15~0 stor 16bit 20~5 OSD_BASEPX =0;//137;// HPulse+91; OSD_BASEPY =0;//38; //VPulse+36; OSD_OSDWIN0XP = 0;//55;//一个值动两个像数 OSD_OSDWIN0YP = 8;//35; OSD_OSDWIN0XL = 480; OSD_OSDWIN0YL = 320; // OSD_OSDWIN0MD = 0x000000C1; OSD_OSDWIN0MD = 0x000060C1; // Frame mode with no up-scaling /* * Setup VENC */ if ( ntsc_pal_mode == NTSC ) // VENC_VMOD = 0x00000003; // Standard NTSC interlaced output VENC_VMOD = 0x00002013; // liyan change to No stardar video mode 130203 else VENC_VMOD = 0x00002043; // Standard PAL interlaced output VENC_HSPLS = HPulse; //HDW VENC_VSPLS = VPulse; //VDW // VENC_HINTVL = width-1; //PPLN #if 1 VENC_HVALID = width; //LNH VENC_HSTART = HSTART; //144 VENC_HINTVL = 1099;//4; //PPLN //SPH VENC_VVALID = height; //LNV // VENC_VSTART = VSTART; //SLV VENC_VSTART = VSTART; //SLV VENC_VINTVL = 340; //2; //LPFR #endif #if 0 VENC_DCLKHSTT = HSTART; VENC_DCLKHVLD = width; VENC_DCLKVSTT = VSTART; VENC_DCLKVVLD = height; #endif VENC_HSDLY = 0;//40; VENC_VSDLY = 0;//40; // VENC_CMPNT |= 0x8000; VENC_YCCCTL = 0x10; // VENC_VDPRO = colorbar_loopback_mode << 8; VENC_VDPRO |= 0x200; // 100% Color bars // VENC_VDPRO |= 0x40; // liyan change that YUV change to RGB // VENC_VIOCTL |= 0x6000; //VCLK output enable // VPSS_VPBE_CLK_CTRL = 0x00000011; // Select enc_clk*1, turn on VPBE clk VENC_CLKCTL = 0x11; VENC_SYNCCTL = 0x0F; /* * Choose Output mode */ if ( output_mode == COMPOSITE_OUT ) VENC_DACSEL = 0x00000000; else if ( output_mode == SVIDEO_OUT ) VENC_DACSEL = 0x00004210; VENC_VIOCTL = 0x2000; // Enable VCLK (VIDCTL) // VENC_DCLKCTL = 0x0800; // Enable DCLK (DCLKCTL) VENC_DCLKCTL = 0x0003; VENC_DCLKPTN0 = 0x0003; // Set DCLK pattern (DCLKPTN0) |
|
相关推荐
7个回答
|
|
你好,
你的屏是240x320的吧(宽240,高320)? 你现在的配置就是水平方向输出4个数据里面只要一个数据。所以我建议你内存的数据保持240x320,在OSDWIN0MD里面的OHZ0配置为3,也就是水平放大4倍。垂直方向应该是不需要变化的。 |
|
|
|
物是人非aaa 发表于 2018-6-21 12:35 你好,感谢您的回答。我的屏幕是个竖屏,240*320的,没有错。可是我的OSDWIN0的尺寸是设成了480*320,然后刚好占满了整个屏幕。请问那个寄存器的设定是关于水平方向4个数据取一个数据的呢?请帮忙指点,我会再仔细看的。是OSD的设定还是VENC 的DLCK改变了它的取数据的方式? |
|
|
|
7jfsdfsdf 发表于 2018-6-21 12:50 你好, 是VENC_DCLKCTL = 0x0003;VENC_DCLKPTN0 = 0x0003的配置改变的取数的方式。这个改变是改变了输出的vclk时钟,但是内部数据还是按照clk_enc在输出数据,只是外部是屏只会在vclk时钟有效的时候获得数据。 |
|
|
|
物是人非aaa 发表于 2018-6-21 13:06 明白了。然后按照您的说法,是横向4个数据里边取一个数据,然后然后其他三个数据虽然有输出但是因为没有dclok,所以屏并未显示。 所以我的背景是960*320时,刚好铺满了整个屏幕,这没有问题。 但是我的OSDwin0似乎又有不对的地方,我的OSDwin0是设置成480*320然后刚好满屏,而不是预料中的960*320.是不是在OSD中还有哪个寄存器是和宽高相关的? 而且我组织数据的方式也不是一行中放3个空数据一个实际的数据。我是用的YUV422的格式,然后4个字节代表一个数据,其中第一个字节是ycr,第二个字节是空字节,第三个字节是YCB,最高位是Y分量。排满一行后,再拍一行空数据(同样是4个字节代表一个数据,一共排240个数据。此处的数据改变对显示没有影响。)然后第三行又如第一行的排列方式,第四行又如第二行的排列方式。然后显示的图片是正常的。……能帮忙指指出哪个设定对其产生的影响吗? |
|
|
|
7jfsdfsdf 发表于 2018-6-21 13:11 你好, 请问你的OSDCLK0/1是如何配置的? |
|
|
|
你好: 原来的时候OSDCLK0和OSDCLK1是没有设定的。经过您提醒过后,我看了这块的资料,然后设定了OSDCLK0 = 0;OSDCLK1 = 1;然后OSDWIN的尺寸与理论值就对上了。即预料中的设为960*320 ,刚好显示满屏。内存中的数据也设定为一行的4个数据中填写一个真实的数据(填在第三个时是有效的。),不用加空行,可以显示正常的图像。 但是如果将所有的图像数据直接排列进去,不加假数据,并将OHZ0的两个bit位设置成10,即4倍方大。图像并未按照预期的显示。感觉扩大4倍后它的取点方式并未发生变化。 |
|
|
|
7jfsdfsdf 发表于 2018-6-21 13:40 |
|
|
|
只有小组成员才能发言,加入小组>>
NA555DR VCC最低电压需要在5V供电,为什么用3.3V供电搭了个单稳态触发器也使用正常?
669 浏览 3 评论
MSP430F249TPMR出现高温存储后失效了的情况,怎么解决?
597 浏览 1 评论
对于多级放大电路板,在PCB布局中,电源摆放的位置应该注意什么?
1048 浏览 1 评论
731 浏览 0 评论
普中科技F28335开发板每次上电复位后数码管都会显示,如何熄灭它?
520 浏览 1 评论
请问下tpa3220实际测试引脚功能和官方资料不符,哪位大佬可以帮忙解答下
158浏览 20评论
请教下关于TAS5825PEVM评估模块原理图中不太明白的地方,寻求答疑
120浏览 14评论
在使用3254进行录音的时候出现一个奇怪的现象,右声道有吱吱声,请教一下,是否是什么寄存器设置存在问题?
123浏览 13评论
TLV320芯片内部自带数字滤波功能,请问linein进来的模拟信号是否是先经过ADC的超采样?
122浏览 12评论
TPA6304-Q1: TPA6304 两片公用一组I2C的话,其中一片配置不成功怎么办
163浏览 10评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-22 16:18 , Processed in 0.882744 second(s), Total 60, Slave 53 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号