david1982
-
Posts
29 -
Joined
-
Last visited
Content Type
Forums
Store
Downloads
Blogs
Posts posted by david1982
-
-
Sorry my mistake I am using board_ILI9325 I just mislabeled it in the post.
The above board.h file is one I have modified to suit my board I just used the "Olimex STM32-LCD" board file as a base as it compiled/worked with the blinking led example.
Also rccEnableAHB(RCC_AHBENR_FSMCEN, 0); in the driver file causes a error..
'RCC_AHBENR_FSMCEN' undeclared (first use in this function)
Below are some pics and the board schematic.
Images..
https://drive.google.com/file/d/0B_B2fQCYwJRiRkJFdGNLUHcySWs/view?usp=sharing
https://drive.google.com/file/d/0B_B2fQCYwJRibWhkWVRZTEk4eGM/view?usp=sharing
-
Hello All,
I am trying to get my LCD to work but my data is sent via GPIOC 0...7 and GPIOB 8...15 and for the life of me I cannot get it to work.
All I am trying to do is get the gdisp circle demo going..
Below are my board file and driver file..
Please just a kick in the right direction would be appreciated.
board.h
#ifndef _BOARD_H_
#define _BOARD_H_
/*
* Setup for the ST INEMO-M1 Discovery board.
*/
/*
* Board identifier.
*/
#define BOARD_OLIMEX_STM32_LCD
#define BOARD_NAME "Olimex STM32-LCD"
/*
* Board frequencies.
*/
#define STM32_LSECLK 32768
#define STM32_HSECLK 8000000
/*
* MCU type, supported types are defined in ./os/hal/platforms/hal_lld.h.
*/
#define STM32F10X_MD
/*
* IO pins assignments.
*/
#define GPIOA_KEY1 0
#define GPIOA_KEY2 1
#define GPIOA_LED1 2
#define GPIOA_LED2 3
#define GPIOA_SPI1_NSS 4
#define GPIOA_SPI1_SCK 5
#define GPIOA_SPI1_MISO 6
#define GPIOA_SPI1_MOSI 7
#define GPIOA_PA8 8 /* FREE PA8/USART1_CK/TIM1_CH1/MCO */
#define GPIOA_USART1_TX 9
#define GPIOA_USART1_RX 10
#define GPIOA_PA11 11
#define GPIOA_PA12 12
#define GPIOA_SWDIO 13
#define GPIOA_SWCLK 14
#define GPIOA_PA15 15
#define GPIOB_PB0 0 /* VR */
#define GPIOB_PB1 1 /* FREE PB1/ADC12_IN9/TIM2_CH4/TIM1_CH3N */
#define GPIOB_PB2 2 /* BOOT */
#define GPIOB_PB3 3 /* JTAG JTDO */
#define GPIOB_PB4 4 /* JTAG JNTRST */
#define GPIOB_LE 5
#define GPIOB_F_CS 6
#define GPIOB_SD_CS 7
#define GPIOB_DB08 8
#define GPIOB_DB09 9
#define GPIOB_DB10 10
#define GPIOB_DB11 11
#define GPIOB_DB12 12
#define GPIOB_DB13 13
#define GPIOB_DB14 14
#define GPIOB_DB15 15
#define GPIOC_DB00 0
#define GPIOC_DB01 1
#define GPIOC_DB02 2
#define GPIOC_DB03 3
#define GPIOC_DB04 4
#define GPIOC_DB05 5
#define GPIOC_DB06 6
#define GPIOC_DB07 7
#define GPIOC_CS 8
#define GPIOC_RS 9
#define GPIOC_WR 10
#define GPIOC_RD 11
#define GPIOC_BL_EN 12
#define GPIOC_TP_INT 13
#define GPIOC_PC14 14
#define GPIOC_PC15 15
#define GPIOD_OSC_IN 0
#define GPIOD_OSC_OUT 1
#define GPIOD_PD2 2
/*
* I/O ports initial setup, this configuration is established soon after reset
* in the initialization code.
*
* The digits have the following meaning:
* 0 - Analog input.
* 1 - Push Pull output 10MHz.
* 2 - Push Pull output 2MHz.
* 3 - Push Pull output 50MHz.
* 4 - Digital input.
* 5 - Open Drain output 10MHz.
* 6 - Open Drain output 2MHz.
* 7 - Open Drain output 50MHz.
* 8 - Digital input with PullUp or PullDown resistor depending on ODR.
* 9 - Alternate Push Pull output 10MHz.
* A - Alternate Push Pull output 2MHz.
* B - Alternate Push Pull output 50MHz.
* C - Reserved.
* D - Alternate Open Drain output 10MHz.
* E - Alternate Open Drain output 2MHz.
* F - Alternate Open Drain output 50MHz.
* Please refer to the STM32 Reference Manual for details.
*/
#define VAL_GPIOACRL 0x88384B88 /* PA7...PA0 */
#define VAL_GPIOACRH 0x88888883 /* PA15...PA8 */
#define VAL_GPIOAODR 0xFFFFBFDF
/*
* Port B setup.
* Everything input with pull-up except:
* PB3 - Pull-up input (GPIOA_SWO).
*/
#define VAL_GPIOBCRL 0x88388888 /* PB7...PB0 */
#define VAL_GPIOBCRH 0xBBBBBBBB /* PB15...PB8 */
#define VAL_GPIOBODR 0xFFFFFFFF
/*
* Port C setup.
* Everything input with pull-up except:
* PC13 - Normal input (GPIOC_BUTTON).
*/
#define VAL_GPIOCCRL 0xBBBBBBBB /* PC7...PC0 */
#define VAL_GPIOCCRH 0x8847BBBB /* PC15...PC8 */
#define VAL_GPIOCODR 0xFFFFFFFF
/*
* Port D setup.
* Everything input with pull-up except:
* PD0 - Normal input (GPIOD_OSC_IN).
* PD1 - Normal input (GPIOD_OSC_OUT).
*/
#define VAL_GPIODCRL 0x88888844 /* PD7...PD0 */
#define VAL_GPIODCRH 0x88888888 /* PD15...PD8 */
#define VAL_GPIODODR 0xFFFFFFFF
/*
* Port E setup.
* Everything input with pull-up except:
*/
#define VAL_GPIOECRL 0x88888888 /* PE7...PE0 */
#define VAL_GPIOECRH 0x88888888 /* PE15...PE8 */
#define VAL_GPIOEODR 0xFFFFFFFF
/*
* USB bus activation macro, required by the USB driver.
*/
#define usb_lld_connect_bus(usbp)
/*
* USB bus de-activation macro, required by the USB driver.
*/
#define usb_lld_disconnect_bus(usbp)
#if !defined(_FROM_ASM_)
#ifdef __cplusplus
extern "C" {
#endif
void boardInit(void);
#ifdef __cplusplus
}
#endif
#endif /* _FROM_ASM_ */
#endif /* _BOARD_H_ */board_ILI9325.h
#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.
#define GDISP_REG (*((volatile uint16_t *) 0x60000000)) /* RS = 0 */
#define GDISP_RAM (*((volatile uint16_t *) 0x60020000)) /* RS = 1 */
static inline void init_board(GDisplay *g) {
(void) 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
/* FSMC setup for F1 */
//rccEnableAHB(RCC_AHBENR_FSMCEN, 0);
/* set pin modes */
IOBus busC = {GPIOC, (1 << 0) | (1 << 1) | (1 << 4) | (1 << 5) | (1 << 7), 0};
IOBus busB = {GPIOB, (1 << 8) | (1 << 9) | (1 << 10) | (1 << 11) | (1 << 12) | (1 << 13) | (1 << 14) | (1 << 15), 0};
palSetBusMode(&busC, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
palSetBusMode(&busB, PAL_MODE_STM32_ALTERNATE_PUSHPULL);
//palSetPadMode(GPIOC, GPIOC_TFT_RST, PAL_MODE_OUTPUT_PUSHPULL);
palSetPadMode(GPIOC, GPIOC_BL_EN, PAL_MODE_OUTPUT_PUSHPULL);
const unsigned char FSMC_Bank = 0;
/* FSMC timing */
FSMC_Bank1->BTCR[FSMC_Bank+1] = (9) | (10 << 7) | (10 << 15);
/* Bank1 NOR/SRAM control register configuration
* This is actually not needed as already set by default after reset */
FSMC_Bank1->BTCR[FSMC_Bank] = FSMC_BCR1_MWID_0 | FSMC_BCR1_WREN | 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;
}
static inline void set_backlight(GDisplay *g, uint8_t percent) {
(void) g;
(void)percent;
}
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;
}
#endif /* GDISP_LLD_BOARD_H */ -
Hey tobib,
I believe you have the exactly the same board as me.
Did you get it all working in the end?
If so is it possible for you to send me a little demo to get me started?
I would really appreciate it.
Thank You.
Help with ili9325 and stm32f1
in Support
Posted
The connection diagram is in the zip attachment. The LCD connector is in the bottom left.
And the board_ILI9325.h file that I am using is the second pice of code in my first post (the one I miss labeled).
I did not think SPI required so many data pins?.
Thank you for your help.