Skip to content

Commit a0b420f

Browse files
Fix incorrect spi active logic, add assert to catch timing issue
1 parent e6b6bba commit a0b420f

File tree

2 files changed

+3
-1
lines changed

2 files changed

+3
-1
lines changed

drivers/source/SPI.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -427,7 +427,7 @@ void SPI::abort_all_transfers()
427427

428428
int SPI::set_dma_usage(DMAUsage usage)
429429
{
430-
if (spi_active(&_peripheral->spi)) {
430+
if (_peripheral->initialized && spi_active(&_peripheral->spi)) {
431431
return -1;
432432
}
433433
_usage = usage;

targets/TARGET_NUVOTON/TARGET_M480/spi_api.c

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1004,6 +1004,7 @@ static void spi_dma_handler_tx(uint32_t id, uint32_t event_dma)
10041004
MBED_ASSERT(modinit->modname == (int) obj->spi.spi);
10051005

10061006
void (*vec)(void) = (void (*)(void)) NVIC_GetVector(modinit->irq_n);
1007+
MBED_ASSERT(vec != NULL);
10071008
vec();
10081009
}
10091010

@@ -1027,6 +1028,7 @@ static void spi_dma_handler_rx(uint32_t id, uint32_t event_dma)
10271028
MBED_ASSERT(modinit->modname == (int) obj->spi.spi);
10281029

10291030
void (*vec)(void) = (void (*)(void)) NVIC_GetVector(modinit->irq_n);
1031+
MBED_ASSERT(vec != NULL);
10301032
vec();
10311033
}
10321034

0 commit comments

Comments
 (0)