david1982 Posted March 25, 2015 Report Share Posted March 25, 2015 Hello,Just trying to get my SSD1289 display working and all I am getting is a screen full of multi colored pixels what would be the cause of this??Here is my board file./*#ifndef _GDISP_LLD_BOARD_H#define _GDISP_LLD_BOARD_H// For a multiple display configuration we would put all this in a structure and then// set g->board to that structure./* Using FSMC A19 (PE3) as DC */#define GDISP_REG (*((volatile uint16_t *) 0x60000000)) /* DC = 0 */#define GDISP_RAM (*((volatile uint16_t *) 0x60100000)) /* DC = 1 */#define GDISP_DMA_STREAM STM32_DMA2_STREAM6#define SET_RST palSetPad(GPIOD, 3);#define CLR_RST palClearPad(GPIOD, 3);static inline void init_board(GDisplay *g) { // As we are not using multiple displays we set g->board to NULL as we don't use it. g->board = 0; switch(g->controllerdisplay) { case 0: // Set up for Display 0 #if defined(STM32F4XX) || defined(STM32F2XX) /* STM32F4 FSMC init */ rccEnableAHB3(RCC_AHB3ENR_FSMCEN, 0); #if defined(GDISP_USE_DMA) && defined(GDISP_DMA_STREAM) if (dmaStreamAllocate(GDISP_DMA_STREAM, 0, 0, 0)) gfxExit(); dmaStreamSetMemory0(GDISP_DMA_STREAM, &GDISP_RAM); dmaStreamSetMode(GDISP_DMA_STREAM, STM32_DMA_CR_PL(0) | STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD | STM32_DMA_CR_DIR_M2M); #endif #else #error "FSMC not implemented for this device" #endif /* Group pins */ IOBus busD = {GPIOD, (1 << 0) | (1 << 1) | (1 << 4) | (1 << 5) | (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10) | (1 << 14) | (1 << 15), 0}; IOBus busE = {GPIOE, (1 << 3) | (1 << 7) | (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 12) | (1 << 13) | (1 << 14) | (1 << 15), 0}; /* FSMC is an alternate function 12 (AF12) */ palSetBusMode(&busD, PAL_MODE_ALTERNATE(12)); palSetBusMode(&busE, PAL_MODE_ALTERNATE(12)); /* FSMC timing register configuration */ FSMC_Bank1->BTCR[0 + 1] = (FSMC_BTR1_ADDSET_1 | FSMC_BTR1_ADDSET_3) \ | (FSMC_BTR1_DATAST_1 | FSMC_BTR1_DATAST_3) \ | (FSMC_BTR1_BUSTURN_1 | FSMC_BTR1_BUSTURN_3) ;// FSMC_Bank1->BTCR[0 + 1] = (FSMC_BTR1_ADDSET_3 | FSMC_BTR1_ADDSET_0) \// | (FSMC_BTR1_DATAST_3 | FSMC_BTR1_DATAST_0) \// | FSMC_BTR1_BUSTURN_0; /* Bank1 NOR/PSRAM control register configuration * Write enable, memory databus width set to 16 bit, memory bank enable */ // FSMC_Bank1->BTCR[0] = FSMC_BCR1_WREN | FSMC_BCR1_MWID_0 | FSMC_BCR1_MBKEN; break; }}static inline void post_init_board(GDisplay *g) { (void) g;}static inline void setpin_reset(GDisplay *g, bool_t state) { (void) g; if (state) { CLR_RST; } else { SET_RST; }}static inline void set_backlight(GDisplay *g, uint8_t percent) { (void) g;}static inline void acquire_bus(GDisplay *g) { (void) g;}static inline void release_bus(GDisplay *g) { (void) g;}static inline void write_index(GDisplay *g, uint16_t index) { (void) g; GDISP_REG = index;}static inline void write_data(GDisplay *g, uint16_t data) { (void) g; GDISP_RAM = data;}static inline void setreadmode(GDisplay *g) { (void) g;}static inline void setwritemode(GDisplay *g) { (void) g;}static inline uint16_t read_data(GDisplay *g) { (void) g; return GDISP_RAM;}#if defined(GDISP_USE_DMA) static inline void dma_with_noinc(GDisplay *g, color_t *buffer, int area) { (void) g; dmaStreamSetPeripheral(GDISP_DMA_STREAM, buffer); dmaStreamSetMode(GDISP_DMA_STREAM, STM32_DMA_CR_PL(0) | STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD | STM32_DMA_CR_DIR_M2M); for (; area > 0; area -= 65535) { dmaStreamSetTransactionSize(GDISP_DMA_STREAM, area > 65535 ? 65535 : area); dmaStreamEnable(GDISP_DMA_STREAM); dmaWaitCompletion(GDISP_DMA_STREAM); } } static inline void dma_with_inc(GDisplay *g, color_t *buffer, int area) { (void) g; dmaStreamSetPeripheral(GDISP_DMA_STREAM, buffer); dmaStreamSetMode(GDISP_DMA_STREAM, STM32_DMA_CR_PL(0) | STM32_DMA_CR_PINC | STM32_DMA_CR_PSIZE_HWORD | STM32_DMA_CR_MSIZE_HWORD | STM32_DMA_CR_DIR_M2M); for (; area > 0; area -= 65535) { dmaStreamSetTransactionSize(GDISP_DMA_STREAM, area > 65535 ? 65535 : area); dmaStreamEnable(GDISP_DMA_STREAM); dmaWaitCompletion(GDISP_DMA_STREAM); } }#endif#endif /* _GDISP_LLD_BOARD_H */ Link to comment Share on other sites More sharing options...
steved Posted March 25, 2015 Report Share Posted March 25, 2015 Sounds as if the controller is never getting initialised Link to comment Share on other sites More sharing options...
david1982 Posted March 25, 2015 Author Report Share Posted March 25, 2015 Is it safe to assume that the fsmc is working?Where should I start to look to fix it.Thank you Link to comment Share on other sites More sharing options...
Joel Bodenmann Posted March 26, 2015 Report Share Posted March 26, 2015 Before we start digging deep you mentioned that you try to get it workingagain. What did you change since the last time where it worked? Do you use a different uGFX version or revision? Different underlying OS? Different cables, different dev-board?~ Tectu Link to comment Share on other sites More sharing options...
inmarket Posted March 26, 2015 Report Share Posted March 26, 2015 To be able to help you more we will need a lot more detail.What board are you using, what lcd module, what resolution, how is it connected to your board, what is the sequence of events that happen to the lcd when you turn the device on, what demo are you running, what operating system, what debugging have you tried, do you have a scope so you can check the pins are toggling correctly, is the controller a real SSD1289 or could it be an imitation chip?These sorts of information are essential for us to help you debug. With more information we will do what we can to help. Link to comment Share on other sites More sharing options...
Recommended Posts
Create an account or sign in to comment
You need to be a member in order to leave a comment
Create an account
Sign up for a new account in our community. It's easy!
Register a new accountSign in
Already have an account? Sign in here.
Sign In Now