This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Can't transmit single byte over SPIM with DMA

Hi,

We are trying to transmit a single byte over SPIM using easyDMA but our logic analyzer shows that 16 bits are being clocked out. The first 8 are our message and the second 8 are unknown (possibly the over-read char?). This can be reproduced with the spi_master example in the nrf52 0.9.1 SDK by enabling DMA and configuring 1 byte transmissions:


spi_master/main.c

Replace line 42 with: #define TX_RX_MSG_LENGTH 1

spi_master/config/spi_master_pca10036/nrf_drv_config.h

Replace line 128 with: #define SPI0_USE_EASY_DMA 1

Replace line 138 with: #define SPI1_ENABLE 0

patchfile: spi_master.patch


The project will now attempt to send the byte 0x00 over spi with easyDMA.

Logic trace of what we are seeing.: SPIM_EasyDMA_1Byte_Tx.logicdata image description

Any Idea what is happening here and how we might be able to send 1 byte over SPI & DMA without the 8 extra clock cycles?

Related