yulutong 发表于 2010-6-10 11:11:11

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

环境: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 ;G ;R ,我一开始也是参考手册,最后出来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_BUF0;

}
现在流行有图有真相,呵呵。
http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_560893.JPG
(原文件名:1.JPG)

Tzhou 发表于 2010-6-10 11:15:33

呵呵 ,不错

yqh815 发表于 2010-6-10 11:16:06

zhifeng 发表于 2010-6-10 11:26:07

你好!请问DS90C385A多少钱一片?

electricit 发表于 2010-6-10 11:28:13

不错,有图有真象

durgy 发表于 2010-6-10 12:06:38

不错

yulutong 发表于 2010-6-10 12:11:08

回复【3楼】zhifeng
-----------------------------------------------------------------------

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

quzegang 发表于 2010-6-10 13:56:41

看到10.1寸的屏,眼馋了,多少银子买的屏?

yulutong 发表于 2010-6-10 14:31:30

回复【7楼】quzegang 璩
-----------------------------------------------------------------------

全新 行货 250元

youki1234 发表于 2010-6-10 14:35:53

回复【8楼】yulutong 土土狗
回复【7楼】quzegang 璩
-----------------------------------------------------------------------
全新 行货 250元

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

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

Taobao_ARM 发表于 2010-6-10 14:38:37

回复【7楼】quzegang 璩
看到10.1寸的屏,眼馋了,多少银子买的屏?
-----------------------------------------------------------------------

这么便宜.....?

Taobao_ARM 发表于 2010-6-10 14:39:17

回复【8楼】yulutong 土土狗
回复【7楼】quzegang 璩
-----------------------------------------------------------------------
全新 行货 250元

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

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

fishhead 发表于 2010-6-10 14:49:19

太便宜了吧我买的要800元啊10.4 带触摸的

fishhead 发表于 2010-6-10 14:51:02

是工业屏么??

yulutong 发表于 2010-6-10 15:06:21

不是工业屏,不是淘宝,是从深圳那边拿来的。量大还可以便宜。

fishhead 发表于 2010-6-10 15:15:17

原来如此啊

fishhead 发表于 2010-6-10 15:16:47

使用的多少位色 多大分辨率啊刷屏性能如何?

ywhfdl 发表于 2010-6-10 15:47:52

是杭州威步科技的 9261开发板嘛!!主频貌似是198M的,可以跑到245M的!!跑到300M就不能启动了!我也买了套学习的!!很不错!!

fishhead 发表于 2010-6-10 15:56:33

最高266M300M不成了超频了阿 呵呵

ljt8015 发表于 2010-6-10 19:19:19

mark!~~

yulutong 发表于 2010-6-11 07:47:39

http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561098.JPG
(原文件名:2.JPG)

fishhead 发表于 2010-6-11 08:54:53

TO 【楼主位】 yulutong 土土狗:SAM9260跑到多少频率阿?

yulutong 发表于 2010-6-11 10:08:01

目前98M,

fishhead 发表于 2010-6-11 10:41:45

晕198MHZ吧? 呵呵

ywhfdl 发表于 2010-6-18 15:21:16

9260,9261,9263标准都是198M,但是9261可以超频到245,9263可以超频到300,官方说的9261可以达到250其实就是最高频率了!如果9261达到300M,启动不了咯!!哈哈1!但是要高主频,还是9G45才是最终解决方案,超频始终不是最优的!!大家还是198M吧!!

yulutong 发表于 2010-6-19 09:15:45

回复【24楼】ywhfdl
-----------------------------------------------------------------------

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

ywhfdl 发表于 2010-6-19 18:09:48

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

yulutong 发表于 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   请赐教。

2427295 发表于 2010-7-1 11:25:49

to 【26楼】 ywhfdl   

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

911gt 发表于 2010-7-2 00:19:06

背光用什么IC驱动啊?

gaolf_2000 发表于 2010-7-3 22:23:04

9263我用微控的板子上ce6系统跑到220M就已经经常死机了,无奈降到180M,驱大屏800*600,16位色当显示内容变化大时刷屏惨不忍睹。再次无奈降为8位色显示,才较为流畅。

ywhfdl 发表于 2010-7-4 17:54:50

在回复【28楼】2427295
-----------------------------------------------------------------------

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


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

2427295 发表于 2010-7-5 09:53:44

没用过linux 既然有操作系统可以改,那裸机就更没问题了
我的问题是:SDRAM的时钟SDCK是不是可以单独设置
不知道你说的“有一段修改主频的”这个主频指的是什么:cpu主频?

ywhfdl 发表于 2010-7-5 13:13:48

回复【32楼】2427295
-----------------------------------------------------------------------

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

2427295 发表于 2010-7-8 21:18:13

我想说除了CPU主频,还有一个叫MCK的时钟,是给外设用的,而我测得的SDCK是跟这个MCK相等的

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

shangdawei 发表于 2010-7-29 12:01:25

mark

tigerchen 发表于 2010-9-6 10:39:48

mark

mioc 发表于 2010-9-8 11:02:13

回复【楼主位】yulutong 土土狗
-----------------------------------------------------------------------

mark

zcdz123 发表于 2010-9-8 16:15:18

群创10。1寸 BT101IW01
可惜是16:9的,想找4:3的9-10寸的屏,分辨率640*480就行。

Oliver 发表于 2010-9-8 19:21:50

800*600的要不,价格很贵

zbjzxc 发表于 2010-9-8 21:19:02

记号~~

yulutong 发表于 2010-9-9 08:24:06

回复【39楼】Oliver 老易(TFT产品)
-----------------------------------------------------------------------

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

bj-stm8 发表于 2010-9-9 11:25:13

视频流用瑞芯微或者jz4750

Oliver 发表于 2010-9-9 18:19:21

【41楼】 yulutong 土土狗:
不是所有产品都要视频或者多媒体?

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

mioc 发表于 2010-10-20 09:20:31

回复【楼主位】yulutong 土土狗
-----------------------------------------------------------------------

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

3q

413405876@163.com

llf021421 发表于 2010-10-20 13:10:52

mark!

demoxie 发表于 2011-3-30 09:00:13

谢谢啊,这么好的文章。我在做wince的启动画面,一筹莫展,希望能有帮主。

szyax 发表于 2011-4-1 13:28:54

AT91SAM9261点这么大的屏,用途不大!
显示图片肯定可以。

fishhead 发表于 2011-12-15 15:20:31

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

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

gaolf_2000 发表于 2011-12-16 19:44:10

现在很想换平台,am1808很强大,只是最近很忙,唉

fishhead 发表于 2011-12-17 08:42:33

回复【50楼】gaolf_2000
现在很想换平台,am1808很强大,只是最近很忙,唉
-----------------------------------------------------------------------

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

losting 发表于 2012-1-6 00:14:23

mark

zhangyunting77 发表于 2012-1-20 10:24:20

想和楼主请教下啊,我现在在做9263驱动10.4寸(800X600)的屏呢
QQ:870622919

jomin 发表于 2012-12-10 14:38:46

yulutong 发表于 2010-6-21 08:41 static/image/common/back.gif
“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


页: [1]
查看完整版本: 【共享】AT91SAM9261S驱动10.1寸彩屏 调试过程