BF532+++lcd

 用BF532驱动统宝的240*320的LCD,用PPI输出,该屏水平垂直同步信号,只有一个数据使能信号,我用PPI_FS1做垂直同步,用CPLD产生数据使能信号,寄存器的设置是这样的:
    *pPPI_COUNT   = 200*(240+85) - 1;

    *pDMA0_X_MODIFY = 2;
    *pDMA0_X_COUNT =200*(240+85);//
   
85是水平消隐的时钟数,200行是因为*pDMA0_X_COUNT是16位的,再大会溢出,这85个数据是无用的数据,程序中依次设置好Timer1,PPI,DMA0(一维DMA),然后依次启动DMA0,PPI,Timer1。能正确显示一个200行的“犹抱琵琶半遮面”的李嘉欣。

改为2维DMA设置:
    *pPPI_COUNT   = 160*(240+85) - 1;

    *pDMA0_X_MODIFY = 2;
    *pDMA0_X_COUNT = 160*HLINE;//
    *pDMA0_Y_MODIFY = 2;
    *pDMA0_Y_COUNT = 2;
我将整个图像分为上下半帧传送,显示的结果为上下半帧重叠闪烁在上半帧显示,下半帧也闪烁无显示(出现随机的一个颜色)。

再次改为如下2维DMA设置:
    *pPPI_COUNT   =(240+85) - 1;

    *pDMA0_X_MODIFY = 2;
    *pDMA0_X_COUNT = HLINE;//
    *pDMA0_Y_MODIFY = 2;
    *pDMA0_Y_COUNT = 320;
只有第一行有图像变换,其他行轮换显示统一颜色。

曾经这样设置过,设置X方向传输160行一维DMA,启动中断,在中断中重新设置DMA,将DMA的START_ADDR指向下半帧起始处,再启动DMA,但只有上部显示正常,下半帧还是无显示,后来看资料也说无同步信号DMA不会启动。

现在实在没有办法了,在此请各位高手不吝赐教,我的问题出在哪里,如何设置2维DMA。

-------------------------------------------------------------------------------------------------

原因总算在昨天找到了,那就是半帧传输完后,也就是2D DMA的内部循环结束后,开始外部循环,但外部循环没有工作,原因是没有同步信号,原来每次的DMA传输要有同步信号启动,手册里也没有说。于是改程序,将内部同步改为外部同步,同步信号在每帧起始处即半帧处增加一个同步,但CPLD程序一直不能工作,最后用了一个效率较低的办法,用内部同步,将PPI_FS1(TIMER1)的周期改为原来的一半,这样一帧中就能产生两个同步头,但是上半帧为160行,下半帧的160行结束后还要有16行的垂直消隐,只能开启PPI中断,在半帧结束后的中断判断上下半帧,修改TIMER1的PERIOD为相应的长度,多增加了一个周期7.7ms左右的中断程序。问题解决。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值