Skip to content

Commit 5a2f820

Browse files
committed
Implement SPI flash settings, bugfix for SPI pin assignment
1 parent d6e987e commit 5a2f820

5 files changed

Lines changed: 22 additions & 14 deletions

File tree

ports/stm32f4/boards/feather_f405/mpconfigboard.h

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,4 +34,10 @@
3434
#define FLASH_PAGE_SIZE (0x4000)
3535

3636
#define AUTORESET_DELAY_MS 500
37-
#define BOARD_FLASH_SIZE (FLASH_SIZE - 0x4000)
37+
#define BOARD_FLASH_SIZE (FLASH_SIZE - 0x4000)
38+
39+
// On-board flash
40+
#define SPI_FLASH_MOSI_PIN &pin_PB05
41+
#define SPI_FLASH_MISO_PIN &pin_PB04
42+
#define SPI_FLASH_SCK_PIN &pin_PB03
43+
#define SPI_FLASH_CS_PIN &pin_PA15

ports/stm32f4/boards/feather_f405/mpconfigboard.mk

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@ USB_PRODUCT = "Feather F405"
44
USB_MANUFACTURER = "Adafruit Industries LLC"
55
USB_DEVICES = "CDC,MSC"
66

7-
INTERNAL_FLASH_FILESYSTEM = 1
8-
LONGINT_IMPL = NONE
7+
SPI_FLASH_FILESYSTEM = 1
8+
EXTERNAL_FLASH_DEVICE_COUNT = 1
9+
EXTERNAL_FLASH_DEVICES = GD25Q16C
10+
LONGINT_IMPL = MPZ
911

1012
MCU_SERIES = m4
1113
MCU_VARIANT = stm32f4

ports/stm32f4/common-hal/busio/SPI.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -107,7 +107,7 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
107107
continue;
108108
}
109109
//store pins if not
110-
self->sck = &mcu_spi_sck_list[j];
110+
self->sck = &mcu_spi_sck_list[i];
111111
self->mosi = &mcu_spi_mosi_list[j];
112112
self->miso = &mcu_spi_miso_list[k];
113113
break;
@@ -196,7 +196,7 @@ void common_hal_busio_spi_construct(busio_spi_obj_t *self,
196196
self->handle.Init.CLKPolarity = SPI_POLARITY_LOW;
197197
self->handle.Init.CLKPhase = SPI_PHASE_1EDGE;
198198
self->handle.Init.NSS = SPI_NSS_SOFT;
199-
self->handle.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_16;
199+
self->handle.Init.BaudRatePrescaler = SPI_BAUDRATEPRESCALER_256;
200200
self->handle.Init.FirstBit = SPI_FIRSTBIT_MSB;
201201
self->handle.Init.TIMode = SPI_TIMODE_DISABLE;
202202
self->handle.Init.CRCCalculation = SPI_CRCCALCULATION_DISABLE;
@@ -383,20 +383,20 @@ void common_hal_busio_spi_unlock(busio_spi_obj_t *self) {
383383

384384
bool common_hal_busio_spi_write(busio_spi_obj_t *self,
385385
const uint8_t *data, size_t len) {
386-
HAL_StatusTypeDef result = HAL_SPI_Transmit (&self->handle, (uint8_t *)data, (uint16_t)len, 2);
386+
HAL_StatusTypeDef result = HAL_SPI_Transmit (&self->handle, (uint8_t *)data, (uint16_t)len, 5);
387387
return result == HAL_OK ? 1 : 0;
388388
}
389389

390390
bool common_hal_busio_spi_read(busio_spi_obj_t *self,
391391
uint8_t *data, size_t len, uint8_t write_value) {
392-
HAL_StatusTypeDef result = HAL_SPI_Receive (&self->handle, data, (uint16_t)len, 2);
392+
HAL_StatusTypeDef result = HAL_SPI_Receive (&self->handle, data, (uint16_t)len, 5);
393393
return result == HAL_OK ? 1 : 0;
394394
}
395395

396396
bool common_hal_busio_spi_transfer(busio_spi_obj_t *self,
397397
uint8_t *data_out, uint8_t *data_in, size_t len) {
398398
HAL_StatusTypeDef result = HAL_SPI_TransmitReceive (&self->handle,
399-
data_out, data_in, (uint16_t)len,2);
399+
data_out, data_in, (uint16_t)len,5);
400400
return result == HAL_OK ? 1 : 0;
401401
}
402402

ports/stm32f4/peripherals/stm32f4/stm32f405xx/gpio.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -40,9 +40,9 @@ void stm32f4_peripherals_gpio_init(void) {
4040
never_reset_pin_number(2,15); //PC15 OSC32_OUT
4141
never_reset_pin_number(0,13); //PA13 SWDIO
4242
never_reset_pin_number(0,14); //PA14 SWCLK
43-
never_reset_pin_number(0,15); //PA15 JTDI
44-
never_reset_pin_number(1,3); //PB3 JTDO
45-
never_reset_pin_number(1,4); //PB4 JTRST
43+
// never_reset_pin_number(0,15); //PA15 JTDI
44+
// never_reset_pin_number(1,3); //PB3 JTDO
45+
// never_reset_pin_number(1,4); //PB4 JTRST
4646

4747
// Port H is not included in GPIO port array
4848
// never_reset_pin_number(5,0); //PH0 JTDO

ports/stm32f4/peripherals/stm32f4/stm32f412zx/gpio.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -215,9 +215,9 @@ void stm32f4_peripherals_gpio_init(void) {
215215
never_reset_pin_number(2,15); //PC15 OSC32_OUT
216216
never_reset_pin_number(0,13); //PA13 SWDIO
217217
never_reset_pin_number(0,14); //PA14 SWCLK
218-
never_reset_pin_number(0,15); //PA15 JTDI
219-
never_reset_pin_number(1,3); //PB3 JTDO
220-
never_reset_pin_number(1,4); //PB4 JTRST
218+
//never_reset_pin_number(0,15); //PA15 JTDI
219+
//never_reset_pin_number(1,3); //PB3 JTDO
220+
//never_reset_pin_number(1,4); //PB4 JTRST
221221

222222
// Port H is not included in GPIO port array
223223
// never_reset_pin_number(5,0); //PH0 JTDO

0 commit comments

Comments
 (0)