您的位置: OpenADSP社区论坛 -> Blackfin专区 -> 新手上路 -> cvbs-out遇到的问题
本帖共有2287个阅读者
发表帖子 发表投票 回复主题
cvbs-out遇到的问题
liangpeng(论坛新手)
liangpeng
头衔:社区公民
帮派:无帮无派
帖数:20
金钱:296
积分:28
注册时间:2014/2/21
楼主信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
cvbs-out遇到的问题
我现在运行的是bf53x_cvbs_out的程序,我修改了程序,在运行DMA之后的while()中我修改程序如下描述:
while(1)
{
gai(72,544,22,30,m);//这个函数是将DisplayBuffer_565[][]的某一块替换成我的数字,如下定义
}
我遇到的问题是显示出来的数据颜色是可变的,因为下面的数字都是红色的,然而显示出来的有时候是红色,有时候是绿色,我就很奇怪,他是整个数字时红时绿。我不知道什么原因。望各位大神解答,谢谢

section("sdram0_bank1") unsigned char a1[22][30]={
{255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255,255,255, 76, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255, 76, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255, 76, 31,  0, 31,  0, 31,  0, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,191,  3, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255, 76, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255, 76, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255, 76, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255, 76, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255, 76, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255, 76, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255, 76, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255, 76, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255, 76, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255, 76, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255, 76, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255, 76, 31,  0, 31, 72,255,254,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,223, 95,  2, 31,  0, 31,  0,255,220,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255, 76, 31,  0, 31,  0, 31,  0, 31,  0, 31,  0, 31,  0, 31,  0, 31, 72,255,254,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255},
{255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255,255},
};

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/5/11 21:21:44
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
1信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
DMA传输数据的时候偏移了一位,通常是时序不匹配造成的,比如PPI配置寄存器中的POLC位,改变一下状态。

如果修改后解决不了,把原配置还原,可以看一下EBIU全局控制寄存器中,有一个DMA优先,这一位是否打开。
另外你在显示图片时,是否有对内存操作,如果操作的话,是因为DMA通道被你的内存操作堵塞,造成数据偏移,建议减少对内存操作频率,加一些延时。

这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/5/11 21:27:48
liangpeng(论坛新手)
liangpeng
头衔:社区公民
帮派:无帮无派
帖数:20
金钱:296
积分:28
注册时间:2014/2/21
2信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
我的图片就是这样,如果显示很多数字的话,有的是绿色,有的是红色,但是如果我轮流数字跳动显示,比如,从0数到9,他又是某几个固定的数是绿色,其他不是绿色

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/5/11 22:15:49
liangpeng(论坛新手)
liangpeng
头衔:社区公民
帮派:无帮无派
帖数:20
金钱:296
积分:28
注册时间:2014/2/21
3信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
对内存操作?我是在while里面的函数是这样的
for(i=0;i<length_i;i++)
{
     for(j=0;j<length_j;j++)
     {
      DisplayBuffer_565[x+i][y+j] = a1[i][j] ;  
     }
}
这样直接将我事先存好的数组(如上),给它赋值,
不知道是不是这里影响了整个显示

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/5/11 22:19:00
liangpeng(论坛新手)
liangpeng
头衔:社区公民
帮派:无帮无派
帖数:20
金钱:296
积分:28
注册时间:2014/2/21
4信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
因为我当初是这样想的,我随时就改了DMA传输的那段数据,而DMA是一直在传输数据,就能在显示上实时显示了,我不知道是不是我在修改数据时和DMA传输刚好冲突了

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/5/11 22:23:52
liangpeng(论坛新手)
liangpeng
头衔:社区公民
帮派:无帮无派
帖数:20
金钱:296
积分:28
注册时间:2014/2/21
5信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
我试了,我改为DMA优先位,也还是不行
我的问题图是这样
111   111
111   111
这样的数字不同颜色

这家伙很懒,什么也没有留下!
等级:论坛新手 参考IP地址:*.*.*.*
2014/5/12 21:19:30
尊贵身份标志
andy(论坛版主)
andy
头衔:社区公民
帮派:无帮无派
帖数:2287
金钱:11132
积分:2263
注册时间:2011/6/8
6信息 | 留言 | Email | 主页 | 编辑 | 管理 | 离线
颜色错误,肯定是你传输内存数据错误引起的。
for(i=0;i<length_i;i++)
{
     for(j=0;j<length_j;j++)
     {
      DisplayBuffer_565[x+i][y+j] = a1[i][j] ;  
     }
}

我不知道你这个函数是如何确定颜色的。每个像素颜色是16位的,2个byte组成,你的x和y并没有按16位,如果x和y的值偏了一位,你的颜色数据就错误了


这家伙很懒,什么也没有留下!
等级:论坛版主 参考IP地址:*.*.*.*
2014/5/12 23:23:19
Powered by OpenADSP Copyright © 2010 www.Openadsp.com. All rights reserved.159256 Call, 1 Queries, Processed in 0.013672 second(s),