Skip to content

Commit 066c07b

Browse files
committed
STM32 SPI : Pull Down for output line
1 parent 8bd27ca commit 066c07b

File tree

1 file changed

+16
-10
lines changed

1 file changed

+16
-10
lines changed

targets/TARGET_STM/stm_spi_api.c

Lines changed: 16 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -318,13 +318,14 @@ static void _spi_init_direct(spi_t *obj, const spi_pinmap_t *pinmap)
318318

319319
// Configure the SPI pins
320320
pin_function(pinmap->mosi_pin, pinmap->mosi_function);
321-
pin_mode(pinmap->mosi_pin, PullNone);
321+
pin_mode(pinmap->mosi_pin, PullDown); // Pull Down is set for output line
322322

323323
pin_function(pinmap->miso_pin, pinmap->miso_function);
324324
pin_mode(pinmap->miso_pin, PullNone);
325325

326326
pin_function(pinmap->sclk_pin, pinmap->sclk_function);
327327
pin_mode(pinmap->sclk_pin, PullNone);
328+
328329
spiobj->pin_miso = pinmap->miso_pin;
329330
spiobj->pin_mosi = pinmap->mosi_pin;
330331
spiobj->pin_sclk = pinmap->sclk_pin;
@@ -667,16 +668,21 @@ void spi_format(spi_t *obj, int bits, int mode, int slave)
667668
handle->Init.NSS = (slave) ? SPI_NSS_HARD_INPUT : SPI_NSS_HARD_OUTPUT;
668669
}
669670

670-
handle->Init.Mode = (slave) ? SPI_MODE_SLAVE : SPI_MODE_MASTER;
671+
if (slave) {
672+
handle->Init.Mode = SPI_MODE_SLAVE;
671673

672-
if (slave && (handle->Init.Direction == SPI_DIRECTION_1LINE)) {
673-
/* SPI slave implemtation in MBED does not support the 3 wires SPI.
674-
* (e.g. when MISO is not connected). So we're forcing slave in
675-
* 2LINES mode. As MISO is not connected, slave will only read
676-
* from master, and cannot write to it. Inform user.
677-
*/
678-
debug("3 wires SPI slave not supported - slave will only read\r\n");
679-
handle->Init.Direction = SPI_DIRECTION_2LINES;
674+
if (handle->Init.Direction == SPI_DIRECTION_1LINE) {
675+
/* SPI slave implemtation in MBED does not support the 3 wires SPI.
676+
* (e.g. when MISO is not connected). So we're forcing slave in
677+
* 2LINES mode. As MISO is not connected, slave will only read
678+
* from master, and cannot write to it. Inform user.
679+
*/
680+
debug("3 wires SPI slave not supported - slave will only read\r\n");
681+
handle->Init.Direction = SPI_DIRECTION_2LINES;
682+
}
683+
684+
pin_mode(spiobj->pin_mosi, PullNone);
685+
pin_mode(spiobj->pin_miso, PullDown); // Pull Down is set for output line
680686
}
681687

682688
/*

0 commit comments

Comments
 (0)