【共享】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) 呵呵 ,不错 顶 你好!请问DS90C385A多少钱一片? 不错,有图有真象 不错 回复【3楼】zhifeng
-----------------------------------------------------------------------
DS90C385A 我只买了样片,要10多元 看到10.1寸的屏,眼馋了,多少银子买的屏? 回复【7楼】quzegang 璩
-----------------------------------------------------------------------
全新 行货 250元 回复【8楼】yulutong 土土狗
回复【7楼】quzegang 璩
-----------------------------------------------------------------------
全新 行货 250元
-----------------------------------------------------------------------
哪买的?淘宝?有地址吗? 回复【7楼】quzegang 璩
看到10.1寸的屏,眼馋了,多少银子买的屏?
-----------------------------------------------------------------------
这么便宜.....? 回复【8楼】yulutong 土土狗
回复【7楼】quzegang 璩
-----------------------------------------------------------------------
全新 行货 250元
-----------------------------------------------------------------------
哪里买的,我也要搞搞。嘿嘿。 太便宜了吧我买的要800元啊10.4 带触摸的 是工业屏么?? 不是工业屏,不是淘宝,是从深圳那边拿来的。量大还可以便宜。 原来如此啊 使用的多少位色 多大分辨率啊刷屏性能如何? 是杭州威步科技的 9261开发板嘛!!主频貌似是198M的,可以跑到245M的!!跑到300M就不能启动了!我也买了套学习的!!很不错!! 最高266M300M不成了超频了阿 呵呵 mark!~~ http://cache.amobbs.com/bbs_upload782111/files_30/ourdev_561098.JPG
(原文件名:2.JPG) TO 【楼主位】 yulutong 土土狗:SAM9260跑到多少频率阿? 目前98M, 晕198MHZ吧? 呵呵 9260,9261,9263标准都是198M,但是9261可以超频到245,9263可以超频到300,官方说的9261可以达到250其实就是最高频率了!如果9261达到300M,启动不了咯!!哈哈1!但是要高主频,还是9G45才是最终解决方案,超频始终不是最优的!!大家还是198M吧!! 回复【24楼】ywhfdl
-----------------------------------------------------------------------
请教 为什么用18.432MHz晶振来倍频,仅仅是因为AT出的评估板上用就是这个规格么?
准备画9261。头次用PROTEL99来画4层板,用2个SDRAM,SDRAM的CLK是频率等于主频,这方面布线有什么诀窍?是不是走在内层,CLK到2个SDRAM要等长,尽量不搭过孔。要不要在CLK线两边走GND线包起来? 几根重要的线要等长的!!其次,时钟可以修改,通常我用的是18.432,官方9263 用的是16点几的,俺是全部都用18.432,这样我是为了方便自己的统一!!!晶振完全可以自己修改,但是注意波特率就OK,哈哈!!!SDRAM 的clk 怎么会等于主频呢???建议先自己学习datasheet “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 请赐教。 to 【26楼】 ywhfdl
SDRAM的SDCK如果不是等于master clk 那在哪里设SDCK的频率 谢谢! 背光用什么IC驱动啊? 9263我用微控的板子上ce6系统跑到220M就已经经常死机了,无奈降到180M,驱大屏800*600,16位色当显示内容变化大时刷屏惨不忍睹。再次无奈降为8位色显示,才较为流畅。 在回复【28楼】2427295
-----------------------------------------------------------------------
在LINUX 内核代码里面,有一段修改主频的,看代码要认真!!!
微孔电子的不稳定呀!!杭州威步科技的 9263貌似不错!!!至少我觉得比微孔电子的好多了!! 没用过linux 既然有操作系统可以改,那裸机就更没问题了
我的问题是:SDRAM的时钟SDCK是不是可以单独设置
不知道你说的“有一段修改主频的”这个主频指的是什么:cpu主频? 回复【32楼】2427295
-----------------------------------------------------------------------
主频当然是CPU 的主频!!SDCK 跟主频有一个比例关系!这个是不能修改的!!! 我想说除了CPU主频,还有一个叫MCK的时钟,是给外设用的,而我测得的SDCK是跟这个MCK相等的
所以是不是SDCK是不能单独设的,跟MCK保持一致,而MCK是可以修改的,只要MCK修改SDCK就跟着变了 mark mark 回复【楼主位】yulutong 土土狗
-----------------------------------------------------------------------
mark 群创10。1寸 BT101IW01
可惜是16:9的,想找4:3的9-10寸的屏,分辨率640*480就行。 800*600的要不,价格很贵 记号~~ 回复【39楼】Oliver 老易(TFT产品)
-----------------------------------------------------------------------
老易走的是CPLD+SRAM驱动TFT,也不能很好的支持视频或者多媒体。不知这个方案和ARM来驱动好在哪儿?价格也便宜不了多少,除了能用51去控制外。 视频流用瑞芯微或者jz4750 【41楼】 yulutong 土土狗:
不是所有产品都要视频或者多媒体?
这些是消费电子,不是我们的客户.我们做不了也不想做,太累! 回复【楼主位】yulutong 土土狗
-----------------------------------------------------------------------
楼主有硬件设计图吗?
想看看你在ttl转lvds那边的设计。。
3q
413405876@163.com mark! 谢谢啊,这么好的文章。我在做wince的启动画面,一筹莫展,希望能有帮主。 AT91SAM9261点这么大的屏,用途不大!
显示图片肯定可以。 回复【30楼】gaolf_2000
9263我用微控的板子上ce6系统跑到220m就已经经常死机了,无奈降到180m,驱大屏800*600,16位色当显示内容变化大时刷屏惨不忍睹。再次无奈降为8位色显示,才较为流畅。
-----------------------------------------------------------------------
我也是啊,用的linux+gtk 800×600 16位色刷新很慢啊;
不知道400M主频的驱动怎么样啊 现在很想换平台,am1808很强大,只是最近很忙,唉 回复【50楼】gaolf_2000
现在很想换平台,am1808很强大,只是最近很忙,唉
-----------------------------------------------------------------------
1808驱动800*600木有问题么?看到市场上的使用2440的HMI最大也就800×480的分辨率啊 mark 想和楼主请教下啊,我现在在做9263驱动10.4寸(800X600)的屏呢
QQ:870622919 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]