Page 1 of 1
STM32F4 Initialization
Posted: Tue Nov 12, 2013 12:47 pm
by ucasano
Hi, I just upgraded my previous project from Chibi 2.5 to 2.6.1.
I upgraded the board files also, with the new definition for using SPI2 peripherals on PB12-13-14-15; but when I run the demo, SPI2 does not work.
If I do pin configuration in demo software (main.c) SPI2 works fine, so question is: why board file configuration is not working?
thanks.
-g
Re: STM32F4 Initialization
Posted: Tue Nov 12, 2013 1:29 pm
by Giovanni
Which board? all the board files I see have those pins undefined or assigned to OTG HS.
Giovanni
Re: STM32F4 Initialization
Posted: Tue Nov 12, 2013 3:16 pm
by ucasano
Oh, well... it's a custom made board

It's a design of mine

which runs ChibiOS successfull since release 2.4.2
-g
PS. this is part of my board.h, which defines SPI2 pins:
Code: Select all
#define VAL_GPIOB_MODER (PIN_MODE_OUTPUT(GPIOB_LED2) | \
PIN_MODE_OUTPUT(GPIOB_LED1) | \
PIN_MODE_INPUT(GPIOB_PWR_IND) | \
PIN_MODE_ALTERNATE(GPIOB_I2S3_SCLK) | \
PIN_MODE_OUTPUT(GPIOB_OSC_EN) | \
PIN_MODE_INPUT(GPIOB_I2S3_SDAT) | \
PIN_MODE_ALTERNATE(GPIOB_I2C1_SCL) | \
PIN_MODE_ALTERNATE(GPIOB_I2C1_SDA) | \
PIN_MODE_ALTERNATE(GPIOB_SDIO_D4) | \
PIN_MODE_ALTERNATE(GPIOB_SDIO_D5) | \
PIN_MODE_OUTPUT(GPIOB_EMMC_RST) | \
PIN_MODE_INPUT(GPIOB_SPI2_INT) | \
PIN_MODE_ALTERNATE(GPIOB_SPI2_NSS) | \
PIN_MODE_ALTERNATE(GPIOB_SPI2_SCK) | \
PIN_MODE_ALTERNATE(GPIOB_SPI2_MISO) | \
PIN_MODE_ALTERNATE(GPIOB_SPI2_MOSI))
#define VAL_GPIOB_OTYPER (PIN_OTYPE_PUSHPULL(GPIOB_LED2) | \
PIN_OTYPE_PUSHPULL(GPIOB_LED1) | \
PIN_OTYPE_PUSHPULL(GPIOB_PWR_IND) | \
PIN_OTYPE_PUSHPULL(GPIOB_I2S3_SCLK) | \
PIN_OTYPE_PUSHPULL(GPIOB_OSC_EN) | \
PIN_OTYPE_PUSHPULL(GPIOB_I2S3_SDAT) | \
PIN_OTYPE_OPENDRAIN(GPIOB_I2C1_SCL) | \
PIN_OTYPE_OPENDRAIN(GPIOB_I2C1_SDA) | \
PIN_OTYPE_PUSHPULL(GPIOB_SDIO_D4) | \
PIN_OTYPE_PUSHPULL(GPIOB_SDIO_D5) | \
PIN_OTYPE_PUSHPULL(GPIOB_EMMC_RST) | \
PIN_OTYPE_PUSHPULL(GPIOB_SPI2_INT) | \
PIN_OTYPE_PUSHPULL(GPIOB_SPI2_NSS) | \
PIN_OTYPE_PUSHPULL(GPIOB_SPI2_SCK) | \
PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MISO) | \
PIN_OTYPE_PUSHPULL(GPIOB_SPI2_MOSI))
#define VAL_GPIOB_OSPEEDR (PIN_OSPEED_100M(GPIOB_LED2) | \
PIN_OSPEED_100M(GPIOB_LED1) | \
PIN_OSPEED_2M(GPIOB_PWR_IND) | \
PIN_OSPEED_100M(GPIOB_I2S3_SCLK) | \
PIN_OSPEED_100M(GPIOB_OSC_EN) | \
PIN_OSPEED_100M(GPIOB_I2S3_SDAT) | \
PIN_OSPEED_100M(GPIOB_I2C1_SCL) | \
PIN_OSPEED_100M(GPIOB_I2C1_SDA) | \
PIN_OSPEED_100M(GPIOB_SDIO_D4) | \
PIN_OSPEED_100M(GPIOB_SDIO_D5) | \
PIN_OSPEED_100M(GPIOB_EMMC_RST) | \
PIN_OSPEED_2M(GPIOB_SPI2_INT) | \
PIN_OSPEED_100M(GPIOB_SPI2_NSS) | \
PIN_OSPEED_100M(GPIOB_SPI2_SCK) | \
PIN_OSPEED_100M(GPIOB_SPI2_MISO) | \
PIN_OSPEED_100M(GPIOB_SPI2_MOSI))
#define VAL_GPIOB_PUPDR (PIN_PUPDR_FLOATING(GPIOB_LED2) | \
PIN_PUPDR_FLOATING(GPIOB_LED1) | \
PIN_PUPDR_PULLUP(GPIOB_PWR_IND) | \
PIN_PUPDR_FLOATING(GPIOB_I2S3_SCLK) | \
PIN_PUPDR_FLOATING(GPIOB_OSC_EN) | \
PIN_PUPDR_FLOATING(GPIOB_I2S3_SDAT) | \
PIN_PUPDR_FLOATING(GPIOB_I2C1_SCL) | \
PIN_PUPDR_FLOATING(GPIOB_I2C1_SDA) | \
PIN_PUPDR_FLOATING(GPIOB_SDIO_D4) | \
PIN_PUPDR_FLOATING(GPIOB_SDIO_D5) | \
PIN_PUPDR_FLOATING(GPIOB_EMMC_RST) | \
PIN_PUPDR_PULLUP(GPIOB_SPI2_INT) | \
PIN_PUPDR_FLOATING(GPIOB_SPI2_NSS) | \
PIN_PUPDR_FLOATING(GPIOB_SPI2_SCK) | \
PIN_PUPDR_FLOATING(GPIOB_SPI2_MISO) | \
PIN_PUPDR_FLOATING(GPIOB_SPI2_MOSI))
#define VAL_GPIOB_ODR (PIN_ODR_HIGH(GPIOB_LED2) | \
PIN_ODR_HIGH(GPIOB_LED1) | \
PIN_ODR_HIGH(GPIOB_PWR_IND) | \
PIN_ODR_HIGH(GPIOB_I2S3_SCLK) | \
PIN_ODR_HIGH(GPIOB_OSC_EN) | \
PIN_ODR_HIGH(GPIOB_I2S3_SDAT) | \
PIN_ODR_HIGH(GPIOB_I2C1_SCL) | \
PIN_ODR_HIGH(GPIOB_I2C1_SDA) | \
PIN_ODR_HIGH(GPIOB_SDIO_D4) | \
PIN_ODR_HIGH(GPIOB_SDIO_D5) | \
PIN_ODR_HIGH(GPIOB_EMMC_RST) | \
PIN_ODR_HIGH(GPIOB_SPI2_INT) | \
PIN_ODR_HIGH(GPIOB_SPI2_NSS) | \
PIN_ODR_HIGH(GPIOB_SPI2_SCK) | \
PIN_ODR_HIGH(GPIOB_SPI2_MISO) | \
PIN_ODR_HIGH(GPIOB_SPI2_MOSI))
#define VAL_GPIOB_AFRL (PIN_AFIO_AF(GPIOB_LED2, 0) | \
PIN_AFIO_AF(GPIOB_LED1, 0) | \
PIN_AFIO_AF(GPIOB_PWR_IND, 0) | \
PIN_AFIO_AF(GPIOB_I2S3_SCLK, 6) | \
PIN_AFIO_AF(GPIOB_OSC_EN, 0) | \
PIN_AFIO_AF(GPIOB_I2S3_SDAT, 6) | \
PIN_AFIO_AF(GPIOB_I2C1_SCL, 4) | \
PIN_AFIO_AF(GPIOB_I2C1_SDA, 4))
#define VAL_GPIOB_AFRH (PIN_AFIO_AF(GPIOB_SDIO_D4, 12) | \
PIN_AFIO_AF(GPIOB_SDIO_D5, 12) | \
PIN_AFIO_AF(GPIOB_EMMC_RST, 0) | \
PIN_AFIO_AF(GPIOB_SPI2_INT, 0) | \
PIN_AFIO_AF(GPIOB_SPI2_NSS, 5) | \
PIN_AFIO_AF(GPIOB_SPI2_SCK, 5) | \
PIN_AFIO_AF(GPIOB_SPI2_MISO, 5) | \
PIN_AFIO_AF(GPIOB_SPI2_MOSI, 5))
Re: STM32F4 Initialization
Posted: Tue Nov 12, 2013 4:05 pm
by Giovanni
This is strange because board files do not depend on anything external. Not sure abut what the problem could be, you should verify if the GPIO registers are initialized correctly.
Giovanni
Re: STM32F4 Initialization
Posted: Tue Nov 12, 2013 6:18 pm
by ucasano
I forget to tell you I run another application (bootloader) just before the main app.
But the board configuration files are always the same.
-g
Re: STM32F4 Initialization
Posted: Sun Nov 17, 2013 12:15 pm
by ucasano
I do initialize SPI device in a separate process: could this be the problem of incorrect initialization of spi pins?
-g
Re: STM32F4 Initialization
Posted: Sun Nov 17, 2013 1:56 pm
by Giovanni
The SPI driver does not initialize pins so it should not matter.
Giovanni