搜索
bottom↓
回复: 54

【共享】AT91SAM9261S驱动10.1寸彩屏 调试过程

[复制链接]

出0入0汤圆

发表于 2010-6-10 11:11:11 | 显示全部楼层 |阅读模式
环境:ADS,裸机,NEWMSG9261开发板,群创10。1寸 BT101IW01,
调试遇到问题:1 脱机运行,NOR启动。 煎熬了2个星期 解决
              2 TTL->LVDS信号匹配。现在大于7寸的液晶,量大价格低的都是LVDS接口,而ARM的LCD控制器只能RGB输出。我选用的是国半DS90C385A。
              3 9261的LCD控制器在16bit模式下,RGB=5:5:5,高位空出。这个问题困了我2天,最后用示波器一位一位的查,再看手册才发现。图片用5:6:5转的话,颜色总是很别扭。
               手册上写的 B [LD23:LD19]  ;G [LD15:LD10] ;R[LD7:LD3] ,我一开始也是参考手册,最后出来R B颜色正好反了下。NEWMSG技术支持说 在硬件上把 B R 数据线交换下解决。

这个参考KEIL下LCD初始化,IAR 和ADS下的初始话都太罗嗦,这个简练,一个函数解决。
/*******************************************************************************
* Initialize the Graphic LCD controller                                        *
*   Parameter:                                                                 *
*   Return:                                                                    *
*******************************************************************************/
void GLCD_init (void) {

  /* Configure the PIO Lines for interfacing LCD                              */
  AT91C_BASE_PIOB->PIO_IDR       = 0x1FFFFFFF;// Interrupt Disable Register
  AT91C_BASE_PIOB->PIO_PPUDR     = 0x1FFFFFFF;// (PIO_PPUDR) Pull-up Disable Register
  AT91C_BASE_PIOB->PIO_ASR       = 0x001F9F1F;//PB0~PB20 用外设A,PB21~28用外设B
  AT91C_BASE_PIOB->PIO_PDR       = 0x1f9F9F1F;// (PIO_PDR) PIO Disable Register,禁止普通IO操作,使能外设控制
  AT91C_BASE_PIOB->PIO_IDR       = 0x1f9F9F1F;// (PIO_IDR) Interrupt Disable Register 屏蔽中断
  AT91C_BASE_PIOB->PIO_PPUDR     = 0x1FFFFFFF;
  AT91C_BASE_PIOB->PIO_BSR       = 0x1F000000;// (PIO_BSR) Select B Register
  AT91C_BASE_PMC->PMC_SCER       = AT91C_PMC_HCK1;          /* Enable HCLOCK  */
  AT91C_BASE_PMC->PMC_PCER       = 1<<AT91C_ID_LCDC;        /* Enable LCD clk */
  AT91C_BASE_LCDC->LCDC_DMACON   = 0;                       /* Disable DMA    */
  AT91C_BASE_LCDC->LCDC_PWRCON   = 0;                       /* LCD off        */
  AT91C_BASE_LCDC->LCDC_LCDCON1  = (0x00<< 12) ;           /* CLKVAL         */
  AT91C_BASE_LCDC->LCDC_LCDCON2  = (2 << 30) | /* MEMOR:     Little Endian */
                                   (0x01 << 15) | /* CLKMOD:    Always active */
                                   (0x00 << 12) | /* INVDVAL:   Normal        */
                                   (0x01<< 11) | /* INVCLK:    Normal        */
                                   (0x00 << 10) | /* INVLINE:   Normal        */
                                   (0x00 <<  9) | /* INVFRAME:  Normal        */
                                   (0x00 <<  8) | /* INVVD:     Normal        */
                                   (0x04 <<  5) | /* PIXELSIZE: 16 BPP, packed*/
                                   (0x00 <<  3) | /* IFWIDTH:   4-bit         */ //2010-6-7 10:52:22 只在STN模式下有效
                                   (0x00 <<  2) | /* SCANMOD:   Single Scan   */
                                   (0x02 <<  0) ; /* DISTYPE:   TFT           */

  AT91C_BASE_LCDC->LCDC_LCDFRCFG = ((LCD_W-1) << 21) |      /* LINESIZE       */
                                   ((LCD_H-1) <<  0) ;      /* LINEVAL        */

  AT91C_BASE_LCDC->LCDC_TIM1     = (0 << 24) |           /* VHDLY          */
                                   (38 << 16) |           /* VPW            */
                                   (6 <<  8) |           /* VBP            */
                                   (13 <<  0) ;           /* VFP            */

  AT91C_BASE_LCDC->LCDC_TIM2     = (39 << 21) |           /* HFP            */
                                   (47 <<  8) |           /* HPW            */
                                   (43 <<  0) ;           /* HBP            */

  AT91C_BASE_LCDC->LCDC_CTRSTVAL = (0x80 <<  0) ;           /* CVAL           */

  AT91C_BASE_LCDC->LCDC_CTRSTCON = (0x01 <<  3) |           /* ENA            */
                                   (0x01 <<  2) |           /* POL            */
                                   (0x00 <<  0) ;           /* PS             */

  AT91C_BASE_LCDC->LCDC_FRMCFG   = (0x02 << 24) |           /* BRSTLN         */
                                   (LCD_W*LCD_H/2);/* FRMSIZE        */

  AT91C_BASE_LCDC->LCDC_FIFO     = 512 - (2 * 4 + 3);      /* FIFOTH         */

  AT91C_BASE_LCDC->LCDC_BA1      = (unsigned int) LCD_BUF0; /* DMA Base Addr  */

  AT91C_BASE_LCDC->LCDC_DMACON   = AT91C_LCDC_DMAEN;        /* Enable DMA     */

  AT91C_BASE_LCDC->LCDC_PWRCON   = (0x0C <<  1) |           /* GUARDTIME      */
                                   (0x01 <<  0) ;           /* LCD_PWR: On    */

  frameBuffer16BitTft240320 = (unsigned short (*)[LCD_W])LCD_BUF0;

}
现在流行有图有真相,呵呵。

(原文件名:1.JPG)

阿莫论坛20周年了!感谢大家的支持与爱护!!

知道什么是神吗?其实神本来也是人,只不过神做了人做不到的事情 所以才成了神。 (头文字D, 杜汶泽)

出0入0汤圆

发表于 2010-6-10 11:15:33 | 显示全部楼层
呵呵 ,不错

出0入0汤圆

发表于 2010-6-10 11:16:06 | 显示全部楼层

出0入0汤圆

发表于 2010-6-10 11:26:07 | 显示全部楼层
你好!请问DS90C385A多少钱一片?

出0入4汤圆

发表于 2010-6-10 11:28:13 | 显示全部楼层
不错,有图有真象

出0入0汤圆

发表于 2010-6-10 12:06:38 | 显示全部楼层
不错

出0入0汤圆

 楼主| 发表于 2010-6-10 12:11:08 | 显示全部楼层
回复【3楼】zhifeng
-----------------------------------------------------------------------

DS90C385A 我只买了样片,要10多元

出0入0汤圆

发表于 2010-6-10 13:56:41 | 显示全部楼层
看到10.1寸的屏,眼馋了,多少银子买的屏?

出0入0汤圆

 楼主| 发表于 2010-6-10 14:31:30 | 显示全部楼层
回复【7楼】quzegang 璩
-----------------------------------------------------------------------

全新 行货 250元

出0入0汤圆

发表于 2010-6-10 14:35:53 | 显示全部楼层
回复【8楼】yulutong 土土狗
回复【7楼】quzegang 璩
-----------------------------------------------------------------------
全新 行货 250元

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

哪买的?淘宝?有地址吗?

出0入0汤圆

发表于 2010-6-10 14:38:37 | 显示全部楼层
回复【7楼】quzegang 璩
看到10.1寸的屏,眼馋了,多少银子买的屏?
-----------------------------------------------------------------------

这么便宜.....?

出0入0汤圆

发表于 2010-6-10 14:39:17 | 显示全部楼层
回复【8楼】yulutong 土土狗
回复【7楼】quzegang 璩
-----------------------------------------------------------------------
全新 行货 250元

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

哪里买的,我也要搞搞。嘿嘿。

出0入0汤圆

发表于 2010-6-10 14:49:19 | 显示全部楼层
太便宜了吧  我买的要800元啊  10.4 带触摸的

出0入0汤圆

发表于 2010-6-10 14:51:02 | 显示全部楼层
是工业屏么??

出0入0汤圆

 楼主| 发表于 2010-6-10 15:06:21 | 显示全部楼层
不是工业屏,不是淘宝,是从深圳那边拿来的。量大还可以便宜。

出0入0汤圆

发表于 2010-6-10 15:15:17 | 显示全部楼层
原来如此啊

出0入0汤圆

发表于 2010-6-10 15:16:47 | 显示全部楼层
使用的多少位色 多大分辨率啊  刷屏性能如何?

出0入0汤圆

发表于 2010-6-10 15:47:52 | 显示全部楼层
是杭州威步科技的 9261开发板嘛!!主频貌似是198M的,可以跑到245M的!!跑到300M就不能启动了!我也买了套学习的!!很不错!!

出0入0汤圆

发表于 2010-6-10 15:56:33 | 显示全部楼层
最高266M  300M不成了超频了阿 呵呵

出0入0汤圆

发表于 2010-6-10 19:19:19 | 显示全部楼层
mark!~~

出0入0汤圆

 楼主| 发表于 2010-6-11 07:47:39 | 显示全部楼层

(原文件名:2.JPG)

出0入0汤圆

发表于 2010-6-11 08:54:53 | 显示全部楼层
TO 【楼主位】 yulutong 土土狗:SAM9260跑到多少频率阿?

出0入0汤圆

 楼主| 发表于 2010-6-11 10:08:01 | 显示全部楼层
目前98M,

出0入0汤圆

发表于 2010-6-11 10:41:45 | 显示全部楼层
晕  198MHZ吧? 呵呵

出0入0汤圆

发表于 2010-6-18 15:21:16 | 显示全部楼层
9260,9261,9263  标准都是198M,但是9261可以超频到245,9263可以超频到300,官方说的9261可以达到250其实就是最高频率了!如果9261达到300M,启动不了咯!!哈哈1!但是要高主频,还是9G45才是最终解决方案,超频始终不是最优的!!大家还是198M吧!!

出0入0汤圆

 楼主| 发表于 2010-6-19 09:15:45 | 显示全部楼层
回复【24楼】ywhfdl
-----------------------------------------------------------------------

请教 为什么用18.432MHz晶振来倍频,仅仅是因为AT出的评估板上用就是这个规格么?
准备画9261。头次用PROTEL99来画4层板,用2个SDRAM,SDRAM的CLK是频率等于主频,这方面布线有什么诀窍?是不是走在内层,CLK到2个SDRAM要等长,尽量不搭过孔。  要不要在CLK线两边走GND线包起来?

出0入0汤圆

发表于 2010-6-19 18:09:48 | 显示全部楼层
几根重要的线要等长的!!其次,时钟可以修改,通常我用的是18.432,官方9263 用的是16点几的,俺是全部都用18.432,这样我是为了方便自己的统一!!!晶振完全可以自己修改,但是注意波特率就OK,哈哈!!!SDRAM 的clk 怎么会等于主频呢???建议先自己学习datasheet

出0入0汤圆

 楼主| 发表于 2010-6-21 08:41:07 | 显示全部楼层
“The value to be loaded depends on the SDRAMC clock frequency (MCK: Master Clock), the refresh rate
of the SDRAM device and the refresh burst length where 15.6 μs per row is a typical value for a burst of length one.”
我在SDRAM控制寄存器没有看到对主时钟的分频设置,所以得出SDRAM SDCK=MIANCK。而且我用示波器测量证实,运行在98M的时候,SDCK就是等于98M.

【26楼】 ywhfdl   请赐教。

出0入0汤圆

发表于 2010-7-1 11:25:49 | 显示全部楼层
to 【26楼】 ywhfdl   

SDRAM的SDCK如果不是等于master clk 那在哪里设SDCK的频率 谢谢!

出0入0汤圆

发表于 2010-7-2 00:19:06 | 显示全部楼层
背光用什么IC驱动啊?

出0入0汤圆

发表于 2010-7-3 22:23:04 | 显示全部楼层
9263我用微控的板子上ce6系统跑到220M就已经经常死机了,无奈降到180M,驱大屏800*600,16位色当显示内容变化大时刷屏惨不忍睹。再次无奈降为8位色显示,才较为流畅。

出0入0汤圆

发表于 2010-7-4 17:54:50 | 显示全部楼层
在回复【28楼】2427295
-----------------------------------------------------------------------

在LINUX 内核代码里面,有一段修改主频的,看代码要认真!!!


微孔电子的不稳定呀!!杭州威步科技的 9263  貌似不错!!!至少我觉得比微孔电子的好多了!!

出0入0汤圆

发表于 2010-7-5 09:53:44 | 显示全部楼层
没用过linux 既然有操作系统可以改,那裸机就更没问题了
我的问题是:SDRAM的时钟SDCK是不是可以单独设置
不知道你说的“有一段修改主频的”这个主频指的是什么:cpu主频?

出0入0汤圆

发表于 2010-7-5 13:13:48 | 显示全部楼层
回复【32楼】2427295
-----------------------------------------------------------------------

主频当然是CPU 的主频!!SDCK 跟主频有一个比例关系!这个是不能修改的!!!

出0入0汤圆

发表于 2010-7-8 21:18:13 | 显示全部楼层
我想说除了CPU主频,还有一个叫MCK的时钟,是给外设用的,而我测得的SDCK是跟这个MCK相等的

所以是不是SDCK是不能单独设的,跟MCK保持一致,而MCK是可以修改的,只要MCK修改SDCK就跟着变了

出0入0汤圆

发表于 2010-7-29 12:01:25 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-6 10:39:48 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-9-8 11:02:13 | 显示全部楼层
回复【楼主位】yulutong 土土狗
-----------------------------------------------------------------------

mark

出0入0汤圆

发表于 2010-9-8 16:15:18 | 显示全部楼层
群创10。1寸 BT101IW01
可惜是16:9的,想找4:3的9-10寸的屏,分辨率640*480就行。

出0入0汤圆

发表于 2010-9-8 19:21:50 | 显示全部楼层
800*600的要不,价格很贵

出0入0汤圆

发表于 2010-9-8 21:19:02 | 显示全部楼层
记号~~

出0入0汤圆

 楼主| 发表于 2010-9-9 08:24:06 | 显示全部楼层
回复【39楼】Oliver 老易(TFT产品)
-----------------------------------------------------------------------

老易走的是CPLD+SRAM驱动TFT,也不能很好的支持视频或者多媒体。不知这个方案和ARM来驱动好在哪儿?价格也便宜不了多少,除了能用51去控制外。

出0入0汤圆

发表于 2010-9-9 11:25:13 | 显示全部楼层
视频流用瑞芯微或者jz4750

出0入0汤圆

发表于 2010-9-9 18:19:21 | 显示全部楼层
【41楼】 yulutong 土土狗:
不是所有产品都要视频或者多媒体?

这些是消费电子,不是我们的客户.我们做不了也不想做,太累!

出0入0汤圆

发表于 2010-10-20 09:20:31 | 显示全部楼层
回复【楼主位】yulutong 土土狗
-----------------------------------------------------------------------

楼主有硬件设计图吗?
想看看你在ttl转lvds那边的设计。。

3q

413405876@163.com

出0入0汤圆

发表于 2010-10-20 13:10:52 | 显示全部楼层
mark!

出0入0汤圆

发表于 2011-3-30 09:00:13 | 显示全部楼层
谢谢啊,这么好的文章。我在做wince的启动画面,一筹莫展,希望能有帮主。

出0入0汤圆

发表于 2011-4-1 13:28:54 | 显示全部楼层
AT91SAM9261点这么大的屏,用途不大!
显示图片肯定可以。

出0入0汤圆

发表于 2011-12-15 15:20:31 | 显示全部楼层
回复【30楼】gaolf_2000  
9263我用微控的板子上ce6系统跑到220m就已经经常死机了,无奈降到180m,驱大屏800*600,16位色当显示内容变化大时刷屏惨不忍睹。再次无奈降为8位色显示,才较为流畅。
-----------------------------------------------------------------------

我也是啊,用的linux+gtk 800×600 16位色  刷新很慢啊;
不知道400M主频的驱动怎么样啊

出0入0汤圆

发表于 2011-12-16 19:44:10 | 显示全部楼层
现在很想换平台,am1808很强大,只是最近很忙,唉

出0入0汤圆

发表于 2011-12-17 08:42:33 | 显示全部楼层
回复【50楼】gaolf_2000  
现在很想换平台,am1808很强大,只是最近很忙,唉
-----------------------------------------------------------------------

1808驱动800*600木有问题么?看到市场上的使用2440的HMI最大也就800×480的分辨率啊

出0入0汤圆

发表于 2012-1-6 00:14:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-20 10:24:20 | 显示全部楼层
想和楼主请教下啊,我现在在做9263驱动10.4寸(800X600)的屏呢
QQ:870622919

出0入0汤圆

发表于 2012-12-10 14:38:46 | 显示全部楼层
yulutong 发表于 2010-6-21 08:41
“The value to be loaded depends on the SDRAMC clock frequency (MCK: Master Clock), the refresh rate ...

"所以得出SDRAM SDCK=MIANCK"

MAINCK 和 MCK是不同的,
MAINCK 是 main clock 主振荡器的输出
MCK  是 master clock 即主时钟
你的意思应该是 SDCK = MCK


回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-7-23 15:32

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表