Skip to content

nrf: hang in nrfx_spim_xfer #2426

@jepler

Description

@jepler

I ran the following code:

import board
import busio
import digitalio
import time

b = busio.SPI(board.SCK, MOSI=board.MOSI)
stb = digitalio.DigitalInOut(board.D5)

stb.switch_to_output(True)
d = bytearray(4)
d[0] = d[1] = d[2] = d[3] = 0xff
b.try_lock()
b.write(d)

and it hangs during write. The last few frames of the traceback are:

Program received signal SIGTRAP, Trace/breakpoint trap.
nrfx_spim_xfer (p_instance=0x200044a0 <spim_peripherals>, p_xfer_desc=0x2003fd28, flags=0)
    at nrfx/drivers/src/nrfx_spim.c:581
581            while (!nrf_spim_event_check(p_spim, NRF_SPIM_EVENT_END)){}
(gdb) where
#0  nrfx_spim_xfer (p_instance=0x200044a0 <spim_peripherals>, p_xfer_desc=0x2003fd28, flags=0)
    at nrfx/drivers/src/nrfx_spim.c:581
#1  0x00055d6e in common_hal_busio_spi_write (self=self@entry=0x20008680, data=0x200086d0 "\377\377\377\377", 
    len=<optimized out>) at common-hal/busio/SPI.c:249

it's not clear what is stopping the SPI transaction from finishing, I didn't get very far in troubleshooting. Could it be an out-only SPI problem, or did we introduce a problem for SPI generally on nRF?

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions