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
STM32F4 Initialization
Moderator: RoccoMarco
- Giovanni
- Site Admin
- Posts: 14892
- Joined: Wed May 27, 2009 8:48 am
- Has thanked: 1202 times
- Been thanked: 996 times
Re: STM32F4 Initialization
Which board? all the board files I see have those pins undefined or assigned to OTG HS.
Giovanni
Giovanni
Re: STM32F4 Initialization
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:
-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))
- Giovanni
- Site Admin
- Posts: 14892
- Joined: Wed May 27, 2009 8:48 am
- Has thanked: 1202 times
- Been thanked: 996 times
Re: STM32F4 Initialization
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
Giovanni
Re: STM32F4 Initialization
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
But the board configuration files are always the same.
-g
Re: STM32F4 Initialization
I do initialize SPI device in a separate process: could this be the problem of incorrect initialization of spi pins?
-g
-g
- Giovanni
- Site Admin
- Posts: 14892
- Joined: Wed May 27, 2009 8:48 am
- Has thanked: 1202 times
- Been thanked: 996 times