Jump to content

david1982

Members
  • Posts

    29
  • Joined

  • Last visited

Posts posted by david1982

  1. Yes you where right inmarket..

    I have it working now, you don’t do anything with the spi in int board but you do all spi work in acquire bus.

    Below is my board file for 2 ILI9341 displays running on a STM32F1 via spi.

    It my help others as an example.

       #ifndef _GDISP_LLD_BOARD_H
    #define _GDISP_LLD_BOARD_H
    //**** ILI9341 on SPI1. TESTED on STM32L1, STM32F1 AND STM32F4.
    // Pin & SPI setup

    #define SPI_METHOD_IRQ 1
    #define SPI_METHOD_POLLING 2
    #define SPI_METHOD SPI_METHOD_POLLING
    // SPI1
    #define SPI_DRIVER (&SPID1)
    #define SPI_PORT GPIOA
    #define SCK_PAD 5 //PA5
    #define MISO_PAD 6 //PA6
    #define MOSI_PAD 7 //PA7

    #define CS_PORT GPIOA
    #define CS2_PORT GPIOB
    #define RESET_PORT GPIOA
    #define DNC_PORT GPIOA
    #define CS_PAD 4 // PA4 -- 0 = chip selected
    #define CS2_PAD 0 // PB0 -- 0 = chip selected
    #define RESET_PAD 1 // PA1 -- 0 = reset
    #define DNC_PAD 0 // PA0 -- control=0, data=1 -- DNC or D/C

    // SPI setup ajust " SPI_BaudRatePrescaler_X" to set SPI speed.
    // Peripherial Clock 42MHz SPI2 SPI3
    // Peripherial Clock 84MHz SPI1 SPI1 SPI2/3
    #define SPI_BaudRatePrescaler_2 ((uint16_t)0x0000) // 42 MHz 21 MHZ
    #define SPI_BaudRatePrescaler_4 ((uint16_t)0x0008) // 21 MHz 10.5 MHz
    #define SPI_BaudRatePrescaler_8 ((uint16_t)0x0010) // 10.5 MHz 5.25 MHz
    #define SPI_BaudRatePrescaler_16 ((uint16_t)0x0018) // 5.25 MHz 2.626 MHz
    #define SPI_BaudRatePrescaler_32 ((uint16_t)0x0020) // 2.626 MHz 1.3125 MHz
    #define SPI_BaudRatePrescaler_64 ((uint16_t)0x0028) // 1.3125 MHz 656.25 KHz
    #define SPI_BaudRatePrescaler_128 ((uint16_t)0x0030) // 656.25 KHz 328.125 KHz
    #define SPI_BaudRatePrescaler_256 ((uint16_t)0x0038) // 328.125 KHz 164.06 KHz

    static SPIConfig spi_cfg = {
    NULL,
    CS_PORT,
    CS_PAD,
    SPI_BaudRatePrescaler_2 //AJUST SPEED HERE..
    };
    static SPIConfig spi_cfg2 = {
    NULL,
    CS2_PORT,
    CS2_PAD,
    SPI_BaudRatePrescaler_2 //AJUST SPEED HERE..
    };

    static inline void init_board(GDisplay *g) {
    (void) g;
    //Set up the pins..
    palSetPadMode(GPIOB, 0, PAL_MODE_OUTPUT_PUSHPULL);//cs 2
    palSetPadMode(SPI_PORT, CS_PAD, PAL_MODE_OUTPUT_PUSHPULL);//cs 1
    palSetPadMode(SPI_PORT, SCK_PAD, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
    palSetPadMode(SPI_PORT, MISO_PAD, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
    palSetPadMode(SPI_PORT, MOSI_PAD, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
    palSetPadMode(RESET_PORT, RESET_PAD, PAL_MODE_OUTPUT_PUSHPULL );
    palSetPadMode(DNC_PORT, DNC_PAD, PAL_MODE_OUTPUT_PUSHPULL);
    //Select both displays
    palSetPad(CS_PORT, CS_PAD);
    palSetPad(CS2_PORT, CS2_PAD);
    //Reset both displays
    palSetPad(RESET_PORT, RESET_PAD);
    palClearPad(DNC_PORT, DNC_PAD);
    //Unselect both displays
    palClearPad(CS_PORT, CS_PAD);
    palClearPad(CS2_PORT, CS2_PAD);




    }

    static inline void post_init_board(GDisplay *g) {
    (void) g;
    }

    static inline void setpin_reset(GDisplay *g, bool_t state) {
    (void) g;
    palWritePad(RESET_PORT, RESET_PAD, !state);
    }

    static inline void set_backlight(GDisplay *g, uint8_t percent) {
    (void) g;
    (void) percent;
    }
    //This is where we select each display
    static inline void acquire_bus(GDisplay *g) {
    (void) g;
    switch(g->controllerdisplay)
    {
    case 0:

    spiStart(SPI_DRIVER, &spi_cfg);
    spiSelectI(SPI_DRIVER);
    break;
    case 1:
    spiStart(SPI_DRIVER, &spi_cfg2);
    spiSelectI(SPI_DRIVER);
    break;
    }
    }

    static inline void release_bus(GDisplay *g) {
    (void) g;
    switch(g->controllerdisplay)
    {
    case 0:
    spiUnselectI(SPI_DRIVER);
    break;
    case 1:
    spiUnselectI(SPI_DRIVER);
    break;

    }
    }

    static inline void write_index(GDisplay *g, uint8_t index) {
    (void) g;

    palClearPad(DNC_PORT, DNC_PAD);
    #if SPI_METHOD == SPI_METHOD_IRQ
    spiSend(SPI_DRIVER, 1, &index);
    #elif SPI_METHOD == SPI_METHOD_POLLING
    spiPolledExchange(SPI_DRIVER, index);
    #endif
    palSetPad(DNC_PORT, DNC_PAD);


    }

    static inline void write_data(GDisplay *g, uint8_t data) {
    (void) g;

    #if SPI_METHOD == SPI_METHOD_IRQ
    spiSend(SPI_DRIVER, 1, &data);
    #elif SPI_METHOD == SPI_METHOD_POLLING
    spiPolledExchange(SPI_DRIVER, data);
    #endif
    }

    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 0;
    }

    #endif /* _GDISP_LLD_BOARD_H */

  2. I think that what I am doing ..

    and sorry yes both displays use the same controller.

    I have set the following in my ugfxconf..

    #define GDISP_TOTAL_DISPLAYS 2

    #define GDISP_TOTAL_CONTROLLERS 1

    #define GDISP_PIXELFORMAT GDISP_PIXELFORMAT_RGB565

    My board int looks like..

    static inline void init_board(GDisplay *g) {
    (void) g;
    //Set up the pins..
    palSetPadMode(GPIOB, 0, PAL_MODE_OUTPUT_PUSHPULL);//cs 2
    palSetPadMode(SPI_PORT, CS_PAD, PAL_MODE_OUTPUT_PUSHPULL);//cs 1
    palSetPadMode(SPI_PORT, SCK_PAD, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
    palSetPadMode(SPI_PORT, MISO_PAD, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
    palSetPadMode(SPI_PORT, MOSI_PAD, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
    palSetPadMode(RESET_PORT, RESET_PAD, PAL_MODE_OUTPUT_PUSHPULL );
    palSetPadMode(DNC_PORT, DNC_PAD, PAL_MODE_OUTPUT_PUSHPULL);


    switch(g->controllerdisplay)
    {
    case 0:
    //Set pins.
    palSetPad(CS_PORT, CS_PAD);
    palSetPad(RESET_PORT, RESET_PAD);
    palClearPad(DNC_PORT, DNC_PAD);
    break;
    //Start SPI1 with our config.
    spiStart(SPI_DRIVER, &spi_cfg);
    spiSelectI(SPI_DRIVER); /* Slave Select assertion. */

    case 1:


    //Set pins.
    palSetPad(GPIOB, 0);
    palSetPad(RESET_PORT, RESET_PAD);
    palClearPad(DNC_PORT, DNC_PAD);

    //Start SPI1 with our config.
    spiStart(SPI_DRIVER, &spi_cfg2);
    spiSelectI(SPI_DRIVER);
    break;
    }
    }

    But when I draw to each display only the second display works..

    I am switching between displays like so..


    coord_t displayA,displayB;
    displayA = 0;
    displayB = 1;
    gdispSetDisplay(gdispGetDisplay(displayA));
    ///Do some drawing This does not show
    gdispSetDisplay(gdispGetDisplay(displayB));
    ///Do some drawing This does show

  3. Hello,

    I am trying to use the stdio with ugfx as I need sprintf.

    I have updated my stdio file to fix the compile errors but now I get this error went I use sprintf

    undefined reference to `snprintg'

    How could I resolve this?

    Thank you.

  4. Hello,

    I have got my sd card working under chibios (I can read and write).

    Now how do I display an bmp file that is on that sd card?

    I have the basics for displaying images down just don't know how to open image from the sd card.

    I will be grateful for any help.

    Thank you.

  5. 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 */

  6. Hello,

    I have been trying to get a large number (50+) font working for use with a temperature sensor but I am having some problems.

    I have userfonts working but only at a font size of 5 as soon as I try to go for the larger sizes the userfont will not work.

    I have also filtered for just numbers to reduce the size in case that was the problem but no luck.

    Is there a limit on the font size that I can use?

    The font I am currently trying to use is DejaVuSansMono.

    Any help would be great.

  7. The problem was just bad setup on my end looking at examples I came up with the following board file.

    Hope it helps.


    #ifndef _GDISP_LLD_BOARD_H
    #define _GDISP_LLD_BOARD_H
    //**** ILI9341 on SPI1. TESTED on STM32F1 AND STM32F4.
    // Pin & SPI setup
    // SPI1
    #define SPI_DRIVER (&SPID1)
    #define SPI_PORT GPIOA
    #define SCK_PAD 5 //PA5
    #define MISO_PAD 6 //PA6
    #define MOSI_PAD 7 //PA7

    #define CS_PORT GPIOA
    #define RESET_PORT GPIOA
    #define DNC_PORT GPIOA
    #define CS_PAD 4 // PA4 -- 0 = chip selected
    #define RESET_PAD 1 // PA1 -- 0 = reset
    #define DNC_PAD 0 // PA0 -- control=0, data=1 -- DNC or D/C

    // SPI setup ajust " SPI_BaudRatePrescaler_X" to set SPI speed.
    // Peripherial Clock 42MHz SPI2 SPI3
    // Peripherial Clock 84MHz SPI1 SPI1 SPI2/3
    #define SPI_BaudRatePrescaler_2 ((uint16_t)0x0000) // 42 MHz 21 MHZ
    #define SPI_BaudRatePrescaler_4 ((uint16_t)0x0008) // 21 MHz 10.5 MHz
    #define SPI_BaudRatePrescaler_8 ((uint16_t)0x0010) // 10.5 MHz 5.25 MHz
    #define SPI_BaudRatePrescaler_16 ((uint16_t)0x0018) // 5.25 MHz 2.626 MHz
    #define SPI_BaudRatePrescaler_32 ((uint16_t)0x0020) // 2.626 MHz 1.3125 MHz
    #define SPI_BaudRatePrescaler_64 ((uint16_t)0x0028) // 1.3125 MHz 656.25 KHz
    #define SPI_BaudRatePrescaler_128 ((uint16_t)0x0030) // 656.25 KHz 328.125 KHz
    #define SPI_BaudRatePrescaler_256 ((uint16_t)0x0038) // 328.125 KHz 164.06 KHz
    static SPIConfig spi_cfg = {
    NULL,
    CS_PORT,
    CS_PAD,
    SPI_BaudRatePrescaler_4 //AJUST SPEED HERE..
    };

    static inline void init_board(GDisplay *g) {
    (void) g;
    //g->board = 0;
    //Set up the pins..
    palSetPadMode(SPI_PORT, SCK_PAD, PAL_MODE_ALTERNATE(5));
    palSetPadMode(SPI_PORT, MOSI_PAD, PAL_MODE_ALTERNATE(5));
    palSetPadMode(SPI_PORT, MISO_PAD, PAL_MODE_ALTERNATE(5));
    palSetPadMode(RESET_PORT, RESET_PAD, PAL_MODE_OUTPUT_PUSHPULL);
    palSetPadMode(CS_PORT, CS_PAD, PAL_MODE_OUTPUT_PUSHPULL);
    palSetPadMode(DNC_PORT, DNC_PAD, PAL_MODE_OUTPUT_PUSHPULL);
    //Set pins.
    palSetPad(CS_PORT, CS_PAD);
    palSetPad(RESET_PORT, RESET_PAD);
    palClearPad(DNC_PORT, DNC_PAD);
    //Start SPI1 with our config.
    spiStart(SPI_DRIVER, &spi_cfg);

    }

    static inline void post_init_board(GDisplay *g) {
    (void) g;
    }


    static inline void setpin_reset(GDisplay *g, bool_t state) {
    (void) g;
    palWritePad(RESET_PORT, RESET_PAD, !state);
    }
    static inline void set_backlight(GDisplay *g, uint8_t percent) {
    (void) g;
    (void) percent;
    }
    static inline void acquire_bus(GDisplay *g) {
    (void) g;
    spiSelect(SPI_DRIVER);

    }

    static inline void release_bus(GDisplay *g) {
    (void) g;
    spiUnselect(SPI_DRIVER);
    }


    static inline void write_index(GDisplay *g, uint8_t index) {
    static uint8_t sindex;
    (void) g;

    palClearPad(DNC_PORT, DNC_PAD);
    sindex = index;
    spiSend(SPI_DRIVER, 1, &sindex);
    }

    static inline void write_data(GDisplay *g, uint8_t data) {
    static uint8_t sdata;
    (void) g;

    palSetPad(DNC_PORT, DNC_PAD);
    sdata = data;
    spiSend(SPI_DRIVER, 1, &sdata);
    }

    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 0;
    }

    #endif /* _GDISP_LLD_BOARD_H */

  8. Well I have been playing around and I am now trying to get an image to display the normal way..

    I am using the romfs and I have my romfs_files.h sorted with a bmp image converted via file2c (bf.h)

    My code runs fine but no image displays (I toggle an LED in the while and the code does not jam up)


    #include "gfx.h"
    static gdispImage myImage;
    int main(void) {
    halInit();
    chSysInit();
    coord_t swidth, sheight;
    gfxInit();
    gdispSetOrientation(GDISP_ROTATE_90);
    swidth = gdispGetWidth();
    sheight = gdispGetHeight();
    gdispImageOpenGFile(&myImage, "bf.h");
    gdispImageDraw(&myImage, 20, 20, swidth, sheight, 10, 10);
    gdispImageClose(&myImage);
    while(TRUE) {
    gfxSleepMilliseconds(500);
    }
    }


    #ifndef _GFXCONF_H
    #define _GFXCONF_H

    /* The operating system to use. One of these must be defined - preferably in your Makefile */
    #define GFX_USE_OS_CHIBIOS TRUE
    //#define GFX_USE_OS_WIN32 FALSE
    //#define GFX_USE_OS_LINUX FALSE
    //#define GFX_USE_OS_OSX FALSE

    /* GFX sub-systems to turn on */
    #define GFX_USE_GDISP TRUE
    #define GFX_USE_GFILE TRUE
    /* Features for the GDISP sub-system. */
    #define GDISP_NEED_VALIDATION TRUE
    #define GDISP_NEED_CLIP TRUE
    #define GDISP_NEED_TEXT TRUE
    #define GDISP_NEED_ANTIALIAS FALSE
    #define GDISP_NEED_CONTROL TRUE
    #define GDISP_NEED_STARTUP_LOGO FALSE
    #define GDISP_NEED_CIRCLE FALSE
    #define GDISP_NEED_MULTITHREAD FALSE
    #define GDISP_NEED_IMAGE TRUE
    #define GDISP_NEED_IMAGE_BMP TRUE
    #define GDISP_NEED_IMAGE_BMP_1 FALSE
    #define GDISP_NEED_IMAGE_BMP_4 FALSE
    #define GDISP_NEED_IMAGE_BMP_4_RLE FALSE
    #define GDISP_NEED_IMAGE_BMP_8 FALSE
    #define GDISP_NEED_IMAGE_BMP_8_RLE FALSE
    #define GDISP_NEED_IMAGE_BMP_16 FALSE
    #define GDISP_NEED_IMAGE_BMP_24 FALSE
    #define GDISP_NEED_IMAGE_BMP_32 FALSE
    #define GDISP_NEED_IMAGE_PNG FALSE
    #define GDISP_NEED_IMAGE_NATIVE FALSE

    /* GDISP - fonts to include */
    #define GDISP_INCLUDE_USER_FONTS FALSE
    #define GDISP_INCLUDE_FONT_UI1 FALSE
    #define GDISP_INCLUDE_FONT_UI2 FALSE
    #define GDISP_INCLUDE_FONT_LARGENUMBERS FALSE
    #define GDISP_INCLUDE_FONT_DEJAVUSANS10 FALSE
    #define GDISP_INCLUDE_FONT_DEJAVUSANS12 FALSE
    #define GDISP_INCLUDE_FONT_DEJAVUSANS16 FALSE
    #define GDISP_INCLUDE_FONT_DEJAVUSANS24 TRUE
    #define GDISP_INCLUDE_FONT_DEJAVUSANS32 TRUE
    #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12 FALSE
    #define GDISP_INCLUDE_FONT_FIXED_10x20 FALSE
    #define GDISP_INCLUDE_FONT_FIXED_7x14 FALSE
    #define GDISP_INCLUDE_FONT_FIXED_5x8 FALSE
    #define GDISP_INCLUDE_FONT_DEJAVUSANS12_AA FALSE
    #define GDISP_INCLUDE_FONT_DEJAVUSANS16_AA FALSE
    #define GDISP_INCLUDE_FONT_DEJAVUSANS24_AA FALSE
    #define GDISP_INCLUDE_FONT_DEJAVUSANS32_AA FALSE
    #define GDISP_INCLUDE_FONT_DEJAVUSANSBOLD12_AA FALSE
    /*gfile */
    #define GFILE_NEED_ROMFS TRUE
    #define GFILE_NEED_NATIVEFS FALSE
    #define GFILE_NEED_CHBIOSFS FALSE
    /*GWIN*/
    #define GWIN_NEED_IMAGE FALSE
    #define GWIN_NEED_CONTAINER FALSE
    #define GWIN_NEED_WIDGET FALSE
    #endif /* _GFXCONF_H */

  9. Hello.

    I am trying to use Image Box but I get "unknown type name 'GHandle'" when trying to build.

    I assume that i have not enabled something in my ugfxconf file.

    What could it be?

    I have rom file system working with my image converted to a h file also .

    Thank you.

  10. Still on good..

    I have slowed down the SPI and I have redone the board file.

    I also looked at the Chinese files that came with the LCD and there where some write_data differences so I corrected them in my gdisp_lld_ILI9341.c file but still nothing on the LCD.

    I have connected my oscilloscope and I am defiantly getting pulses on MOSI and CS also RST.

    The backlight is also differently on.

    The attachment is what I got with the LCD and below are my files.

    Could some one with more experience and knowledge than I please have a look.

    Thank You.

    board_ILI9341.h

    /*
    * This file is subject to the terms of the GFX License. If a copy of
    * the license was not distributed with this file, you can obtain one at:
    *
    * http://ugfx.org/license.html
    */

    /**
    * @file boards/addons/gdisp/board_SSD1306_spi.h
    * @brief GDISP Graphic Driver subsystem board interface for the SSD1306 display.
    *
    * @note This file contains a mix of hardware specific and operating system specific
    * code. You will need to change it for your CPU and/or operating system.
    */

    #ifndef _GDISP_LLD_BOARD_H
    #define _GDISP_LLD_BOARD_H

    // Pin & SPI setup

    #define SPI_DRIVER (&SPID2)
    #define SPI_PORT GPIOB
    #define SCK_PAD 13
    #define MISO_PAD 14
    #define MOSI_PAD 15

    #define CS_PORT GPIOB
    #define RESET_PORT GPIOB
    #define DNC_PORT GPIOB
    #define CS_PAD 12 // 0 = chip selected
    #define RESET_PAD 10 // 0 = reset
    #define DNC_PAD 11 // control=0, data=1

    static SPIConfig spi_cfg = {
    NULL,
    CS_PORT,
    CS_PAD,
    (SPI_CR1_BR_1 | SPI_CR1_CPOL | SPI_CR1_CPHA)
    };

    static inline void init_board(GDisplay *g) {
    (void) g;
    //g->board = 0;

    palSetPadMode(SPI_PORT, SCK_PAD, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
    palSetPadMode(SPI_PORT, MOSI_PAD, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
    palSetPadMode(SPI_PORT, MISO_PAD, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
    palSetPadMode(RESET_PORT, RESET_PAD, PAL_MODE_OUTPUT_PUSHPULL);
    palSetPadMode(CS_PORT, CS_PAD, PAL_MODE_OUTPUT_PUSHPULL);
    palSetPadMode(DNC_PORT, DNC_PAD, PAL_MODE_OUTPUT_PUSHPULL);
    palSetPad(CS_PORT, CS_PAD);
    palSetPad(RESET_PORT, RESET_PAD);
    palClearPad(DNC_PORT, DNC_PAD);


    spiStart(&SPID2, &spi_cfg);

    }

    static inline void post_init_board(GDisplay *g) {
    (void) g;
    }


    static inline void setpin_reset(GDisplay *g, bool_t state) {
    (void) g;
    palWritePad(RESET_PORT, RESET_PAD, !state);

    }
    static inline void set_backlight(GDisplay *g, uint8_t percent) {
    (void) g;
    (void) percent;
    }
    static inline void acquire_bus(GDisplay *g) {
    (void) g;
    spiAcquireBus(SPI_DRIVER);

    }

    static inline void release_bus(GDisplay *g) {
    (void) g;
    spiReleaseBus(SPI_DRIVER);
    }


    static inline void write_index(GDisplay *g, uint16_t index) {
    (void) g;
    spiSelect(SPI_DRIVER);

    static uint8_t txbuf[2] = {0};
    txbuf[0] = 0x70 | 0x00 | 0x00;
    spiSend(SPI_DRIVER, 1, txbuf);

    //txbuf[0] = index & 0xFF;
    txbuf[0] = (index >> 8);
    txbuf[1] = (index & 0xFF);

    spiSend(SPI_DRIVER, 2, txbuf);

    spiUnselect(SPI_DRIVER);

    }

    static inline void write_data(GDisplay *g, uint16_t data) {
    (void) g;
    spiSelect(SPI_DRIVER);
    static uint8_t txbuf[2] = {0};
    txbuf[0] = 0x70 | 0x00 | 0x02;

    spiSend(SPI_DRIVER, 1, txbuf);

    txbuf[0] = (data >> 8);
    txbuf[1] = (data & 0xFF);

    spiSend(SPI_DRIVER, 2, txbuf);

    spiUnselect(SPI_DRIVER);
    }

    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;

    spiStart(SPI_DRIVER, &spi_cfg);
    spiSelect(SPI_DRIVER);
    static uint8_t txbuf[1] = {0};
    txbuf[0] = 0x70 | 0x01 | 0x02;
    spiSend(SPI_DRIVER, 1, txbuf);

    static uint8_t rxbuf[3] = {0};
    spiReceive(SPI_DRIVER, 3, rxbuf);

    spiUnselect(SPI_DRIVER);
    spiStart(SPI_DRIVER, &spi_cfg);
    static uint16_t value = 0;
    value = rxbuf[1] << 8 | rxbuf[2];
    return value;
    }


    #endif /* _GDISP_LLD_BOARD_H */

    gdisp_lld_ILI9341.c

    /*
    * This file is subject to the terms of the GFX License. If a copy of
    * the license was not distributed with this file, you can obtain one at:
    *
    * http://ugfx.org/license.html
    */

    #include "gfx.h"

    #if GFX_USE_GDISP

    #if defined(GDISP_SCREEN_HEIGHT)
    #warning "GDISP: This low level driver does not support setting a screen size. It is being ignored."
    #undef GISP_SCREEN_HEIGHT
    #endif
    #if defined(GDISP_SCREEN_WIDTH)
    #warning "GDISP: This low level driver does not support setting a screen size. It is being ignored."
    #undef GDISP_SCREEN_WIDTH
    #endif

    #define GDISP_DRIVER_VMT GDISPVMT_ILI9341
    #include "drivers/gdisp/ILI9341/gdisp_lld_config.h"
    #include "src/gdisp/gdisp_driver.h"

    #include "board_ILI9341.h"

    /*===========================================================================*/
    /* Driver local definitions. */
    /*===========================================================================*/

    #ifndef GDISP_SCREEN_HEIGHT
    #define GDISP_SCREEN_HEIGHT 320
    #endif
    #ifndef GDISP_SCREEN_WIDTH
    #define GDISP_SCREEN_WIDTH 240
    #endif
    #ifndef GDISP_INITIAL_CONTRAST
    #define GDISP_INITIAL_CONTRAST 50
    #endif
    #ifndef GDISP_INITIAL_BACKLIGHT
    #define GDISP_INITIAL_BACKLIGHT 100
    #endif

    #include "drivers/gdisp/ILI9341/ILI9341.h"

    /*===========================================================================*/
    /* Driver local functions. */
    /*===========================================================================*/

    // Some common routines and macros
    #define dummy_read(g) { volatile uint16_t dummy; dummy = read_data(g); (void) dummy; }
    #define write_reg(g, reg, data) { write_index(g, reg); write_data(g, data); }
    #define write_data16(g, data) { write_data(g, data >> 8); write_data(g, (uint8_t)data); }
    #define delay(us) gfxSleepMicroseconds(us)
    #define delayms(ms) gfxSleepMilliseconds(ms)

    static void set_viewport(GDisplay *g) {
    write_index(g, 0x2A);
    write_data(g, (g->p.x >> 8));
    write_data(g, (uint8_t) g->p.x);
    write_data(g, (g->p.x + g->p.cx - 1) >> 8);
    write_data(g, (uint8_t) (g->p.x + g->p.cx - 1));

    write_index(g, 0x2B);
    write_data(g, (g->p.y >> 8));
    write_data(g, (uint8_t) g->p.y);
    write_data(g, (g->p.y + g->p.cy - 1) >> 8);
    write_data(g, (uint8_t) (g->p.y + g->p.cy - 1));

    }

    /*===========================================================================*/
    /* Driver exported functions. */
    /*===========================================================================*/

    LLDSPEC bool_t gdisp_lld_init(GDisplay *g) {
    // No private area for this controller
    g->priv = 0;

    // Initialise the board interface
    g-> board = 0;
    init_board(g);


    // Hardware reset
    setpin_reset(g, TRUE);
    gfxSleepMilliseconds(20);
    setpin_reset(g, FALSE);
    gfxSleepMilliseconds(20);

    // Get the bus for the following initialisation commands
    acquire_bus(g);

    write_index(g, 0x01); //software reset
    gfxSleepMilliseconds(5);
    write_index(g, 0x28);
    // display off
    //---------------------------------------------------------
    // magic?
    write_index(g, 0xCF);
    write_data(g, 0x00);
    write_data(g, 0xC1);
    write_data(g, 0x30);

    write_index(g, 0xED);
    write_data(g, 0x64);
    write_data(g, 0x03);
    write_data(g, 0x12);
    write_data(g, 0x81);
    write_index(g, 0xE8);
    write_data(g, 0x85);
    write_data(g, 0x00);
    write_data(g, 0x78);
    write_index(g, 0xCB);
    write_data(g, 0x39);
    write_data(g, 0x2C);
    write_data(g, 0x00);
    write_data(g, 0x34);
    write_data(g, 0x02);
    write_index(g, 0xF7);
    write_data(g, 0x20);
    write_index(g, 0xEA);
    write_data(g, 0x00);
    write_data(g, 0x00);
    //------------power control------------------------------
    write_index(g, 0xC0); //power control
    write_data(g, 0x23);
    write_index(g, 0xC1); //power control
    write_data(g, 0x10);
    //--------------VCOM
    write_index(g, 0xC5); //vcom control
    write_data(g, 0x3e);//35
    write_data(g, 0x28);//3E
    write_index(g, 0xC7); //vcom control
    write_data(g, 0x86); // 0x94
    //------------memory access control------------------------
    write_index(g, 0x36);
    // memory access control
    write_data(g, 0x48); //0048 my,mx,mv,ml,BGR,mh,0.0
    write_index(g, 0x3A); // pixel format set
    write_data(g, 0x55);//16bit /pixel
    //----------------- frame rate------------------------------
    write_index(g, 0xB1);
    // frame rate
    write_data(g, 0x00);
    write_data(g, 0x18); //70
    //----------------Gamma---------------------------------
    write_index(g, 0xF2); // 3Gamma Function Disable
    write_data(g, 0x00);
    write_index(g, 0x26);
    write_data(g, 0x01); // gamma set 4 gamma curve 01/02/04/08

    write_index(g, 0xE0); //positive gamma correction
    write_data(g, 0x0F);
    write_data(g, 0x31);
    write_data(g, 0x2B);
    write_data(g, 0x0C);
    write_data(g, 0x0E);
    write_data(g, 0x08);
    write_data(g, 0x4E);
    write_data(g, 0xF1);
    write_data(g, 0x37);
    write_data(g, 0x07);
    write_data(g, 0x10);
    write_data(g, 0x03);
    write_data(g, 0x0E);
    write_data(g, 0x09);
    write_data(g, 0x00);
    write_index(g, 0xE1); //negamma correction
    write_data(g, 0x00);
    write_data(g, 0x0E);
    write_data(g, 0x14);
    write_data(g, 0x03);
    write_data(g, 0x11);
    write_data(g, 0x07);
    write_data(g, 0x31);
    write_data(g, 0xC1);
    write_data(g, 0x48);
    write_data(g, 0x08);
    write_data(g, 0x0F);
    write_data(g, 0x0C);
    write_data(g, 0x31);
    write_data(g, 0x36);
    write_data(g, 0x0F);
    //--------------ddram ---------------------
    write_index(g, 0x2A);
    // column set
    // size = 239
    write_data(g, 0x00);
    write_data(g, 0x00);
    write_data(g, 0x00);
    write_data(g, 0xEF);
    write_index(g, 0x2B);
    // page address set
    // size = 319
    write_data(g, 0x00);
    write_data(g, 0x00);
    write_data(g, 0x01);
    write_data(g, 0x3F);
    // write_index(g, 0x34);
    //write_index(g, 0x35);
    // tearing effect off
    // tearing effect on
    // write_index(g, 0xb4); // display inversion
    // write_data(g, 0x00);
    write_index(g, 0xb7); //entry mode set
    write_data(g, 0x07);
    //-----------------display---------------------
    write_index(g, 0xB6);
    // display function control
    write_data(g, 0x08);
    write_data(g, 0x82);
    write_data(g, 0x27);
    write_index(g, 0x11); //sleep out
    gfxSleepMilliseconds(100);
    write_index(g, 0x29); // display on
    write_index(g, 0x2c);

    // Finish Init
    post_init_board(g);

    // Release the bus
    release_bus(g);

    /* Turn on the back-light */
    set_backlight(g, GDISP_INITIAL_BACKLIGHT);

    /* Initialise the GDISP structure */
    g->g.Width = GDISP_SCREEN_WIDTH;
    g->g.Height = GDISP_SCREEN_HEIGHT;
    g->g.Orientation = GDISP_ROTATE_0;
    g->g.Powermode = powerOn;
    g->g.Backlight = GDISP_INITIAL_BACKLIGHT;
    g->g.Contrast = GDISP_INITIAL_CONTRAST;
    return TRUE;
    }

    #if GDISP_HARDWARE_STREAM_WRITE
    LLDSPEC void gdisp_lld_write_start(GDisplay *g) {
    acquire_bus(g);
    set_viewport(g);
    write_index(g, 0x2C);
    }
    LLDSPEC void gdisp_lld_write_color(GDisplay *g) {
    write_data16(g, gdispColor2Native(g->p.color));
    }
    LLDSPEC void gdisp_lld_write_stop(GDisplay *g) {
    release_bus(g);
    }
    #endif

    #if GDISP_HARDWARE_STREAM_READ
    LLDSPEC void gdisp_lld_read_start(GDisplay *g) {
    acquire_bus(g);
    set_viewport(g);
    write_index(g, 0x2E);
    setreadmode(g);
    dummy_read(g);
    }
    LLDSPEC color_t gdisp_lld_read_color(GDisplay *g) {
    uint16_t data;

    data = read_data(g);
    return gdispNative2Color(data);
    }
    LLDSPEC void gdisp_lld_read_stop(GDisplay *g) {
    setwritemode(g);
    release_bus(g);
    }
    #endif

    #if GDISP_NEED_CONTROL && GDISP_HARDWARE_CONTROL
    LLDSPEC void gdisp_lld_control(GDisplay *g) {
    switch(g->p.x) {
    case GDISP_CONTROL_POWER:
    if (g->g.Powermode == (powermode_t)g->p.ptr)
    return;
    switch((powermode_t)g->p.ptr) {
    case powerOff:
    case powerSleep:
    case powerDeepSleep:
    acquire_bus(g);
    write_reg(g, 0x0010, 0x0001); /* enter sleep mode */
    release_bus(g);
    break;
    case powerOn:
    acquire_bus(g);
    write_reg(g, 0x0010, 0x0000); /* leave sleep mode */
    release_bus(g);
    break;
    default:
    return;
    }
    g->g.Powermode = (powermode_t)g->p.ptr;
    return;

    case GDISP_CONTROL_ORIENTATION:
    if (g->g.Orientation == (orientation_t)g->p.ptr)
    return;
    switch((orientation_t)g->p.ptr) {
    case GDISP_ROTATE_0:
    acquire_bus(g);
    write_reg(g, 0x36, 0x48); /* X and Y axes non-inverted */
    release_bus(g);
    g->g.Height = GDISP_SCREEN_HEIGHT;
    g->g.Width = GDISP_SCREEN_WIDTH;
    break;
    case GDISP_ROTATE_90:
    acquire_bus(g);
    write_reg(g, 0x36, 0xE8); /* Invert X and Y axes */
    release_bus(g);
    g->g.Height = GDISP_SCREEN_WIDTH;
    g->g.Width = GDISP_SCREEN_HEIGHT;
    break;
    case GDISP_ROTATE_180:
    acquire_bus(g);
    write_reg(g, 0x36, 0x88); /* X and Y axes non-inverted */
    release_bus(g);
    g->g.Height = GDISP_SCREEN_HEIGHT;
    g->g.Width = GDISP_SCREEN_WIDTH;
    break;
    case GDISP_ROTATE_270:
    acquire_bus(g);
    write_reg(g, 0x36, 0x28); /* Invert X and Y axes */
    release_bus(g);
    g->g.Height = GDISP_SCREEN_WIDTH;
    g->g.Width = GDISP_SCREEN_HEIGHT;
    break;
    default:
    return;
    }
    g->g.Orientation = (orientation_t)g->p.ptr;
    return;

    case GDISP_CONTROL_BACKLIGHT:
    if ((unsigned)g->p.ptr > 100)
    g->p.ptr = (void *)100;
    set_backlight(g, (unsigned)g->p.ptr);
    g->g.Backlight = (unsigned)g->p.ptr;
    return;

    //case GDISP_CONTROL_CONTRAST:
    default:
    return;
    }
    }
    #endif

    #endif /* GFX_USE_GDISP */

    LCD.zip

  11. Hello All.

    I have started to play with a new LCD ILI9341 SPI on my stm32f103.

    I just cannot seam to get it to work I have connected to the correct pins as per the ILI9341 example in extras ..

    Is there some thing else I should be doing when using the SPI?

    My board_ILI9341.h

    #ifndef _GDISP_LLD_BOARD_H
    #define _GDISP_LLD_BOARD_H

    #define LCD_PORT GPIOB
    #define LCD_MOSI 15
    #define LCD_MISO 14
    #define LCD_SCK 13
    #define LCD_CS 12
    #define LCD_DC 11
    #define LCD_RES 10

    #define LCD_DC_CMD palClearPad(LCD_PORT, LCD_DC)
    #define LCD_DC_DATA palSetPad(LCD_PORT, LCD_DC)
    #define LCD_SCK_SET palSetPad(LCD_PORT, LCD_SCK)
    #define LCD_SCK_RES palClearPad(LCD_PORT, LCD_SCK)
    #define LCD_CS_RES palSetPad(LCD_PORT, LCD_CS)
    #define LCD_CS_SET palClearPad(LCD_PORT, LCD_CS)

    /**
    * SPI configuration structure.
    * Speed 12 MHz, CPHA=0, CPOL=0, 8bits frames, MSb transmitted first.
    * Soft slave select.
    */
    static const SPIConfig spi2cfg = {
    NULL,
    LCD_PORT,
    LCD_CS,
    (SPI_CR1_MSTR | SPI_CR1_SPE | SPI_CR1_SSM | SPI_CR1_SSI)
    };

    static void send_data(uint16_t data);

    /**
    * @brief Initialise the board for the display.
    *
    * @param[in] g The GDisplay structure
    *
    * @note Set the g->board member to whatever is appropriate. For multiple
    * displays this might be a pointer to the appropriate register set.
    *
    * @notapi
    */
    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;

    palSetPadMode(LCD_PORT, LCD_CS, PAL_MODE_OUTPUT_PUSHPULL);
    palSetPadMode(LCD_PORT, LCD_DC, PAL_MODE_OUTPUT_PUSHPULL);
    palSetPadMode(LCD_PORT, LCD_RES, PAL_MODE_OUTPUT_PUSHPULL);

    spiStart(&SPID2, &spi2cfg);
    spiSelectI(&SPID2);
    }

    /**
    * @brief After the initialisation.
    *
    * @param[in] g The GDisplay structure
    *
    * @notapi
    */
    static inline void post_init_board(GDisplay *g) {
    (void) g;
    }

    /**
    * @brief Set or clear the lcd reset pin.
    *
    * @param[in] g The GDisplay structure
    * @param[in] state TRUE = lcd in reset, FALSE = normal operation
    *
    * @notapi
    */
    static inline void setpin_reset(GDisplay *g, bool_t state) {
    (void) g;

    if (state = TRUE) {
    palClearPad(LCD_PORT, LCD_RES);
    } else {
    palSetPad(LCD_PORT, LCD_RES);
    }
    }

    /**
    * @brief Set the lcd back-light level.
    *
    * @param[in] g The GDisplay structure
    * @param[in] percent 0 to 100%
    *
    * @notapi
    */
    static inline void set_backlight(GDisplay *g, uint8_t percent) {
    (void) g;
    (void) percent;
    }

    /**
    * @brief Take exclusive control of the bus
    *
    * @param[in] g The GDisplay structure
    *
    * @notapi
    */
    static inline void acquire_bus(GDisplay *g) {
    (void) g;
    }

    /**
    * @brief Release exclusive control of the bus
    *
    * @param[in] g The GDisplay structure
    *
    * @notapi
    */
    static inline void release_bus(GDisplay *g) {
    (void) g;
    }

    /**
    * @brief Send data to the lcd.
    *
    * @param[in] data The data to send
    *
    * @notapi
    */
    static inline void send_data(uint16_t data) {
    // http://forum.easyelectronics.ru/viewtopic.php?p=262122#p262122
    while (!(SPI2->SR & SPI_SR_TXE)); // ��� ����� �� �������� ��������� - � ������ �� SPI_DR
    SPI2->DR = data; // ��������� � SPI_DR ��� �������

    }

    /**
    * @brief Send data to the index register.
    *
    * @param[in] g The GDisplay structure
    * @param[in] index The index register to set
    *
    * @notapi
    */
    static inline void write_index(GDisplay *g, uint16_t index) {
    (void) g;

    while (SPI2->SR & SPI_SR_BSY);
    LCD_CS_RES;
    LCD_DC_CMD; // ��������� ������� � ����� ������
    LCD_CS_SET;
    send_data(index);
    while (SPI2->SR & SPI_SR_BSY); // ���� ���� ���������� (==1) -- ������ SPI �����
    /* ������ ���� �������� ��������� �������� ������� ��������� � ���������� �����
    * ����� ������ ��� �������� �������� � ��������.
    */
    LCD_DC_DATA; // ��������� ������� � ����� ������
    }

    /**
    * @brief Send data to the lcd with DC control.
    *
    * @param[in] g The GDisplay structure
    * @param[in] data The data to send
    *
    * @notapi
    */
    static inline void write_data(GDisplay *g, uint16_t data) {
    (void) g;

    send_data(data);
    }

    /**
    * @brief Set the bus in read mode
    *
    * @param[in] g The GDisplay structure
    *
    * @notapi
    */
    static inline void setreadmode(GDisplay *g) {
    (void) g;
    }

    /**
    * @brief Set the bus back into write mode
    *
    * @param[in] g The GDisplay structure
    *
    * @notapi
    */
    static inline void setwritemode(GDisplay *g) {
    (void) g;
    }

    /**
    * @brief Read data from the lcd.
    * @return The data from the lcd
    *
    * @param[in] g The GDisplay structure
    *
    * @notapi
    */
    static inline uint16_t read_data(GDisplay *g) {
    (void) g;
    return 0;
    }

    #endif /* _GDISP_LLD_BOARD_H */

    My main.c

    #include "ch.h"
    #include "hal.h"
    #include "gfx.h"
    #include "board_ILI9341.h"

    int main(void) {
    coord_t width, height;

    halInit();
    chSysInit();
    gfxInit();

    // Get the screen size
    width = gdispGetWidth();
    height = gdispGetHeight();

    // Code Here
    gdispFillArc(width/2, height/2, width/4, -10, -45, White);
    gdispDrawCircle(width/2+width/8, height/2-height/8, 13, Green);
    gdispFillCircle (width/2+width/8, height/2-height/8, 10, Red);
    gdispDrawArc(width/2+width/8, height/2-height/8, 20, 25, 115, Gray);
    gdispFillEllipse (width-width/6, height-height/6, width/8, height/16, Blue);
    gdispDrawEllipse (width-width/6, height-height/6, width/16, height/8, Yellow);

    while(TRUE) {
    gfxSleepMilliseconds(500);
    }
    }

  12. Yes the backlight is working.

    White screen with no noise.

    So I tested the pins with a scope and pressed reset on each pin test.

    DB08 8 /NOTHING

    DB09 9 /NOTHING

    DB10 10 /NOTHING

    DB11 11 /NOTHING

    DB12 12 /NOTHING

    DB13 13 /NOTHING

    DB14 14 /NOTHING

    DB15 15 /NOTHING

    DB00 0 /NOTHING

    DB01 1 /NOTHING

    DB02 2 /NOTHING

    DB03 3 /NOTHING

    DB04 4 /NOTHING

    DB05 5 /NOTHING

    DB06 6 /NOTHING

    DB07 7 /NOTHING

    CS 8 /3 PULSE'S ON RESET

    RS 9 /NOTHING

    WR 10 /3 BURST'S OF PULSE'S

    RD 11 /NOTHING

    Thanks

  13. Ok I tryed your borad_ILI9325.h and now i get these errors

    'busC' undeclared (first use in this function) board_ILI9325.h

    'busB' undeclared (first use in this function) board_ILI9325.h

    'index' undeclared (first use in this function) board_ILI9325.h

    a label can only be part of a statement and a declaration is not a statement board_ILI9325.h line 31

    expected expression before 'IOBus' board_ILI9325.h line 32

×
×
  • Create New...