MCF5329 LCD controller not working
Nicolas Pinault <[email protected]> Fri, 23 May 2008 11:36:45 +0200
| Newsgroups | gmane.comp.hardware.motorola.microcontrollers.coldfire |
|---|---|
| Organization | AATON |
| Message-ID | <[email protected]> |
Hi all,
I'm trying to use MCF5329 LCD controller but no signals are output from
the chip. No clk, no sync, no data.
My LCD panel is a 640x480 color TFT panel.
Here is an excerpt of my code :
MCF_GPIO_PAR_LCDDATA = MCF_GPIO_PAR_LCDDATA_PAR_LD7_0(3) | // LCD
MCF_GPIO_PAR_LCDDATA_PAR_LD15_8(3) | // LCD
MCF_GPIO_PAR_LCDDATA_PAR_LD16(3) | // LCD
MCF_GPIO_PAR_LCDDATA_PAR_LD17(3); // LCD
MCF_GPIO_PAR_LCDCTL = //MCF_GPIO_PAR_LCDCTL_PAR_CLS | // LCD
//MCF_GPIO_PAR_LCDCTL_PAR_PS | // LCD
//MCF_GPIO_PAR_LCDCTL_PAR_REV | // LCD
//MCF_GPIO_PAR_LCDCTL_PAR_SPL_SPR | // LCD
MCF_GPIO_PAR_LCDCTL_PAR_CONTRAST | // LCD
MCF_GPIO_PAR_LCDCTL_PAR_LSCLK | // LCD
MCF_GPIO_PAR_LCDCTL_PAR_LP_HSYNC | // LCD
MCF_GPIO_PAR_LCDCTL_PAR_FLM_VSYNC | // LCD
MCF_GPIO_PAR_LCDCTL_PAR_ACD_OE; // LCD
MCF_GPIO_PDDR_LCDCTLH = 0x01; // Tout en sortie
MCF_GPIO_PDDR_LCDCTLL = 0xFF; // Tout en sortie
MCF_GPIO_PDDR_LCDDATAH = 0x03; // Tout en sortie
MCF_GPIO_PDDR_LCDDATAM = 0xFF; // Tout en sortie
MCF_GPIO_PDDR_LCDDATAL = 0xFF; // Tout en sortie
MCF_GPIO_DSCR_LCD = MCF_GPIO_DSCR_LCD_LCD_DSE(3); // Maximum drive
strength
// Bursting
MCF_SCM_BCR = MCF_SCM_BCR_GBR |
MCF_SCM_BCR_GBW |
0xFF;
// Panel configuration
MCF_LCDC_LPCR = MCF_LCDC_LPCR_PCD(4) | // TODO : 2 ?
//MCF_LCDC_LPCR_SHARP |
MCF_LCDC_LPCR_SCLKSEL |
MCF_LCDC_LPCR_ACD(0) |
MCF_LCDC_LPCR_ACDSEL |
//MCF_LCDC_LPCR_REV_VS |
MCF_LCDC_LPCR_SWAP_SEL |
MCF_LCDC_LPCR_ENDSEL |
MCF_LCDC_LPCR_SCLKIDLE |
MCF_LCDC_LPCR_OEPOL |
MCF_LCDC_LPCR_CLKPOL |
MCF_LCDC_LPCR_LPPOL |
MCF_LCDC_LPCR_FLM |
//MCF_LCDC_LPCR_PIXPOL |
MCF_LCDC_LPCR_BPIX_18bpp |
MCF_LCDC_LPCR_PBSIZ_8 |
MCF_LCDC_LPCR_COLOR |
MCF_LCDC_LPCR_TFT;
// Horizontal configuration
MCF_LCDC_LHCR = MCF_LCDC_LHCR_H_WAIT_2(78-3) | // tHBP
MCF_LCDC_LHCR_H_WAIT_1(88-1) | // tHFP
MCF_LCDC_LHCR_H_WIDTH(2-1);
// Vertical configuration
MCF_LCDC_LVCR = MCF_LCDC_LVCR_V_WAIT_2(1) |
MCF_LCDC_LVCR_V_WAIT_1(6) |
MCF_LCDC_LVCR_V_WIDTH(1);
// Start Address
MCF_LCDC_LSSAR = MCF_LCDC_LSSAR_SSA((INT32U)BackgroundPlane);
// Width and Height
MCF_LCDC_LSR = MCF_LCDC_LSR_XMAX(480/16) |
MCF_LCDC_LSR_YMAX(640);
// Virtual width
MCF_LCDC_LVPWR = MCF_LCDC_LVPWR_VPW(480);
// Cursor
MCF_LCDC_LCPR = MCF_LCDC_LCPR_CXP(100) |
MCF_LCDC_LCPR_CYP(100) |
MCF_LCDC_LCPR_CC_XOR |
MCF_LCDC_LCPR_OP_ON;
// Cursor Width Height and Blink
MCF_LCDC_LCWHBR = MCF_LCDC_LCWHBR_BD(32) |
MCF_LCDC_LCWHBR_CH(10) |
MCF_LCDC_LCWHBR_CW(20) |
MCF_LCDC_LCWHBR_BK_EN_ON;
// Color cursor mapping
MCF_LCDC_LCCMR = MCF_LCDC_LCCMR_CUR_COL_R(0x30) | // midscale
MCF_LCDC_LCCMR_CUR_COL_G(0x30) |
MCF_LCDC_LCCMR_CUR_COL_B(0x30);
// Panning offset
MCF_LCDC_LPOR = MCF_LCDC_LPOR_POS(0);
// Dma control
MCF_LCDC_LDCR = MCF_LCDC_LDCR_TM(4) |
MCF_LCDC_LDCR_HM(8) |
MCF_LCDC_LDCR_BURST;
// Refresh mode
MCF_LCDC_LRMCR = MCF_LCDC_LRMCR_SEL_REF;
// Interrupt configuration
MCF_LCDC_LICR = 0;
// Interrupt enable
MCF_LCDC_LIER = 0;
// // Graphic window start address
// MCF_LCDC_LGWSAR = MCF_LCDC_LGWSAR_GWSA((INT32U)GraphicPlane);
//
// // Graphic window size
//// MCF_LCDC_LGWSR = MCF_LCDC_LGWSR_GWH(640) |
//// MCF_LCDC_LGWSR_GWW(480/16);
// MCF_LCDC_LGWSR = MCF_LCDC_LGWSR_GWH(1) |
// MCF_LCDC_LGWSR_GWW(1);
//
// // Graphic window virtual page width
// MCF_LCDC_LGWVPWR = MCF_LCDC_LGWVPWR_GWVPW(480);
//
// // Graphic window panning offset
// MCF_LCDC_LGWPOR = MCF_LCDC_LGWPOR_GWPO(0);
//
// // Graphic window position
// MCF_LCDC_LGWPR = MCF_LCDC_LGWPR_GWYP(0) |
// MCF_LCDC_LGWPR_GWXP(0);
// Graphic window control
MCF_LCDC_LGWCR = MCF_LCDC_LGWCR_GWCKB(0x3F) |
MCF_LCDC_LGWCR_GWCKG(0x3F) |
MCF_LCDC_LGWCR_GWCKR(0x3F) |
//MCF_LCDC_LGWCR_GW_RVS |
//MCF_LCDC_LGWCR_GWE |
//MCF_LCDC_LGWCR_GWCKE |
MCF_LCDC_LGWCR_GWAV(0);
// Graphic window DMA control
MCF_LCDC_LGWDCR = MCF_LCDC_LGWDCR_GWTM(4) |
MCF_LCDC_LGWDCR_GWHM(8) |
MCF_LCDC_LGWDCR_GWBT;
// Mapping RAM registers
// Enable LCD controller
MCF_CCM_MISCCR |= MCF_CCM_MISCCR_LCD_CHEN;
I am obviously missing something but what ?
Any help would be appreciated.
Best regards,
Nicolas Pinault