上海妇科疾病研究所 上海女性不孕医院 上海引产医院 无痛引产痛不痛 上海人流医院 白癜风治疗医院 上海小儿脑瘫医院 上海女子医院
bf518控制AT070TN83 V.1的7寸液晶显示屏代码及总结说明-Blackfin-技术中心-国内专业ADI仿真器,Blackfin开发板,DSP芯片,软件算法,解决方案提供商-北京四维卓信电子有限公司
用户名: 密码:
主页 设为首页 加入收藏
      产品中心       技术中心       下载中心        社区新闻        诚聘英才       大学计划        关于我们       技术论坛
  您的当前位置:ADSP开源社区 >> 技术中心 >> Blackfin 今天是:
技术中心  
SigmaDSP
SHARC
A2B音频总线
Blackfin
ADI操作系统
ADSP-218X
TigerSAHRC
ADI DSP仿真器
产品导航
ADI DSP仿真器
SigmaDSP开发板
ADI A2B总线开发板
SHARC DSP开发板
销售网络
Blackfin  
bf518控制AT070TN83 V.1的7寸液晶显示屏代码及总结说明
[ 作者: ] [ 来源:ADSP开源社区 ] [ 发布时间:2011-11-22 ]

bf518控制AT070TN83 V.1的7寸液晶显示屏代码及总结说明bf518控制AT070TN83 V.1液晶显示屏代码及总结说明
搞了几天,终于整出来个color bar,写点东西大家分享。新人学点东西不容易啊~ 嘿嘿
从头开始写。
----------------------------------------------------------------------------------------------------------------------------
要在屏上显示图像,需要把图像存在内存中。
section("MEM_SDRAM0_BANK0")unsigned short int DisplayBuffer[525][800];
             //前消隐23行,中间480行有效数据,后消隐22行

此处需要在ldf文件中定义
  MEM_SDRAM0_BANK0        { TYPE(RAM) START(0x00000000) END(0x04000000) WIDTH(8) }
这块是不是开的有点大?我不知道。反正程序是可以用了。前辈们给指点一下。

----------------------------------------------------------------------------------------------------------------------------
接下来就是各种初始化
----------------------------------------------------------------------------------------------------------------------------
*pDMA0_START_ADDR = 0;
*pDMA0_X_COUNT = 800;//16位传输
*pDMA0_X_MODIFY = 2;
*pDMA0_Y_COUNT = 525;
*pDMA0_Y_MODIFY = 2;
*pDMA0_CONFIG = FLOW_AUTO | SYNC | DMA2D | WDSIZE_16 ;//243
这里PPI是16位传输数据,所以MODIFY=2,是这样吧。。。
Y_COUNT = 525是因为前消隐23行,中间480行有效数据,后消隐22行。消隐是个什么概念?大概就是占个地方让你看不到它,硬件原理的问题吧。。。自己百度去。
====================================================
*pPORTG_MUX |= 0xc080;//PG6|PG7|PG12;  //435 412 418
ssync();
    *pPORTG_FER |= PG6|PG7|PG5;//436
ssync();
*pTIMER0_PERIOD  = 928;//Thp AT070 P11
*pTIMER0_WIDTH  = 48;
*pTIMER0_CONFIG =  CLK_SEL | TIN_SEL | PERIOD_CNT | PWM_OUT;//496
*pTIMER1_PERIOD  = 928*525;//525*Thp
*pTIMER1_WIDTH  = 928*3;//3*Thp
*pTIMER1_CONFIG = CLK_SEL | TIN_SEL | PERIOD_CNT | PWM_OUT;
ssync();
看好多帖子都没有提到过MUX寄存器,由于我目前只用过518,是不是别的型号PPI接口都不需要指定?
另外在这里需要注意一点,在设计硬件的时候,需要先看一下硬件使用手册412页的表,据说像PPI这些有多个针脚可以指定的功能,必需按表里的分组设计针脚功能。说实话,硬件手册我基本上就没看,谁知道这地方怎么回事就给提个醒。
关于TIMER的设置,需要看屏的说明书,那几个参数说明书里都有。我也做了注释。在网上看了一篇文章,这部分就没写说明,参数我也是猜出来的。哈哈。
================================================
*pPORTF_MUX = 0x555;//435 411
ssync();
    *pPORTF_FER |= 0xFFFF;//436
ssync();
*pPPI_CONTROL = POLS  | 0x0010 | PORT_DIR | 0x3800 | XFR_TYPE;//897 | PACK_EN
*pPPI_DELAY = 0;//904
*pPPI_COUNT = 800-1; //
这部分到没什么太重要的东西,只是要提一句,网上很多例子都是pPPI_COUNT = 800*2-1;因为我在最初定义显示缓存的时候用的是unsigned short int DisplayBuffer,在VDSP里看了一下是16位的,另外在pPPI_CONTROL 里也设置的16位数据,所以我觉得这里pPPI_COUNT = 800-1应该没问题。
================================================
最后就是在内存中生成个color bar了,前后消隐行只是开始为了测试用的,在正常显示的时候,前23行黑色和最后22行白色的条是不会显示出来的。
for(i=0;i<23;i++)
{
  for(j=0;j<800;j++)
  {
   DisplayBuffer[j]=0;//黑
  }
}
for(i=23;i<183;i++)
{
  for(j=0;j<800;j++)
  {
   DisplayBuffer[j]=0xf800;//蓝
  }
}
for(i=183;i<343;i++)
{
  for(j=0;j<800;j++)
  {
   DisplayBuffer[j]=0x7E0;//绿
  }
}
for(i=343;i<503;i++)
{
  for(j=0;j<800;j++)
  {
   DisplayBuffer[j]=0x1f;//红
  }
}
for(i=503;i<525;i++)
{
  for(j=0;j<800;j++)
  {
   DisplayBuffer[j]=0xffff;//白
  }
}
===========================================================================
最后要感谢scott给提供了一些编程资料,还有感谢frank最重要的一个提醒,我才把这个程序调好。开始编写的程序和上面的差不多,但显示出来的色条总是会向一个方向移动,研究了好多天也没搞明白怎么回事。后来frank说可能是处理速度的问题,让我把主频调到133M。改完马上就好了。呵呵。我的PPI接了50M的晶振,应该是这个原因吧。。。
第一次搞dsp,各种不懂,大家多指教!
chris ma 于2011年7月15日

QQ:5797378



重要补充:

对上面程序进行了另一个测试,在一行中显示两种颜色,测试之后发现,图像整体偏离中心。

经过群里朋友“2012“的提醒,

将*pPPI_DELAY = 0;

改为*pPPI_DELAY = 45;

再次测试显示图像正常。

这个delay值是从网上的资料中找到的,原文说AT070TN83手册中给出延时40周期,但实测45周期比较好。

联系我们 | 关于我们 | 免责声明 | 诚征英才 | 友情链接
Copyright 2019 All rights reserved  本网页版权属Open ADSP所有
北京海淀区中关村大街32号新中发市场3659 邮编100100
电话 18611096839 
粤ICP备14035876号-1